diff options
author | calamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-23 09:02:09 +0000 |
---|---|---|
committer | calamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-23 09:02:09 +0000 |
commit | 2fb3888046f9206c1c91357f36502642897ea4d6 (patch) | |
tree | c2778a9c6d642e4aa30929878372bfeefeb186f6 | |
parent | 71f4a0c8193841a657f56c23b70dbe85d1aa9acb (diff) | |
download | chromium_src-2fb3888046f9206c1c91357f36502642897ea4d6.zip chromium_src-2fb3888046f9206c1c91357f36502642897ea4d6.tar.gz chromium_src-2fb3888046f9206c1c91357f36502642897ea4d6.tar.bz2 |
Make streamlined hosted apps browser toolbar only appear for bookmark apps.
This CL makes streamlined hosted apps only show the browser toolbar if the
app is a bookmark app. This CL also fixes an issue where the browser toolbar
was not showing on any app windows in streamlined hosted app mode.
BUG=318607
Review URL: https://codereview.chromium.org/240213008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265591 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/browser.cc | 41 | ||||
-rw-r--r-- | chrome/browser/ui/browser.h | 1 | ||||
-rw-r--r-- | chrome/browser/ui/browser_browsertest.cc | 50 |
3 files changed, 68 insertions, 24 deletions
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index c7d15ba..b201b1a 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc @@ -2248,30 +2248,23 @@ bool Browser::ShouldShowLocationBar() const { if (is_type_tabbed()) return true; - // Trusted app windows and system windows never show a location bar. - if (is_trusted_source()) - return false; - - // Other non-app browsers always show a location bar. - if (!is_app()) - return true; - - // Normally apps do not show a location bar. - if (app_name() == DevToolsWindow::kDevToolsApp || - !CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableStreamlinedHostedApps)) { - return false; - } - - // If kEnableStreamlinedHostedApps is true, show the locaiton bar for non - // legacy packaged apps. - ExtensionService* service = - extensions::ExtensionSystem::Get(profile_)->extension_service(); - const extensions::Extension* extension = - service ? service->GetInstalledExtension( - web_app::GetExtensionIdFromApplicationName(app_name())) - : NULL; - return (!extension || !extension->is_legacy_packaged_app()); + if (is_app() && CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableStreamlinedHostedApps)) { + // If kEnableStreamlinedHostedApps is true, show the location bar for + // bookmark apps. + ExtensionService* service = + extensions::ExtensionSystem::Get(profile_)->extension_service(); + const extensions::Extension* extension = + service ? service->GetInstalledExtension( + web_app::GetExtensionIdFromApplicationName(app_name())) + : NULL; + return (!extension || extension->from_bookmark()) && + app_name() != DevToolsWindow::kDevToolsApp; + } + + // All app windows and system windows are trusted and never show a location + // bar. + return !is_trusted_source(); } bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 66c079e..efc35f1 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -488,6 +488,7 @@ class Browser : public TabStripModelObserver, FRIEND_TEST_ALL_PREFIXES(BrowserTest, ConvertTabToAppShortcut); FRIEND_TEST_ALL_PREFIXES(BrowserTest, OpenAppWindowLikeNtp); FRIEND_TEST_ALL_PREFIXES(BrowserTest, AppIdSwitch); + FRIEND_TEST_ALL_PREFIXES(BrowserTest, ShouldShowLocationBar); FRIEND_TEST_ALL_PREFIXES(FullscreenControllerTest, TabEntersPresentationModeFromWindowed); FRIEND_TEST_ALL_PREFIXES(FullscreenExitBubbleControllerTest, diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index b333ac7..4df491f 100644 --- a/chrome/browser/ui/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -17,6 +17,7 @@ #include "chrome/browser/command_updater.h" #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/defaults.h" +#include "chrome/browser/devtools/devtools_window.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/tab_helper.h" @@ -1323,6 +1324,55 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, AppIdSwitch) { new_browser->app_name_.find(extension_app->id()), std::string::npos) << new_browser->app_name_; } + +// Open an app window and the dev tools window and ensure that the location +// bar settings are correct. +IN_PROC_BROWSER_TEST_F(BrowserTest, ShouldShowLocationBar) { + ASSERT_TRUE(test_server()->Start()); + + // Load an app. + host_resolver()->AddRule("www.example.com", "127.0.0.1"); + ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app/"))); + const Extension* extension_app = GetExtension(); + + // Launch it in a window, as AppLauncherHandler::HandleLaunchApp() would. + WebContents* app_window = + OpenApplication(AppLaunchParams(browser()->profile(), + extension_app, + extensions::LAUNCH_CONTAINER_WINDOW, + NEW_WINDOW)); + ASSERT_TRUE(app_window); + + DevToolsWindow::OpenDevToolsWindowForTest( + browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(), + false); + + // The launch should have created a new app browser and a dev tools browser. + ASSERT_EQ(3u, + chrome::GetBrowserCount(browser()->profile(), + browser()->host_desktop_type())); + + // Find the new browsers. + Browser* app_browser = NULL; + Browser* dev_tools_browser = NULL; + for (chrome::BrowserIterator it; !it.done(); it.Next()) { + if (*it == browser()) { + continue; + } else if ((*it)->app_name() == DevToolsWindow::kDevToolsApp) { + dev_tools_browser = *it; + } else { + app_browser = *it; + } + } + ASSERT_TRUE(dev_tools_browser); + ASSERT_TRUE(app_browser); + ASSERT_TRUE(app_browser != browser()); + + EXPECT_FALSE( + dev_tools_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); + EXPECT_FALSE( + app_browser->SupportsWindowFeature(Browser::FEATURE_LOCATIONBAR)); +} #endif // Tests that the CLD (Compact Language Detection) works properly. |