| Index: chrome/browser/apps/web_view_browsertest.cc
|
| diff --git a/chrome/browser/apps/web_view_browsertest.cc b/chrome/browser/apps/web_view_browsertest.cc
|
| index dde5e2c1c14e57bdecd0f34589bcf9dec985ec49..0a39ca9a563b771a1fe8ef0b06d8cc0ff3091a9c 100644
|
| --- a/chrome/browser/apps/web_view_browsertest.cc
|
| +++ b/chrome/browser/apps/web_view_browsertest.cc
|
| @@ -167,7 +167,9 @@ void ExecuteScriptWaitForTitle(content::WebContents* web_contents,
|
| // the test run successfully on trybots.
|
| class MockWebContentsDelegate : public content::WebContentsDelegate {
|
| public:
|
| - MockWebContentsDelegate() : requested_(false) {}
|
| + MockWebContentsDelegate()
|
| + : requested_(false),
|
| + checked_(false) {}
|
| virtual ~MockWebContentsDelegate() {}
|
|
|
| virtual void RequestMediaAccessPermission(
|
| @@ -175,20 +177,39 @@ class MockWebContentsDelegate : public content::WebContentsDelegate {
|
| const content::MediaStreamRequest& request,
|
| const content::MediaResponseCallback& callback) OVERRIDE {
|
| requested_ = true;
|
| - if (message_loop_runner_.get())
|
| - message_loop_runner_->Quit();
|
| + if (request_message_loop_runner_.get())
|
| + request_message_loop_runner_->Quit();
|
| }
|
|
|
| - void WaitForSetMediaPermission() {
|
| + virtual bool CheckMediaAccessPermission(
|
| + content::WebContents* web_contents,
|
| + const GURL& security_origin,
|
| + content::MediaStreamType type) OVERRIDE {
|
| + checked_ = true;
|
| + if (check_message_loop_runner_.get())
|
| + check_message_loop_runner_->Quit();
|
| + return true;
|
| + }
|
| +
|
| + void WaitForRequestMediaPermission() {
|
| if (requested_)
|
| return;
|
| - message_loop_runner_ = new content::MessageLoopRunner;
|
| - message_loop_runner_->Run();
|
| + request_message_loop_runner_ = new content::MessageLoopRunner;
|
| + request_message_loop_runner_->Run();
|
| + }
|
| +
|
| + void WaitForCheckMediaPermission() {
|
| + if (checked_)
|
| + return;
|
| + check_message_loop_runner_ = new content::MessageLoopRunner;
|
| + check_message_loop_runner_->Run();
|
| }
|
|
|
| private:
|
| bool requested_;
|
| - scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
|
| + bool checked_;
|
| + scoped_refptr<content::MessageLoopRunner> request_message_loop_runner_;
|
| + scoped_refptr<content::MessageLoopRunner> check_message_loop_runner_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(MockWebContentsDelegate);
|
| };
|
| @@ -1765,7 +1786,7 @@ void WebViewTest::MediaAccessAPIAllowTestHelper(const std::string& test_name) {
|
| test_name.c_str())));
|
| ASSERT_TRUE(done_listener.WaitUntilSatisfied());
|
|
|
| - mock->WaitForSetMediaPermission();
|
| + mock->WaitForRequestMediaPermission();
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(WebViewTest, ContextMenusAPI_Basic) {
|
| @@ -1837,6 +1858,26 @@ IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestAllowAsync) {
|
| MediaAccessAPIAllowTestHelper("testAllowAsync");
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(WebViewTest, MediaAccessAPIAllow_TestCheck) {
|
| + ASSERT_TRUE(StartEmbeddedTestServer()); // For serving guest pages.
|
| + LoadAndLaunchPlatformApp("web_view/media_access/check", "Launched");
|
| +
|
| + content::WebContents* embedder_web_contents = GetFirstAppWindowWebContents();
|
| + ASSERT_TRUE(embedder_web_contents);
|
| + scoped_ptr<MockWebContentsDelegate> mock(new MockWebContentsDelegate());
|
| + embedder_web_contents->SetDelegate(mock.get());
|
| +
|
| + ExtensionTestMessageListener done_listener("TEST_PASSED", false);
|
| + done_listener.set_failure_message("TEST_FAILED");
|
| + EXPECT_TRUE(
|
| + content::ExecuteScript(
|
| + embedder_web_contents,
|
| + base::StringPrintf("startCheckTest('')")));
|
| + ASSERT_TRUE(done_listener.WaitUntilSatisfied());
|
| +
|
| + mock->WaitForCheckMediaPermission();
|
| +}
|
| +
|
| // Checks that window.screenX/screenY/screenLeft/screenTop works correctly for
|
| // guests.
|
| IN_PROC_BROWSER_TEST_F(WebViewTest, ScreenCoordinates) {
|
|
|