diff options
author | Kristian Monsen <kristianm@google.com> | 2010-07-06 11:37:41 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2010-07-15 12:55:05 +0100 |
commit | ff80790be406da04e7afbd8aea7bb0e26f1f08f0 (patch) | |
tree | bdcd94ef63cabf0e13e193a531b089c20bc2b177 /WebCore/loader | |
parent | 31dbf1e39c75fa71a6175b95ce2172727630129b (diff) | |
download | external_webkit-ff80790be406da04e7afbd8aea7bb0e26f1f08f0.zip external_webkit-ff80790be406da04e7afbd8aea7bb0e26f1f08f0.tar.gz external_webkit-ff80790be406da04e7afbd8aea7bb0e26f1f08f0.tar.bz2 |
Fix for bug 2816268: Refactor ANDROID_USER_GESTURE code
Used the UserGestureIndicator class instead of the local ANDROID_USER_GESTURE code. I have made a simple test case for the problem at:
http://updates.monsen.it/source.html
This cannot be made into a layout test since the Android Dumprendertree does not support focus on windows other than the main one.
Lots of local changes removed, but not many actual changes. Most are in parameters sent to other functions.
As far as I can see they user gestures are only checked for in ChromeClientAndroid.cpp and WebCoreFrameBridge.cpp, and I
replaced ANDROID_USER_GESTURE with UserGestureIndicator::processingUserGesture().
The UserGestureIndicator class was added to webkit in this CL:
http://trac.webkit.org/changeset/57045
ResourceRequest.h is a cherry-pick of this CL from webkit.org
http://trac.webkit.org/changeset/62668
Change-Id: Ia254b2cee833459fcc2cacfb2751ef7a29a8f64a
Diffstat (limited to 'WebCore/loader')
-rw-r--r-- | WebCore/loader/EmptyClients.h | 4 | ||||
-rw-r--r-- | WebCore/loader/FrameLoader.cpp | 41 | ||||
-rw-r--r-- | WebCore/loader/FrameLoader.h | 7 | ||||
-rw-r--r-- | WebCore/loader/RedirectScheduler.cpp | 3 |
4 files changed, 0 insertions, 55 deletions
diff --git a/WebCore/loader/EmptyClients.h b/WebCore/loader/EmptyClients.h index 703ee0c..869de22 100644 --- a/WebCore/loader/EmptyClients.h +++ b/WebCore/loader/EmptyClients.h @@ -72,11 +72,7 @@ public: virtual void webAppCanBeInstalled() { } #endif -#ifdef ANDROID_USER_GESTURE - virtual void focus(bool userGesture) { } -#else virtual void focus() { } -#endif virtual void unfocus() { } virtual bool canTakeFocus(FocusDirection) { return false; } diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp index 540e0f7..bdf7298 100644 --- a/WebCore/loader/FrameLoader.cpp +++ b/WebCore/loader/FrameLoader.cpp @@ -281,11 +281,7 @@ Frame* FrameLoader::createWindow(FrameLoader* frameLoaderForFrameLookup, const F if (!request.resourceRequest().url().isEmpty()) frame->loader()->loadFrameRequest(request, false, false, 0, 0, SendReferrer); if (Page* page = frame->page()) -#ifdef ANDROID_USER_GESTURE - page->chrome()->focus(isProcessingUserGesture()); -#else page->chrome()->focus(); -#endif created = false; return frame; } @@ -350,9 +346,6 @@ void FrameLoader::changeLocation(const KURL& url, const String& referrer, bool l RefPtr<Frame> protect(m_frame); ResourceRequest request(url, referrer, refresh ? ReloadIgnoringCacheData : UseProtocolCachePolicy); -#ifdef ANDROID_USER_GESTURE - request.setUserGesture(userGesture); -#endif urlSelected(request, "_self", 0, lockHistory, lockBackForwardList, userGesture, SendReferrer, ReplaceDocumentIfJavaScriptURL); } @@ -1019,11 +1012,7 @@ void FrameLoader::loadURLIntoChildFrame(const KURL& url, const String& referer, childFrame->loader()->loadArchive(subframeArchive.release()); else #endif -#ifdef ANDROID_USER_GESTURE - childFrame->loader()->loadURL(workingURL, referer, String(), false, childLoadType, 0, 0, false); -#else childFrame->loader()->loadURL(workingURL, referer, String(), false, childLoadType, 0, 0); -#endif } #if ENABLE(ARCHIVE) // ANDROID extension: disabled to reduce code size @@ -1372,17 +1361,10 @@ void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHis else loadType = FrameLoadTypeStandard; -#ifdef ANDROID_USER_GESTURE - if (request.resourceRequest().httpMethod() == "POST") - loadPostRequest(request.resourceRequest(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), request.resourceRequest().getUserGesture()); - else - loadURL(request.resourceRequest().url(), referrer, request.frameName(), lockHistory, loadType, event, formState.get(), request.resourceRequest().getUserGesture()); -#else if (request.resourceRequest().httpMethod() == "POST") loadPostRequest(request.resourceRequest(), referrer, request.frameName(), lockHistory, loadType, event, formState.get()); else loadURL(request.resourceRequest().url(), referrer, request.frameName(), lockHistory, loadType, event, formState.get()); -#endif // FIXME: It's possible this targetFrame will not be the same frame that was targeted by the actual // load if frame names have changed. @@ -1390,29 +1372,17 @@ void FrameLoader::loadFrameRequest(const FrameLoadRequest& request, bool lockHis Frame* targetFrame = sourceFrame->loader()->findFrameForNavigation(request.frameName()); if (targetFrame && targetFrame != sourceFrame) { if (Page* page = targetFrame->page()) -#ifdef ANDROID_USER_GESTURE - page->chrome()->focus(request.resourceRequest().getUserGesture()); -#else page->chrome()->focus(); -#endif } } -#ifdef ANDROID_USER_GESTURE -void FrameLoader::loadURL(const KURL& newURL, const String& referrer, const String& frameName, bool lockHistory, FrameLoadType newLoadType, - PassRefPtr<Event> event, PassRefPtr<FormState> prpFormState, bool userGesture) -#else void FrameLoader::loadURL(const KURL& newURL, const String& referrer, const String& frameName, bool lockHistory, FrameLoadType newLoadType, PassRefPtr<Event> event, PassRefPtr<FormState> prpFormState) -#endif { RefPtr<FormState> formState = prpFormState; bool isFormSubmission = formState; ResourceRequest request(newURL); -#ifdef ANDROID_USER_GESTURE - request.setUserGesture(userGesture); -#endif if (!referrer.isEmpty()) { request.setHTTPReferrer(referrer); RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(referrer); @@ -1427,11 +1397,7 @@ void FrameLoader::loadURL(const KURL& newURL, const String& referrer, const Stri // The search for a target frame is done earlier in the case of form submission. Frame* targetFrame = isFormSubmission ? 0 : findFrameForNavigation(frameName); if (targetFrame && targetFrame != m_frame) { -#ifdef ANDROID_USER_GESTURE - targetFrame->loader()->loadURL(newURL, referrer, String(), lockHistory, newLoadType, event, formState.release(), userGesture); -#else targetFrame->loader()->loadURL(newURL, referrer, String(), lockHistory, newLoadType, event, formState.release()); -#endif return; } @@ -2807,11 +2773,7 @@ void FrameLoader::committedLoad(DocumentLoader* loader, const char* data, int le m_client->committedLoad(loader, data, length); } -#ifdef ANDROID_USER_GESTURE -void FrameLoader::loadPostRequest(const ResourceRequest& inRequest, const String& referrer, const String& frameName, bool lockHistory, FrameLoadType loadType, PassRefPtr<Event> event, PassRefPtr<FormState> prpFormState, bool userGesture) -#else void FrameLoader::loadPostRequest(const ResourceRequest& inRequest, const String& referrer, const String& frameName, bool lockHistory, FrameLoadType loadType, PassRefPtr<Event> event, PassRefPtr<FormState> prpFormState) -#endif { RefPtr<FormState> formState = prpFormState; @@ -2831,9 +2793,6 @@ void FrameLoader::loadPostRequest(const ResourceRequest& inRequest, const String String origin = inRequest.httpOrigin(); ResourceRequest workingResourceRequest(url); -#ifdef ANDROID_USER_GESTURE - workingResourceRequest.setUserGesture(userGesture); -#endif if (!referrer.isEmpty()) workingResourceRequest.setHTTPReferrer(referrer); diff --git a/WebCore/loader/FrameLoader.h b/WebCore/loader/FrameLoader.h index b361b51..e157850 100644 --- a/WebCore/loader/FrameLoader.h +++ b/WebCore/loader/FrameLoader.h @@ -404,17 +404,10 @@ private: void loadWithNavigationAction(const ResourceRequest&, const NavigationAction&, // Calls loadWithDocumentLoader bool lockHistory, FrameLoadType, PassRefPtr<FormState>); -#ifdef ANDROID_USER_GESTURE - void loadPostRequest(const ResourceRequest&, const String& referrer, // Called by loadFrameRequest, calls loadWithNavigationAction - const String& frameName, bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>, bool); - void loadURL(const KURL&, const String& referrer, const String& frameName, // Called by loadFrameRequest, calls loadWithNavigationAction or dispatches to navigation policy delegate - bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>, bool); -#else void loadPostRequest(const ResourceRequest&, const String& referrer, // Called by loadFrameRequest, calls loadWithNavigationAction const String& frameName, bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>); void loadURL(const KURL&, const String& referrer, const String& frameName, // Called by loadFrameRequest, calls loadWithNavigationAction or dispatches to navigation policy delegate bool lockHistory, FrameLoadType, PassRefPtr<Event>, PassRefPtr<FormState>); -#endif bool shouldReload(const KURL& currentURL, const KURL& destinationURL); diff --git a/WebCore/loader/RedirectScheduler.cpp b/WebCore/loader/RedirectScheduler.cpp index 4fda8fe..3cfe61a 100644 --- a/WebCore/loader/RedirectScheduler.cpp +++ b/WebCore/loader/RedirectScheduler.cpp @@ -191,9 +191,6 @@ public: if (!m_submission->state()->sourceFrame()->loader()->shouldAllowNavigation(frame)) return; FrameLoadRequest frameRequest; -#ifdef ANDROID_USER_GESTURE - frameRequest.resourceRequest().setUserGesture(m_submission->state()->sourceFrame()->loader()->isProcessingUserGesture()); -#endif m_submission->populateFrameLoadRequest(frameRequest); frame->loader()->loadFrameRequest(frameRequest, lockHistory(), lockBackForwardList(), m_submission->event(), m_submission->state(), SendReferrer); } |