Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Unified Diff: chrome/browser/ui/browser.cc

Issue 178863002: Implement settings in a widnow (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/browser.cc
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 0bb562ca1fa9394f5f1b2d02ecf10bdd29cf15ce..c28a092cf7ee56814e2a21aa05a6f79cb7295540 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -241,6 +241,8 @@ bool IsFastTabUnloadEnabled() {
switches::kEnableFastUnload);
}
+const char kChromeUIScheme[] = "chrome";
+
} // namespace
////////////////////////////////////////////////////////////////////////////////
@@ -2164,6 +2166,44 @@ void Browser::TabDetachedAtImpl(content::WebContents* contents,
}
}
+bool Browser::ShowLocationBar() const {
Ben Goodger (Google) 2014/03/03 18:55:16 Here's a question... can settings shown in a popup
stevenjb 2014/03/03 23:45:24 I am reluctant to use APP_TYPE_HOST for something
stevenjb 2014/03/06 23:51:56 OK, so I looked through the code and did some expe
+ if (!is_app()) {
+ // Hide the URL for singleton settings windows
+ if (!is_type_tabbed() &&
+ CommandLine::ForCurrentProcess()->HasSwitch(
+ ::switches::kEnableSettingsWindow)) {
+ WebContents* web_contents = tab_strip_model_->GetWebContentsAt(0);
+ if (web_contents) {
+ GURL url(web_contents->GetURL());
+ if (url.SchemeIs(kChromeUIScheme) &&
+ url.spec().find(chrome::kChromeUISettingsURL) == 0) {
+ return false;
+ }
+ }
+ }
+ // Otherwise always show the location bar for non app browsers.
+ return true;
+ }
+
+ // Normally apps do not show a location bar.
+ if (app_type() != APP_TYPE_HOST ||
+ app_name() == DevToolsWindow::kDevToolsApp ||
+ !CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableStreamlinedHostedApps))
+ return false;
+
+ // If kEnableStreamlinedHostedApps is true, hide the locaiton bar for non
+ // legacy packaged apps.
stevenjb 2014/03/06 23:51:56 Actually, this comment is wrong. We want to -show-
+ ExtensionService* service =
+ extensions::ExtensionSystem::Get(profile_)->extension_service();
+ if (!service)
+ return false; // Assume app is non-legacy.
calamity 2014/03/05 02:38:11 Non-legacy apps would get a location bar. I don't
stevenjb 2014/03/06 23:51:56 Restored the existing logic.
+
+ const extensions::Extension* extension = service->GetInstalledExtension(
+ web_app::GetExtensionIdFromApplicationName(app_name()));
+ return (!extension || !extension->is_legacy_packaged_app());
+}
+
bool Browser::SupportsWindowFeatureImpl(WindowFeature feature,
bool check_fullscreen) const {
bool hide_ui_for_fullscreen = check_fullscreen && ShouldHideUIForFullscreen();
@@ -2183,20 +2223,8 @@ bool Browser::SupportsWindowFeatureImpl(WindowFeature feature,
if (is_type_tabbed())
features |= FEATURE_TOOLBAR;
- ExtensionService* service =
- extensions::ExtensionSystem::Get(profile_)->extension_service();
- const extensions::Extension* extension =
- service ? service->GetInstalledExtension(
- web_app::GetExtensionIdFromApplicationName(app_name()))
- : NULL;
-
- if (!is_app() || (app_type() == APP_TYPE_HOST &&
- app_name() != DevToolsWindow::kDevToolsApp &&
- (!extension || !extension->is_legacy_packaged_app()) &&
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableStreamlinedHostedApps))) {
+ if (ShowLocationBar())
features |= FEATURE_LOCATIONBAR;
- }
}
return !!(features & feature);
}

Powered by Google App Engine
This is Rietveld 408576698