Skip to content
  • darin@apple.com's avatar
    2010-12-30 Darin Adler <darin@apple.com> · 7fa6b382
    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