Chromium Code Reviews| Index: chrome/browser/ui/browser_browsertest.cc |
| diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc |
| index 732dd24f48e3d999475e930640362e4b37c45233..4c2c8a26134a5e2b8b156c13210e4303ad1ea8a1 100644 |
| --- a/chrome/browser/ui/browser_browsertest.cc |
| +++ b/chrome/browser/ui/browser_browsertest.cc |
| @@ -3122,3 +3122,67 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, SecurityStyleChangedObserverGoBack) { |
| EXPECT_FALSE(observer.latest_explanations().displayed_insecure_content); |
| EXPECT_FALSE(observer.latest_explanations().ran_insecure_content); |
| } |
| + |
| +namespace { |
| +class JSBooleanResultGetter { |
| +public: |
|
sky
2015/08/31 15:57:27
run git cl format as your spacing is off.
Mikhail
2015/09/01 08:13:46
Done.
|
| + void OnJsExecutionDone(base::Closure callback, const base::Value* value) { |
| + js_result_.reset(value->DeepCopy()); |
| + callback.Run(); |
| + } |
| + bool GetResult() const { |
| + bool res; |
| + CHECK(js_result_); |
| + CHECK(js_result_->GetAsBoolean(&res)); |
| + return res; |
| + } |
| + |
| +private: |
| + scoped_ptr<base::Value> js_result_; |
| +}; |
|
sky
2015/08/31 15:57:27
DISALLOW...
Mikhail
2015/09/01 08:13:46
Done.
|
| + |
| +void CheckDisplayModeMQ( |
| + const base::string16& display_mode, |
| + content::WebContents* web_contents) { |
| + |
|
sky
2015/08/31 15:57:27
remove newline.
Mikhail
2015/09/01 08:13:46
Done.
|
| + base::string16 js_funtcion = |
|
sky
2015/08/31 15:57:27
function
Mikhail
2015/09/01 08:13:46
Done.
|
| + ASCIIToUTF16("(function() {return window.matchMedia('(display-mode: ") + |
| + display_mode + ASCIIToUTF16(")').matches;})();"); |
| + scoped_ptr<JSBooleanResultGetter> js_result_getter( |
|
sky
2015/08/31 15:57:27
Create on stack.
Mikhail
2015/09/01 08:13:46
Done.
|
| + new JSBooleanResultGetter); |
| + // Execute the JS to run the tests, and wait until it has finished. |
| + base::RunLoop run_loop; |
| + web_contents->GetMainFrame()->ExecuteJavaScriptForTests( |
| + js_funtcion, |
| + base::Bind(&JSBooleanResultGetter::OnJsExecutionDone, |
| + base::Unretained(js_result_getter.get()), run_loop.QuitClosure())); |
| + run_loop.Run(); |
| + EXPECT_TRUE(js_result_getter->GetResult()); |
| +} |
| +} // namespace |
| + |
| +IN_PROC_BROWSER_TEST_F(BrowserTest, ChangeDisplayMode) { |
| + CheckDisplayModeMQ( |
| + ASCIIToUTF16("browser"), |
| + browser()->tab_strip_model()->GetActiveWebContents()); |
| + |
| + Profile* profile = ProfileManager::GetActiveUserProfile(); |
| + ui_test_utils::BrowserAddedObserver browser_added_observer; |
| + Browser* app_browser = CreateBrowserForApp("blah", profile); |
| + browser_added_observer.WaitForSingleNewBrowser(); |
| + auto app_contents = app_browser->tab_strip_model()->GetActiveWebContents(); |
| + CheckDisplayModeMQ(ASCIIToUTF16("standalone"), app_contents); |
| + |
| + app_browser->window()->EnterFullscreen( |
| + GURL(), EXCLUSIVE_ACCESS_BUBBLE_TYPE_BROWSER_FULLSCREEN_EXIT_INSTRUCTION, |
| + false); |
| + |
| + // Sync navigation just to make sure IPC has passed (updated |
| + // display mode is delivered to RP). |
| + content::TestNavigationObserver observer(app_contents, 1); |
| + ui_test_utils::NavigateToURL(app_browser, GURL(url::kAboutBlankURL)); |
| + observer.Wait(); |
| + |
| + CheckDisplayModeMQ(ASCIIToUTF16("fullscreen"), app_contents); |
| +} |
| + |