summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspqchan <spqchan@chromium.org>2016-03-02 09:43:08 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-02 17:44:23 +0000
commita04af1f6fbb8be7cb87efddd6f715ae51ea9138f (patch)
treeefcbc2c510e505ecc207712fa61b9efc0c9a02ef
parent608439f1b101096f0c37d8a6577cd37d54a4514f (diff)
downloadchromium_src-a04af1f6fbb8be7cb87efddd6f715ae51ea9138f.zip
chromium_src-a04af1f6fbb8be7cb87efddd6f715ae51ea9138f.tar.gz
chromium_src-a04af1f6fbb8be7cb87efddd6f715ae51ea9138f.tar.bz2
Modified the behavior of "Hide Toolbar in Full Screen"
Changed the string to "Always Show Toolbar in Full Screen" and reversed the logic. Modified the behavior so that instead of changing just the current window, toggling the menu item will update all of the windows associated with active profile. BUG=588110 Review URL: https://codereview.chromium.org/1737413002 Cr-Commit-Position: refs/heads/master@{#378770}
-rw-r--r--chrome/app/generated_resources.grd2
-rw-r--r--chrome/browser/prefs/browser_prefs.cc14
-rw-r--r--chrome/browser/ui/browser_commands_mac.cc14
-rw-r--r--chrome/browser/ui/browser_ui_prefs.cc4
-rw-r--r--chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h6
-rw-r--r--chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.mm17
-rw-r--r--chrome/browser/ui/cocoa/browser_window_command_handler.mm2
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller.h14
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller.mm17
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm8
-rw-r--r--chrome/browser/ui/cocoa/browser_window_controller_private.mm2
-rw-r--r--chrome/browser/ui/exclusive_access/exclusive_access_context.cc2
-rw-r--r--chrome/browser/ui/exclusive_access/exclusive_access_context.h6
-rw-r--r--chrome/common/pref_names.cc6
-rw-r--r--chrome/common/pref_names.h1
15 files changed, 74 insertions, 41 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index cef7094..157d37f 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -11824,7 +11824,7 @@ Some features may be unavailable. Please check that the profile exists and you
Exit Presentation Mode
</message>
<message name="IDS_TOGGLE_FULLSCREEN_TOOLBAR_MAC" desc="The Mac menu checkbox item to show/hide the toolbar in full screen.">
- Hide Toolbar in Full Screen
+ Always Show Toolbar in Full Screen
</message>
<message name="IDS_TEXT_BIGGER_MAC" desc="The Mac menu item to zoom in on the page in the view menu.">
Zoom In
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 74cc366..d4fd972 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -627,6 +627,20 @@ void MigrateObsoleteProfilePrefs(Profile* profile) {
profile_prefs->ClearPref(kShownAutoLaunchInfobarDeprecated);
#endif
+#if defined(OS_MACOSX)
+ // Migrate the value of kHideFullscreenToolbar to kShowFullscreenToolbar if
+ // it was set by the user. See crbug.com/590827.
+ // Added 03/2016.
+ const PrefService::Preference* hide_pref =
+ profile_prefs->FindPreference(prefs::kHideFullscreenToolbar);
+ if (!hide_pref->IsDefaultValue()) {
+ bool hide_pref_value =
+ profile_prefs->GetBoolean(prefs::kHideFullscreenToolbar);
+ profile_prefs->SetBoolean(prefs::kShowFullscreenToolbar, !hide_pref_value);
+ profile_prefs->ClearPref(prefs::kHideFullscreenToolbar);
+ }
+#endif
+
// Added 12/1015.
profile_prefs->ClearPref(kURLsToRestoreOnStartupOld);
profile_prefs->ClearPref(kRestoreStartupURLsMigrationTime);
diff --git a/chrome/browser/ui/browser_commands_mac.cc b/chrome/browser/ui/browser_commands_mac.cc
index b6fb858..d286aa9 100644
--- a/chrome/browser/ui/browser_commands_mac.cc
+++ b/chrome/browser/ui/browser_commands_mac.cc
@@ -4,19 +4,19 @@
#include "chrome/browser/ui/browser_commands_mac.h"
-#include "base/command_line.h"
#include "chrome/browser/fullscreen.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
-#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
-#include "chrome/common/chrome_switches.h"
+#include "chrome/common/pref_names.h"
+#include "components/prefs/pref_service.h"
namespace chrome {
void ToggleFullscreenWithToolbarOrFallback(Browser* browser) {
DCHECK(browser);
- if (chrome::mac::SupportsSystemFullscreen())
+ if (mac::SupportsSystemFullscreen())
browser->exclusive_access_manager()
->fullscreen_controller()
->ToggleBrowserFullscreenWithToolbar();
@@ -26,7 +26,11 @@ void ToggleFullscreenWithToolbarOrFallback(Browser* browser) {
void ToggleFullscreenToolbar(Browser* browser) {
DCHECK(browser);
- browser->exclusive_access_manager()->context()->ToggleFullscreenToolbar();
+
+ // Toggle the value of the preference.
+ PrefService* prefs = browser->profile()->GetPrefs();
+ bool show_toolbar = prefs->GetBoolean(prefs::kShowFullscreenToolbar);
+ prefs->SetBoolean(prefs::kShowFullscreenToolbar, !show_toolbar);
}
} // namespace chrome
diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
index 94b8791..53a0dae 100644
--- a/chrome/browser/ui/browser_ui_prefs.cc
+++ b/chrome/browser/ui/browser_ui_prefs.cc
@@ -135,6 +135,10 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
// that use this preference.
registry->RegisterBooleanPref(prefs::kShowUpdatePromotionInfoBar, true);
registry->RegisterBooleanPref(
+ prefs::kShowFullscreenToolbar,
+ true,
+ user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+ registry->RegisterBooleanPref(
prefs::kHideFullscreenToolbar,
false,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
diff --git a/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h b/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h
index 1cd03e3..b3c2ab6 100644
--- a/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h
+++ b/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.h
@@ -15,6 +15,7 @@
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
#include "chrome/browser/ui/views/exclusive_access_bubble_views_context.h"
+#include "components/prefs/pref_change_registrar.h"
#include "ui/base/accelerators/accelerator.h"
class Browser;
@@ -55,7 +56,7 @@ class ExclusiveAccessController : public ExclusiveAccessContext,
bool IsFullscreen() const override;
bool SupportsFullscreenWithToolbar() const override;
void UpdateFullscreenWithToolbar(bool with_toolbar) override;
- void ToggleFullscreenToolbar() override;
+ void UpdateFullscreenToolbar() override;
bool IsFullscreenWithToolbar() const override;
void EnterFullscreen(const GURL& url,
ExclusiveAccessBubbleType type,
@@ -98,6 +99,9 @@ class ExclusiveAccessController : public ExclusiveAccessContext,
scoped_ptr<ExclusiveAccessBubbleViews> views_bubble_;
base::scoped_nsobject<ExclusiveAccessBubbleWindowController> cocoa_bubble_;
+ // Used to keep track of the kShowFullscreenToolbar preference.
+ PrefChangeRegistrar pref_registrar_;
+
DISALLOW_COPY_AND_ASSIGN(ExclusiveAccessController);
};
diff --git a/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.mm b/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.mm
index e2a8ed0..3873c46 100644
--- a/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.mm
+++ b/chrome/browser/ui/cocoa/browser/exclusive_access_controller_views.mm
@@ -22,7 +22,13 @@ ExclusiveAccessController::ExclusiveAccessController(
Browser* browser)
: controller_(controller),
browser_(browser),
- bubble_type_(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE) {}
+ bubble_type_(EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE) {
+ pref_registrar_.Init(GetProfile()->GetPrefs());
+ pref_registrar_.Add(
+ prefs::kShowFullscreenToolbar,
+ base::Bind(&ExclusiveAccessController::UpdateFullscreenToolbar,
+ base::Unretained(this)));
+}
ExclusiveAccessController::~ExclusiveAccessController() {}
@@ -73,11 +79,10 @@ void ExclusiveAccessController::UpdateFullscreenWithToolbar(bool with_toolbar) {
[controller_ updateFullscreenWithToolbar:with_toolbar];
}
-void ExclusiveAccessController::ToggleFullscreenToolbar() {
- PrefService* prefs = browser_->profile()->GetPrefs();
- bool hideToolbar = !prefs->GetBoolean(prefs::kHideFullscreenToolbar);
- [controller_ setFullscreenToolbarHidden:hideToolbar];
- prefs->SetBoolean(prefs::kHideFullscreenToolbar, hideToolbar);
+void ExclusiveAccessController::UpdateFullscreenToolbar() {
+ PrefService* prefs = GetProfile()->GetPrefs();
+ bool showToolbar = prefs->GetBoolean(prefs::kShowFullscreenToolbar);
+ [controller_ setFullscreenToolbarVisible:showToolbar];
}
bool ExclusiveAccessController::IsFullscreenWithToolbar() const {
diff --git a/chrome/browser/ui/cocoa/browser_window_command_handler.mm b/chrome/browser/ui/cocoa/browser_window_command_handler.mm
index 9b54b82..27b634c 100644
--- a/chrome/browser/ui/cocoa/browser_window_command_handler.mm
+++ b/chrome/browser/ui/cocoa/browser_window_command_handler.mm
@@ -55,7 +55,7 @@ void UpdateToggleStateWithTag(NSInteger tag, id item, NSWindow* window) {
if (tag == IDC_TOGGLE_FULLSCREEN_TOOLBAR) {
PrefService* prefs = browser->profile()->GetPrefs();
- SetToggleState(prefs->GetBoolean(prefs::kHideFullscreenToolbar), item);
+ SetToggleState(prefs->GetBoolean(prefs::kShowFullscreenToolbar), item);
return;
}
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.h b/chrome/browser/ui/cocoa/browser_window_controller.h
index 13bf692..e305c5e 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.h
+++ b/chrome/browser/ui/cocoa/browser_window_controller.h
@@ -161,8 +161,8 @@ class Command;
// return nil.
BOOL isUsingCustomAnimation_;
- // True if the toolbar needs to be hidden in fullscreen.
- BOOL shouldHideFullscreenToolbar_;
+ // True if the toolbar needs to be shown in fullscreen.
+ BOOL shouldShowFullscreenToolbar_;
// The size of the original (non-fullscreen) window. This is saved just
// before entering fullscreen mode and is only valid when |-isFullscreen|
@@ -534,10 +534,8 @@ class Command;
// |bubbleType|.
- (void)updateFullscreenExitBubble;
-// Toggles and updates the toolbar's visibility in fullscreen mode. This
-// function toggles between the sliding styles: OMNIBOX_TABS_PRESENT and
-// OMNIBOX_TABS_HIDDEN.
-- (void)setFullscreenToolbarHidden:(BOOL)isHidden;
+// Set the toolbar's visibility in fullscreen mode.
+- (void)setFullscreenToolbarVisible:(BOOL)visible;
// Returns YES if the browser window is in or entering any fullscreen mode.
- (BOOL)isInAnyFullscreenMode;
@@ -563,8 +561,8 @@ class Command;
// Mode.
- (BOOL)inPresentationMode;
-// Whether if the toolbar should be hidden in fullscreen.
-- (BOOL)shouldHideFullscreenToolbar;
+// Whether the toolbar should be shown in fullscreen.
+- (BOOL)shouldShowFullscreenToolbar;
// Resizes the fullscreen window to fit the screen it's currently on. Called by
// the PresentationModeController when there is a change in monitor placement or
diff --git a/chrome/browser/ui/cocoa/browser_window_controller.mm b/chrome/browser/ui/cocoa/browser_window_controller.mm
index 5056d79..7fd16e9 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller.mm
@@ -438,9 +438,8 @@ void SetUpBrowserWindowCommandHandler(NSWindow* window) {
windowShim_.get()));
PrefService* prefs = browser_->profile()->GetPrefs();
- shouldHideFullscreenToolbar_ =
- prefs->GetBoolean(prefs::kHideFullscreenToolbar);
-
+ shouldShowFullscreenToolbar_ =
+ prefs->GetBoolean(prefs::kShowFullscreenToolbar);
blockLayoutSubviews_ = NO;
// We are done initializing now.
@@ -1944,14 +1943,14 @@ willAnimateFromState:(BookmarkBar::State)oldState
return NO;
}
-- (void)setFullscreenToolbarHidden:(BOOL)shouldHide {
- if (shouldHideFullscreenToolbar_ == shouldHide)
+- (void)setFullscreenToolbarVisible:(BOOL)visible {
+ if (shouldShowFullscreenToolbar_ == visible)
return;
[presentationModeController_ setToolbarFraction:0.0];
- shouldHideFullscreenToolbar_ = shouldHide;
+ shouldShowFullscreenToolbar_ = visible;
if ([self isInAppKitFullscreen])
- [self updateFullscreenWithToolbar:!shouldHideFullscreenToolbar_];
+ [self updateFullscreenWithToolbar:shouldShowFullscreenToolbar_];
}
- (BOOL)isInAnyFullscreenMode {
@@ -2014,8 +2013,8 @@ willAnimateFromState:(BookmarkBar::State)oldState
fullscreen_mac::OMNIBOX_TABS_HIDDEN;
}
-- (BOOL)shouldHideFullscreenToolbar {
- return shouldHideFullscreenToolbar_;
+- (BOOL)shouldShowFullscreenToolbar {
+ return shouldShowFullscreenToolbar_;
}
- (void)resizeFullscreenWindow {
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
index 7865cef..c92f2dc 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller_browsertest.mm
@@ -697,9 +697,9 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
if (!chrome::mac::SupportsSystemFullscreen())
return;
- // Tests that the preference is set to false by default.
+ // Tests that the preference is set to true by default.
PrefService* prefs = browser()->profile()->GetPrefs();
- EXPECT_FALSE(prefs->GetBoolean(prefs::kHideFullscreenToolbar));
+ EXPECT_TRUE(prefs->GetBoolean(prefs::kShowFullscreenToolbar));
// Toggle fullscreen and check if the toolbar is shown.
ToggleFullscreenAndWaitForNotification();
@@ -709,7 +709,7 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
// is hidden and the preference is correctly updated.
[[controller() presentationModeController] setToolbarFraction:0.0];
chrome::ExecuteCommand(browser(), IDC_TOGGLE_FULLSCREEN_TOOLBAR);
- EXPECT_TRUE(prefs->GetBoolean(prefs::kHideFullscreenToolbar));
+ EXPECT_FALSE(prefs->GetBoolean(prefs::kShowFullscreenToolbar));
VerifyFullscreenToolbarVisibility(fullscreen_mac::OMNIBOX_TABS_HIDDEN);
// Toggle out and back into fullscreen and verify that the toolbar is still
@@ -719,5 +719,5 @@ IN_PROC_BROWSER_TEST_F(BrowserWindowControllerTest,
VerifyFullscreenToolbarVisibility(fullscreen_mac::OMNIBOX_TABS_HIDDEN);
chrome::ExecuteCommand(browser(), IDC_TOGGLE_FULLSCREEN_TOOLBAR);
- EXPECT_FALSE(prefs->GetBoolean(prefs::kHideFullscreenToolbar));
+ EXPECT_TRUE(prefs->GetBoolean(prefs::kShowFullscreenToolbar));
}
diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
index b515194..44da54d 100644
--- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm
+++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
@@ -834,7 +834,7 @@ willPositionSheet:(NSWindow*)sheet
fullscreen_mac::SlidingStyle style;
if ([self isFullscreenForTabContent]) {
style = fullscreen_mac::OMNIBOX_TABS_NONE;
- } else if (enteringPresentationMode_ || [self shouldHideFullscreenToolbar]) {
+ } else if (enteringPresentationMode_ || ![self shouldShowFullscreenToolbar]) {
style = fullscreen_mac::OMNIBOX_TABS_HIDDEN;
} else {
style = fullscreen_mac::OMNIBOX_TABS_PRESENT;
diff --git a/chrome/browser/ui/exclusive_access/exclusive_access_context.cc b/chrome/browser/ui/exclusive_access/exclusive_access_context.cc
index ee2e675..ea11e83 100644
--- a/chrome/browser/ui/exclusive_access/exclusive_access_context.cc
+++ b/chrome/browser/ui/exclusive_access/exclusive_access_context.cc
@@ -18,7 +18,7 @@ void ExclusiveAccessContext::UpdateFullscreenWithToolbar(bool with_toolbar) {
NOTIMPLEMENTED();
}
-void ExclusiveAccessContext::ToggleFullscreenToolbar() {
+void ExclusiveAccessContext::UpdateFullscreenToolbar() {
NOTIMPLEMENTED();
}
diff --git a/chrome/browser/ui/exclusive_access/exclusive_access_context.h b/chrome/browser/ui/exclusive_access/exclusive_access_context.h
index 6aedf486..71838ad 100644
--- a/chrome/browser/ui/exclusive_access/exclusive_access_context.h
+++ b/chrome/browser/ui/exclusive_access/exclusive_access_context.h
@@ -37,9 +37,9 @@ class ExclusiveAccessContext {
// Currently only supported on Mac.
virtual void UpdateFullscreenWithToolbar(bool with_toolbar);
- // Toggles the toolbar state to be hidden or shown in fullscreen. Updates
- // the preference accordingly. Only supported on Mac.
- virtual void ToggleFullscreenToolbar();
+ // Updates the toolbar state to be hidden or shown in fullscreen according to
+ // the preference's state. Only supported on Mac.
+ virtual void UpdateFullscreenToolbar();
// Returns true if the window is fullscreen with additional UI elements. See
// EnterFullscreen |with_toolbar|.
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 83e3803..32c892f 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -385,8 +385,12 @@ const char kContextualSearchEnabled[] = "search.contextual_search_enabled";
// window when the user is attempting to quit. Mac only.
const char kConfirmToQuitEnabled[] = "browser.confirm_to_quit";
-// Boolean that indicates whether the browser should hide the toolbar when it's
+// Boolean that indicates whether the browser should show the toolbar when it's
// in fullscreen. Mac only.
+const char kShowFullscreenToolbar[] = "browser.show_fullscreen_toolbar";
+
+// TODO(spqchan): Remove this, see crbug.com/590827.
+// This is being migrated to kShowFullscreenToolbar.
const char kHideFullscreenToolbar[] = "browser.hide_fullscreen_toolbar";
#endif
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 15417d7..21b75d5 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -156,6 +156,7 @@ extern const char kContextualSearchEnabled[];
#if defined(OS_MACOSX)
extern const char kConfirmToQuitEnabled[];
extern const char kHideFullscreenToolbar[];
+extern const char kShowFullscreenToolbar[];
#endif
extern const char kPromptForDownload[];
extern const char kAlternateErrorPagesEnabled[];