Index: chrome/browser/apps/guest_view/web_view_browsertest.cc |
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc |
index a7ef8be795ec7260c255e11b463a2f9916d3ed6a..2d23f3dc25113ee93b007af994a83ee59344a7c8 100644 |
--- a/chrome/browser/apps/guest_view/web_view_browsertest.cc |
+++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc |
@@ -5,6 +5,7 @@ |
#include "base/path_service.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "chrome/app/chrome_command_ids.h" |
#include "chrome/browser/apps/app_browsertest_util.h" |
#include "chrome/browser/chrome_content_browser_client.h" |
#include "chrome/browser/prerender/prerender_link_manager.h" |
@@ -179,7 +180,8 @@ class MockWebContentsDelegate : public content::WebContentsDelegate { |
public: |
MockWebContentsDelegate() |
: requested_(false), |
- checked_(false) {} |
+ checked_(false), |
+ open_url_from_tab_(false) {} |
~MockWebContentsDelegate() override {} |
void RequestMediaAccessPermission( |
@@ -200,6 +202,15 @@ class MockWebContentsDelegate : public content::WebContentsDelegate { |
return true; |
} |
+ content::WebContents* OpenURLFromTab( |
+ content::WebContents* source, |
+ const content::OpenURLParams& params) override { |
+ open_url_from_tab_ = true; |
+ if (open_url_message_loop_runner_.get()) |
+ open_url_message_loop_runner_->Quit(); |
+ return NULL; |
+ } |
+ |
void WaitForRequestMediaPermission() { |
if (requested_) |
return; |
@@ -214,11 +225,20 @@ class MockWebContentsDelegate : public content::WebContentsDelegate { |
check_message_loop_runner_->Run(); |
} |
+ void WaitForOpenURLFromTab() { |
+ if (open_url_from_tab_) |
+ return; |
+ open_url_message_loop_runner_ = new content::MessageLoopRunner; |
+ open_url_message_loop_runner_->Run(); |
+ } |
+ |
private: |
bool requested_; |
bool checked_; |
+ bool open_url_from_tab_; |
scoped_refptr<content::MessageLoopRunner> request_message_loop_runner_; |
scoped_refptr<content::MessageLoopRunner> check_message_loop_runner_; |
+ scoped_refptr<content::MessageLoopRunner> open_url_message_loop_runner_; |
DISALLOW_COPY_AND_ASSIGN(MockWebContentsDelegate); |
}; |
@@ -1831,6 +1851,24 @@ void WebViewTest::MediaAccessAPIAllowTestHelper(const std::string& test_name) { |
mock->WaitForRequestMediaPermission(); |
} |
+IN_PROC_BROWSER_TEST_F(WebViewTest, ContextMenuLanguageSettings) { |
+ LoadAppWithGuest("web_view/context_menus/basic"); |
+ |
+ content::WebContents* guest_web_contents = GetGuestWebContents(); |
+ content::WebContents* embedder = GetEmbedderWebContents(); |
+ ASSERT_TRUE(embedder); |
+ scoped_ptr<MockWebContentsDelegate> mock(new MockWebContentsDelegate()); |
+ embedder->SetDelegate(mock.get()); |
+ |
+ // Create and build our test context menu. |
+ GURL page_url("http://www.google.com"); |
+ scoped_ptr<TestRenderViewContextMenu> menu(TestRenderViewContextMenu::Create( |
+ guest_web_contents, page_url, GURL(), GURL())); |
+ menu->ExecuteCommand(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS, 0); |
+ |
+ mock->WaitForOpenURLFromTab(); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(WebViewTest, ContextMenusAPI_Basic) { |
LoadAppWithGuest("web_view/context_menus/basic"); |