summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcalamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-23 09:02:09 +0000
committercalamity@chromium.org <calamity@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-23 09:02:09 +0000
commit2fb3888046f9206c1c91357f36502642897ea4d6 (patch)
treec2778a9c6d642e4aa30929878372bfeefeb186f6
parent71f4a0c8193841a657f56c23b70dbe85d1aa9acb (diff)
downloadchromium_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.cc41
-rw-r--r--chrome/browser/ui/browser.h1
-rw-r--r--chrome/browser/ui/browser_browsertest.cc50
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.