-
darin@apple.com authored
Reviewed by Adam Barth. Move security logic out of the JavaScript binding for location into the DOM class https://bugs.webkit.org/show_bug.cgi?id=51714 * WebCore.xcodeproj/project.pbxproj: Removed JSBindingState.cpp, JSBindingState.h, and JSBinding.h. Later, we'll remove them from other project files and delete the source files. * bindings/js/JSBinding.h: Emptied out, marked for later deletion. * bindings/js/JSDOMBinding.cpp: Removed unused overload of the jsOwnedStringOrNull function, unused shouldAllowNavigation function, unused allowSettingSrcToJavascriptURL function, unused toLexicalFrame function, unused completeURL function, unused getCachedDOMStructure and cacheDOMStructure overloads, and unused getCachedDOMConstructor and cacheDOMConstruction functions. (WebCore::activeDOMWindow): Added. (WebCore::firstDOMWindow): Added. (WebCore::toDynamicFrame): Changed to use firstDOMWindow instead of calling through JSBindingState, since the latter is an unneeded abstraction. (WebCore::processingUserGesture): Changed to call ScriptController's function rather than calling through JSBindingState, which is an unneeded abstraction * bindings/js/JSDOMBinding.h: Removed the functions mentioned above. Added activeDOMWindow and firstDOMWindow. Also added a FIXME for the extremely poorly named allowsAccessFromFrame functions, which answer the question of whether script is allowed access *to* a frame. * bindings/js/JSDOMWindowCustom.cpp: Removed many unneeded includes. (WebCore::JSDOMWindow::setLocation): Streamlined by using the new activeDOMWindow and firstDOMWindow functions. (WebCore::JSDOMWindow::open): Ditto. (WebCore::JSDOMWindow::showModalDialog): Ditto. (WebCore::JSDOMWindow::postMessage): Ditto. * bindings/js/JSLocationCustom.cpp: (WebCore::JSLocation::setHref): Changed to pass the active and first windows through to the Location::setHref function, with it doing the rest of the work. This moves work out of the DOM binding that belongs in the DOM itself. Eventually such functions could even be automatically generated by the bindings script. (WebCore::JSLocation::setProtocol): Ditto. (WebCore::JSLocation::setHost): Ditto. (WebCore::JSLocation::setHostname): Ditto. (WebCore::JSLocation::setPort): Ditto. (WebCore::JSLocation::setPathname): Ditto. (WebCore::JSLocation::setSearch): Ditto. (WebCore::JSLocation::setHash): Ditto. (WebCore::JSLocation::replace): Ditto. (WebCore::JSLocation::reload): Ditto. (WebCore::JSLocation::assign): Ditto. * bindings/js/specialization/JSBindingState.cpp: Emptied out, marked for later deletion. * bindings/js/specialization/JSBindingState.h: Emptied out, marked for later deletion. * page/DOMWindow.cpp: (WebCore::DOMWindow::setLocation): Added a SetLocationLocking argument that allows us to use this function for Location::replace, which is the same as setLocation except that it locks both history and the back/forward list. * page/DOMWindow.h: Ditto. * page/Location.cpp: (WebCore::Location::setHref): Added. Uses DOMWindow::setLocation so that the security logic there does not have to be repeated or even refactored. (WebCore::Location::setProtocol): Ditto. (WebCore::Location::setHost): Ditto. (WebCore::Location::setHostname): Ditto. (WebCore::Location::setPort): Ditto. (WebCore::Location::setPathname): Ditto. (WebCore::Location::setSearch): Ditto. (WebCore::Location::setHash): Ditto. (WebCore::Location::assign): Ditto. (WebCore::Location::replace): Ditto. (WebCore::Location::reload): Added. Security logic was refactored from the code in JSLocationCustom.cpp. Added a FIXME about the fact that this security logic seems possibly unneeded. * page/Location.h: Fixed indentation on the whole file. Added the new functions above. (WebCore::Location::create): (WebCore::Location::frame): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74800 268f45cc-cd09-0410-ab3c-d52691b4dbfc
7fa6b382