diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-22 22:27:45 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-22 22:27:45 +0000 |
commit | 37d9dccef3f855d2bbe843a5d519c11ed33c41d5 (patch) | |
tree | 5562604adc21f9fb1b3d144ed697828ca8385af6 | |
parent | 4b44ed4d2d231ca462794dbf07886a02943d6463 (diff) | |
download | chromium_src-37d9dccef3f855d2bbe843a5d519c11ed33c41d5.zip chromium_src-37d9dccef3f855d2bbe843a5d519c11ed33c41d5.tar.gz chromium_src-37d9dccef3f855d2bbe843a5d519c11ed33c41d5.tar.bz2 |
[content shell] always focus the frame that was navigated
Otherwise, when the focused frame is destroyed, we end up with no
frame focused at all.
This approach is a bit crude (doesn't do anything if the page
itself initiated the navigation, changes the focus also if we're
staying on the page), but it's good enough for layout tests
BUG=111316
R=marja@chromium.org
TEST=e.g. running fast/inline/25277-2.html after fast/frames/frame-dead-region.html doesn't fail
Review URL: https://codereview.chromium.org/12893008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@189927 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/shell/webkit_test_runner.cc | 20 | ||||
-rw-r--r-- | content/shell/webkit_test_runner.h | 7 |
2 files changed, 26 insertions, 1 deletions
diff --git a/content/shell/webkit_test_runner.cc b/content/shell/webkit_test_runner.cc index 1b053f0..c7db9c1 100644 --- a/content/shell/webkit_test_runner.cc +++ b/content/shell/webkit_test_runner.cc @@ -166,7 +166,8 @@ WebKitTestRunner::WebKitTestRunner(RenderView* render_view) RenderViewObserverTracker<WebKitTestRunner>(render_view), proxy_(NULL), focused_view_(NULL), - is_main_window_(false) { + is_main_window_(false), + focus_on_next_commit_(false) { } WebKitTestRunner::~WebKitTestRunner() { @@ -508,6 +509,23 @@ bool WebKitTestRunner::OnMessageReceived(const IPC::Message& message) { return handled; } +void WebKitTestRunner::Navigate(const GURL& url) { + focus_on_next_commit_ = true; +} + +void WebKitTestRunner::DidCommitProvisionalLoad(WebFrame* frame, + bool is_new_navigation) { + if (!focus_on_next_commit_) + return; + focus_on_next_commit_ = false; + render_view()->GetWebView()->setFocusedFrame(frame); +} + +void WebKitTestRunner::DidFailProvisionalLoad(WebFrame* frame, + const WebURLError& error) { + focus_on_next_commit_ = false; +} + // Public methods - ----------------------------------------------------------- void WebKitTestRunner::Reset() { diff --git a/content/shell/webkit_test_runner.h b/content/shell/webkit_test_runner.h index 060fe36..039cc9c 100644 --- a/content/shell/webkit_test_runner.h +++ b/content/shell/webkit_test_runner.h @@ -39,6 +39,11 @@ class WebKitTestRunner : public RenderViewObserver, // RenderViewObserver implementation. virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; virtual void DidClearWindowObject(WebKit::WebFrame* frame) OVERRIDE; + virtual void Navigate(const GURL& url) OVERRIDE; + virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, + bool is_new_navigation) OVERRIDE; + virtual void DidFailProvisionalLoad( + WebKit::WebFrame* frame, const WebKit::WebURLError& error) OVERRIDE; // WebTestDelegate implementation. virtual void clearEditCommand(); @@ -122,6 +127,8 @@ class WebKitTestRunner : public RenderViewObserver, bool is_main_window_; + bool focus_on_next_commit_; + DISALLOW_COPY_AND_ASSIGN(WebKitTestRunner); }; |