diff options
author | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-10 16:46:31 +0000 |
---|---|---|
committer | acolwell@chromium.org <acolwell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-10 16:46:31 +0000 |
commit | d830c09a119ef8fdb996c54cf7dc27696a12c637 (patch) | |
tree | d4abc30652914395b10a77ab494b6a00957b7dbc | |
parent | 5c4ac80fa18fddb045a69c6e02641b9f623e138a (diff) | |
download | chromium_src-d830c09a119ef8fdb996c54cf7dc27696a12c637.zip chromium_src-d830c09a119ef8fdb996c54cf7dc27696a12c637.tar.gz chromium_src-d830c09a119ef8fdb996c54cf7dc27696a12c637.tar.bz2 |
Revert 176087
Appears to break ChromeOS browser_tests.
> Re-introduce the partial magnifier
>
> Major Changes:
> - Adding a selectbox at the right of screen magnifier setting on the setting page.
> - Adding 'screen_magnifier_type2' pref.
> - Separating the enable/disable state of magnifier from MagnifierType. MagnifierType does no longer indicate the current enable/disable status.
> - Add IsMagnifierEnabled() to shell delegate.
>
> BUG=166832
> TEST=confirm that magnifier can be enabled/disabled via the tray and the settings page. browser_test passes.
>
> R=zork@chromium.org, derat@chromium.org, nkostylev@chromium.org
> TBR=jhawkins@chromium.org
> # TBRing for small changed in C/B/ui/webui/options/ and C/B/resources/options/
>
> Review URL: https://chromiumcodereview.appspot.com/11642014
TBR=yoshiki@chromium.org
Review URL: https://codereview.chromium.org/11821053
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176102 0039d316-1c4b-4281-b951-d872f2087c98
23 files changed, 257 insertions, 536 deletions
diff --git a/ash/magnifier/magnifier_constants.h b/ash/magnifier/magnifier_constants.h index aa7cac7..4ca4c89 100644 --- a/ash/magnifier/magnifier_constants.h +++ b/ash/magnifier/magnifier_constants.h @@ -7,16 +7,12 @@ namespace ash { -// Note: Do not change these values; UMA and prefs depend on them. enum MagnifierType { - MAGNIFIER_FULL = 1, - MAGNIFIER_PARTIAL = 2, + MAGNIFIER_OFF, + MAGNIFIER_FULL, + MAGNIFIER_PARTIAL, }; -const int kMaxMagnifierType = 2; - -const MagnifierType kDefaultMagnifierType = MAGNIFIER_FULL; - } // namespace ash #endif // ASH_MAGNIFIER_MAGNIFIER_CONSTANTS_H_ diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc index 681dfb5..fde2bd1 100644 --- a/ash/shell/shell_delegate_impl.cc +++ b/ash/shell/shell_delegate_impl.cc @@ -25,8 +25,7 @@ ShellDelegateImpl::ShellDelegateImpl() locked_(false), spoken_feedback_enabled_(false), high_contrast_enabled_(false), - screen_magnifier_enabled_(false), - screen_magnifier_type_(kDefaultMagnifierType) { + screen_magnifier_type_(MAGNIFIER_OFF) { } ShellDelegateImpl::~ShellDelegateImpl() { @@ -135,18 +134,10 @@ bool ShellDelegateImpl::IsHighContrastEnabled() const { return high_contrast_enabled_; } -void ShellDelegateImpl::SetMagnifierEnabled(bool enabled) { - screen_magnifier_enabled_ = enabled; -} - -void ShellDelegateImpl::SetMagnifierType(MagnifierType type) { +void ShellDelegateImpl::SetMagnifier(MagnifierType type) { screen_magnifier_type_ = type; } -bool ShellDelegateImpl::IsMagnifierEnabled() const { - return screen_magnifier_enabled_; -} - MagnifierType ShellDelegateImpl::GetMagnifierType() const { return screen_magnifier_type_; } diff --git a/ash/shell/shell_delegate_impl.h b/ash/shell/shell_delegate_impl.h index e94d08a..3a987e2 100644 --- a/ash/shell/shell_delegate_impl.h +++ b/ash/shell/shell_delegate_impl.h @@ -46,9 +46,7 @@ class ShellDelegateImpl : public ash::ShellDelegate { virtual bool IsSpokenFeedbackEnabled() const OVERRIDE; virtual void ToggleHighContrast() OVERRIDE; virtual bool IsHighContrastEnabled() const OVERRIDE; - virtual void SetMagnifierEnabled(bool enabled) OVERRIDE; - virtual void SetMagnifierType(MagnifierType type) OVERRIDE; - virtual bool IsMagnifierEnabled() const OVERRIDE; + virtual void SetMagnifier(MagnifierType type) OVERRIDE; virtual MagnifierType GetMagnifierType() const OVERRIDE; virtual bool ShouldAlwaysShowAccessibilityMenu() const OVERRIDE; virtual app_list::AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; @@ -81,7 +79,6 @@ class ShellDelegateImpl : public ash::ShellDelegate { bool locked_; bool spoken_feedback_enabled_; bool high_contrast_enabled_; - bool screen_magnifier_enabled_; MagnifierType screen_magnifier_type_; DISALLOW_COPY_AND_ASSIGN(ShellDelegateImpl); diff --git a/ash/shell_delegate.h b/ash/shell_delegate.h index 6a9dd08..bdd3958 100644 --- a/ash/shell_delegate.h +++ b/ash/shell_delegate.h @@ -149,14 +149,8 @@ class ASH_EXPORT ShellDelegate { // Returns true if high contrast mode is enabled. virtual bool IsHighContrastEnabled() const = 0; - // Invoked to enable the screen magnifier. - virtual void SetMagnifierEnabled(bool enabled) = 0; - - // Invoked to change the type of the screen magnifier. - virtual void SetMagnifierType(MagnifierType type) = 0; - - // Returns if the screen magnifier is enabled or not. - virtual bool IsMagnifierEnabled() const = 0; + // Invoked to change the mode of the screen magnifier. + virtual void SetMagnifier(MagnifierType type) = 0; // Returns the current screen magnifier mode. virtual MagnifierType GetMagnifierType() const = 0; diff --git a/ash/system/tray_accessibility.cc b/ash/system/tray_accessibility.cc index b64671a..9b1d261 100644 --- a/ash/system/tray_accessibility.cc +++ b/ash/system/tray_accessibility.cc @@ -44,7 +44,7 @@ uint32 GetAccessibilityState() { state |= A11Y_SPOKEN_FEEDBACK; if (shell_delegate->IsHighContrastEnabled()) state |= A11Y_HIGH_CONTRAST; - if (shell_delegate->IsMagnifierEnabled()) + if (shell_delegate->GetMagnifierType() != ash::MAGNIFIER_OFF) state |= A11Y_SCREEN_MAGNIFIER; return state; } @@ -138,7 +138,8 @@ void AccessibilityDetailedView::AppendAccessibilityList() { IDS_ASH_STATUS_TRAY_ACCESSIBILITY_HIGH_CONTRAST_MODE), high_contrast_enabled_ ? gfx::Font::BOLD : gfx::Font::NORMAL, high_contrast_enabled_); - screen_magnifier_enabled_ = shell_delegate->IsMagnifierEnabled(); + screen_magnifier_enabled_ = + shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; screen_magnifier_view_ = AddScrollListItem( bundle.GetLocalizedString( IDS_ASH_STATUS_TRAY_ACCESSIBILITY_SCREEN_MAGNIFIER), @@ -197,7 +198,10 @@ void AccessibilityDetailedView::ClickedOn(views::View* sender) { } else if (sender == high_contrast_view_) { shell_delegate->ToggleHighContrast(); } else if (sender == screen_magnifier_view_) { - shell_delegate->SetMagnifierEnabled(!shell_delegate->IsMagnifierEnabled()); + bool screen_magnifier_enabled = + shell_delegate->GetMagnifierType() == ash::MAGNIFIER_FULL; + shell_delegate->SetMagnifier( + screen_magnifier_enabled ? ash::MAGNIFIER_OFF : ash::MAGNIFIER_FULL); } } diff --git a/ash/test/test_shell_delegate.cc b/ash/test/test_shell_delegate.cc index c2fdc60..f782c86 100644 --- a/ash/test/test_shell_delegate.cc +++ b/ash/test/test_shell_delegate.cc @@ -24,8 +24,7 @@ TestShellDelegate::TestShellDelegate() session_started_(true), spoken_feedback_enabled_(false), high_contrast_enabled_(false), - screen_magnifier_enabled_(false), - screen_magnifier_type_(kDefaultMagnifierType), + screen_magnifier_type_(MAGNIFIER_OFF), user_logged_in_(true), can_lock_screen_(true), num_exit_requests_(0) { @@ -125,18 +124,10 @@ bool TestShellDelegate::IsHighContrastEnabled() const { return high_contrast_enabled_; } -void TestShellDelegate::SetMagnifierEnabled(bool enabled) { - screen_magnifier_enabled_ = enabled; -} - -void TestShellDelegate::SetMagnifierType(MagnifierType type) { +void TestShellDelegate::SetMagnifier(const MagnifierType type) { screen_magnifier_type_ = type; } -bool TestShellDelegate::IsMagnifierEnabled() const { - return screen_magnifier_enabled_; -} - MagnifierType TestShellDelegate::GetMagnifierType() const { return screen_magnifier_type_; } diff --git a/ash/test/test_shell_delegate.h b/ash/test/test_shell_delegate.h index 76add5d..f7bb171 100644 --- a/ash/test/test_shell_delegate.h +++ b/ash/test/test_shell_delegate.h @@ -45,9 +45,7 @@ class TestShellDelegate : public ShellDelegate { virtual bool IsSpokenFeedbackEnabled() const OVERRIDE; virtual void ToggleHighContrast() OVERRIDE; virtual bool IsHighContrastEnabled() const OVERRIDE; - virtual void SetMagnifierEnabled(bool enabled) OVERRIDE; - virtual void SetMagnifierType(MagnifierType type) OVERRIDE; - virtual bool IsMagnifierEnabled() const OVERRIDE; + virtual void SetMagnifier(MagnifierType type) OVERRIDE; virtual MagnifierType GetMagnifierType() const OVERRIDE; virtual bool ShouldAlwaysShowAccessibilityMenu() const OVERRIDE; virtual app_list::AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; @@ -96,7 +94,6 @@ class TestShellDelegate : public ShellDelegate { bool session_started_; bool spoken_feedback_enabled_; bool high_contrast_enabled_; - bool screen_magnifier_enabled_; MagnifierType screen_magnifier_type_; bool user_logged_in_; bool can_lock_screen_; diff --git a/chrome/browser/chromeos/accessibility/accessibility_util.cc b/chrome/browser/chromeos/accessibility/accessibility_util.cc index 86778d6..faa58f9 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_util.cc +++ b/chrome/browser/chromeos/accessibility/accessibility_util.cc @@ -50,6 +50,10 @@ using content::RenderViewHost; namespace chromeos { namespace accessibility { +const char kScreenMagnifierOff[] = ""; +const char kScreenMagnifierFull[] = "full"; +const char kScreenMagnifierPartial[] = "partial"; + // Helper class that directly loads an extension's content scripts into // all of the frames corresponding to a given RenderViewHost. class ContentScriptLoader { @@ -119,14 +123,10 @@ void UpdateChromeOSAccessibilityHistograms() { IsHighContrastEnabled()); UMA_HISTOGRAM_BOOLEAN("Accessibility.CrosVirtualKeyboard", IsVirtualKeyboardEnabled()); - if (MagnificationManager::Get()) { - uint32 type = MagnificationManager::Get()->IsMagnifierEnabled() ? - MagnificationManager::Get()->GetMagnifierType() : 0; - // '0' means magnifier is disabled. + if (MagnificationManager::Get()) UMA_HISTOGRAM_ENUMERATION("Accessibility.CrosScreenMagnifier", - type, - ash::kMaxMagnifierType + 1); - } + MagnificationManager::Get()->GetMagnifierType(), + 3); } void Initialize() { @@ -290,6 +290,27 @@ bool IsVirtualKeyboardEnabled() { return virtual_keyboard_enabled; } +ash::MagnifierType MagnifierTypeFromName(const char type_name[]) { + if (0 == strcmp(type_name, kScreenMagnifierFull)) + return ash::MAGNIFIER_FULL; + else if (0 == strcmp(type_name, kScreenMagnifierPartial)) + return ash::MAGNIFIER_PARTIAL; + else + return ash::MAGNIFIER_OFF; +} + +const char* ScreenMagnifierNameFromType(ash::MagnifierType type) { + switch (type) { + case ash::MAGNIFIER_OFF: + return kScreenMagnifierOff; + case ash::MAGNIFIER_FULL: + return kScreenMagnifierFull; + case ash::MAGNIFIER_PARTIAL: + return kScreenMagnifierPartial; + } + return kScreenMagnifierOff; +} + void MaybeSpeak(const std::string& utterance) { if (IsSpokenFeedbackEnabled()) Speak(utterance); diff --git a/chrome/browser/chromeos/accessibility/accessibility_util.h b/chrome/browser/chromeos/accessibility/accessibility_util.h index e70d60d..e672b5d 100644 --- a/chrome/browser/chromeos/accessibility/accessibility_util.h +++ b/chrome/browser/chromeos/accessibility/accessibility_util.h @@ -24,19 +24,9 @@ struct AccessibilityStatusEventDetails { AccessibilityStatusEventDetails( bool enabled, ash::AccessibilityNotificationVisibility notify) : enabled(enabled), - magnifier_type(ash::kDefaultMagnifierType), - notify(notify) {} - - AccessibilityStatusEventDetails( - bool enabled, - ash::MagnifierType magnifier_type, - ash::AccessibilityNotificationVisibility notify) - : enabled(enabled), - magnifier_type(magnifier_type), notify(notify) {} bool enabled; - ash::MagnifierType magnifier_type; ash::AccessibilityNotificationVisibility notify; }; @@ -74,6 +64,12 @@ bool IsHighContrastEnabled(); // Returns true if the Virtual Keyboard is enabled, or false if not. bool IsVirtualKeyboardEnabled(); +// Translates from a string to MagnifierType. +ash::MagnifierType MagnifierTypeFromName(const char type_name[]); + +// Translates from a MagnifierType to type string. +const char* ScreenMagnifierNameFromType(ash::MagnifierType type); + // Speaks the given text if the accessibility pref is already set. void MaybeSpeak(const std::string& utterance); diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.cc b/chrome/browser/chromeos/accessibility/magnification_manager.cc index 38d4f9e..25d4879 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager.cc +++ b/chrome/browser/chromeos/accessibility/magnification_manager.cc @@ -34,8 +34,7 @@ class MagnificationManagerImpl : public MagnificationManager, public: MagnificationManagerImpl() : first_time_update_(true), profile_(NULL), - type_(ash::kDefaultMagnifierType), - enabled_(false) { + type_(ash::MAGNIFIER_OFF) { registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED, content::NotificationService::AllSources()); @@ -55,114 +54,64 @@ class MagnificationManagerImpl : public MagnificationManager, } // MagnificationManager implimentation: - bool IsMagnifierEnabled() const OVERRIDE { - return enabled_; - } - - ash::MagnifierType GetMagnifierType() const OVERRIDE { + ash::MagnifierType GetMagnifierType() OVERRIDE { return type_; } - void SetMagnifierEnabled(bool enabled) OVERRIDE { - // This method may be invoked even when the other magnifier settings (e.g. - // type or scale) are changed, so we need to call magnification controller - // even if |enabled| is unchanged. Only if |enabled| is false and the - // magnifier is already disabled, we are sure that we don't need to reflect - // the new settings right now because the magnifier keeps disabled. - if (!enabled && !enabled_) - return; - - enabled_ = enabled; - - if (profile_) { - PrefService* prefs = profile_->GetPrefs(); - DCHECK(prefs); - if (enabled != prefs->GetBoolean(prefs::kScreenMagnifierEnabled)) { - prefs->SetBoolean(prefs::kScreenMagnifierEnabled, enabled); - prefs->CommitPendingWrite(); - } - } - - NotifyMagnifierChanged(); - - if (type_ == ash::MAGNIFIER_FULL) { - ash::Shell::GetInstance()->magnification_controller()->SetEnabled( - enabled_); - } else { - ash::Shell::GetInstance()->partial_magnification_controller()->SetEnabled( - enabled_); - } - } - - void SetMagnifierType(ash::MagnifierType type) OVERRIDE { - if (type_ == type) + void SetMagnifier(ash::MagnifierType type) OVERRIDE { + if (type == type_ && type == ash::MAGNIFIER_OFF) return; - DCHECK(type == ash::MAGNIFIER_FULL || type == ash::MAGNIFIER_PARTIAL); type_ = type; if (profile_) { PrefService* prefs = profile_->GetPrefs(); - DCHECK(prefs); - prefs->SetInteger(prefs::kScreenMagnifierType, type); - prefs->CommitPendingWrite(); + if (prefs) { + bool enabled = (type != ash::MAGNIFIER_OFF); + if (enabled != prefs->GetBoolean(prefs::kScreenMagnifierEnabled)) { + prefs->SetBoolean(prefs::kScreenMagnifierEnabled, enabled); + prefs->CommitPendingWrite(); + } + } } - NotifyMagnifierChanged(); - - if (enabled_) { - ash::Shell::GetInstance()->magnification_controller()->SetEnabled( - type_ == ash::MAGNIFIER_FULL); - ash::Shell::GetInstance()->partial_magnification_controller()->SetEnabled( - type_ == ash::MAGNIFIER_PARTIAL); - } + accessibility::AccessibilityStatusEventDetails details( + type != ash::MAGNIFIER_OFF, ash::A11Y_NOTIFICATION_NONE); + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER, + content::NotificationService::AllSources(), + content::Details<accessibility::AccessibilityStatusEventDetails>( + &details)); + + ash::Shell::GetInstance()->magnification_controller()->SetEnabled( + type == ash::MAGNIFIER_FULL); + ash::Shell::GetInstance()->partial_magnification_controller()->SetEnabled( + type == ash::MAGNIFIER_PARTIAL); } void SaveScreenMagnifierScale(double scale) OVERRIDE { Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); - DCHECK(profile->GetPrefs()); profile->GetPrefs()->SetDouble(prefs::kScreenMagnifierScale, scale); } - double GetSavedScreenMagnifierScale() const OVERRIDE { + double GetSavedScreenMagnifierScale() OVERRIDE { Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); - DCHECK(profile->GetPrefs()); if (profile->GetPrefs()->HasPrefPath(prefs::kScreenMagnifierScale)) return profile->GetPrefs()->GetDouble(prefs::kScreenMagnifierScale); return std::numeric_limits<double>::min(); } private: - void NotifyMagnifierChanged() { - accessibility::AccessibilityStatusEventDetails details( - enabled_, type_, ash::A11Y_NOTIFICATION_NONE); - content::NotificationService::current()->Notify( - chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER, - content::NotificationService::AllSources(), - content::Details<accessibility::AccessibilityStatusEventDetails>( - &details)); - } - - bool IsMagnifierEnabledFromPref() { - if (!profile_) - return false; - - DCHECK(profile_->GetPrefs()); - return profile_->GetPrefs()->GetBoolean(prefs::kScreenMagnifierEnabled); - } - ash::MagnifierType GetMagnifierTypeFromPref() { if (!profile_) - return ash::kDefaultMagnifierType; - - DCHECK(profile_->GetPrefs()); - ash::MagnifierType type = static_cast<ash::MagnifierType>( - profile_->GetPrefs()->GetInteger(prefs::kScreenMagnifierType)); + return ash::MAGNIFIER_OFF; - if (type == ash::MAGNIFIER_FULL || type == ash::MAGNIFIER_PARTIAL) - return type; + PrefService* prefs = profile_->GetPrefs(); + if (!prefs) + return ash::MAGNIFIER_OFF; - return ash::kDefaultMagnifierType; + return prefs->GetBoolean(prefs::kScreenMagnifierEnabled) ? + ash::MAGNIFIER_FULL : ash::MAGNIFIER_OFF; } void SetProfile(Profile* profile) { @@ -175,27 +124,17 @@ class MagnificationManagerImpl : public MagnificationManager, pref_change_registrar_->Init(profile->GetPrefs()); pref_change_registrar_->Add( prefs::kScreenMagnifierEnabled, - base::Bind(&MagnificationManagerImpl::UpdateMagnifierStatusFromPref, - base::Unretained(this))); - pref_change_registrar_->Add( - prefs::kScreenMagnifierType, - base::Bind(&MagnificationManagerImpl::UpdateMagnifierStatusFromPref, + base::Bind(&MagnificationManagerImpl::UpdateMagnifierStatus, base::Unretained(this))); } profile_ = profile; - UpdateMagnifierStatusFromPref(); + UpdateMagnifierStatus(); } - void UpdateMagnifierStatusFromPref() { - bool enabled = IsMagnifierEnabledFromPref(); - if (!enabled) { - SetMagnifierEnabled(enabled); - SetMagnifierType(GetMagnifierTypeFromPref()); - } else { - SetMagnifierType(GetMagnifierTypeFromPref()); - SetMagnifierEnabled(enabled); - } + void UpdateMagnifierStatus() { + ash::MagnifierType type = GetMagnifierTypeFromPref(); + SetMagnifier(type); } // content::NotificationObserver implimentation: @@ -229,7 +168,6 @@ class MagnificationManagerImpl : public MagnificationManager, bool first_time_update_; Profile* profile_; ash::MagnifierType type_; - bool enabled_; content::NotificationRegistrar registrar_; scoped_ptr<PrefChangeRegistrar> pref_change_registrar_; diff --git a/chrome/browser/chromeos/accessibility/magnification_manager.h b/chrome/browser/chromeos/accessibility/magnification_manager.h index f323e0a..680b7fc 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager.h +++ b/chrome/browser/chromeos/accessibility/magnification_manager.h @@ -24,30 +24,20 @@ class MagnificationManager { // Returns the existing instance. If there is no instance, creates one. // because only one instance should exist at the same time. static void Initialize(); - // Deletes the existing instance of MagnificationManager. static void Shutdown(); - // Returns the existing instance. If there is no instance, returns NULL. static MagnificationManager* Get(); - // Returns if the screen magnifier is enabled. - virtual bool IsMagnifierEnabled() const = 0; - // Returns the current type of the screen magnifier. - virtual ash::MagnifierType GetMagnifierType() const = 0; - - // Enables the screen magnifier. - virtual void SetMagnifierEnabled(bool enabled) = 0; - + virtual ash::MagnifierType GetMagnifierType() = 0; // Changes the type of the screen magnifier. - virtual void SetMagnifierType(ash::MagnifierType type) = 0; + virtual void SetMagnifier(ash::MagnifierType type) = 0; // Saves the magnifier scale to the pref. virtual void SaveScreenMagnifierScale(double scale) = 0; - // Loads the magnifier scale from the pref. - virtual double GetSavedScreenMagnifierScale() const = 0; + virtual double GetSavedScreenMagnifierScale() = 0; protected: virtual ~MagnificationManager() {} diff --git a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc b/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc index c99202a..6a1a89a 100644 --- a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc +++ b/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc @@ -24,67 +24,11 @@ namespace chromeos { -namespace { - -void SetMagnifierEnabled(bool enabled) { - MagnificationManager::Get()->SetMagnifierEnabled(enabled); -} - -void SetMagnifierType(ash::MagnifierType type) { - MagnificationManager::Get()->SetMagnifierType(type); -} - -void SetFullScreenMagnifierScale(double scale) { - ash::Shell::GetInstance()-> - magnification_controller()->SetScale(scale, false); -} - -double GetFullScreenMagnifierScale() { - return ash::Shell::GetInstance()->magnification_controller()->GetScale(); -} - -void SetSavedFullScreenMagnifierScale(double scale) { - MagnificationManager::Get()->SaveScreenMagnifierScale(scale); -} - -double GetSavedFullScreenMagnifierScale() { - return MagnificationManager::Get()->GetSavedScreenMagnifierScale(); -} - -ash::MagnifierType GetMagnifierType() { - return MagnificationManager::Get()->GetMagnifierType(); -} - -bool IsMagnifierEnabled() { - return MagnificationManager::Get()->IsMagnifierEnabled(); -} - -Profile* profile() { - Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); - DCHECK(profile); - return profile; -} - -PrefServiceBase* prefs() { - return PrefServiceBase::FromBrowserContext(profile()); -} - -void EnableScreenManagnifierToPref(bool enabled) { - prefs()->SetBoolean(prefs::kScreenMagnifierEnabled, enabled); -} - -void SetScreenManagnifierTypeToPref(ash::MagnifierType type) { - prefs()->SetInteger(prefs::kScreenMagnifierType, type); -} - -} // anonymouse namespace - class MagnificationManagerTest : public CrosInProcessBrowserTest, public content::NotificationObserver { protected: MagnificationManagerTest() : observed_(false), - observed_enabled_(false), - observed_type_(ash::kDefaultMagnifierType) {} + observed_type_(ash::MAGNIFIER_OFF) {} virtual ~MagnificationManagerTest() {} virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { @@ -93,6 +37,16 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest, TestingProfile::kTestUserProfileDir); } + Profile* profile() { + Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); + DCHECK(profile); + return profile; + } + + PrefServiceBase* prefs() { + return PrefServiceBase::FromBrowserContext(profile()); + } + virtual void SetUpOnMainThread() OVERRIDE { registrar_.Add( this, @@ -100,6 +54,37 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest, content::NotificationService::AllSources()); } + void SetScreenManagnifierType(ash::MagnifierType type) { + MagnificationManager::Get()->SetMagnifier(type); + } + + void SetScreenManagnifierTypeToPref(ash::MagnifierType type) { + prefs()->SetBoolean(prefs::kScreenMagnifierEnabled, + (type != ash::MAGNIFIER_OFF) ? true : false); + } + + void SetFullScreenMagnifierScale(double scale) { + ash::Shell::GetInstance()-> + magnification_controller()->SetScale(scale, false); + } + + double GetFullScreenMagnifierScale() { + return ash::Shell::GetInstance()->magnification_controller()->GetScale(); + } + + void SetSavedFullScreenMagnifierScale(double scale) { + MagnificationManager::Get()->SaveScreenMagnifierScale(scale); + } + + double GetSavedFullScreenMagnifierScale() { + return MagnificationManager::Get()->GetSavedScreenMagnifierScale(); + } + + void CheckCurrentMagnifierType( + ash::MagnifierType type) { + EXPECT_EQ(MagnificationManager::Get()->GetMagnifierType(), type); + } + // content::NotificationObserver implementation. virtual void Observe(int type, const content::NotificationSource& source, @@ -111,15 +96,14 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest, details).ptr(); observed_ = true; - observed_enabled_ = accessibility_status->enabled; - observed_type_ = accessibility_status->magnifier_type; + observed_type_ = accessibility_status->enabled ? ash::MAGNIFIER_FULL : + ash::MAGNIFIER_OFF; break; } } } bool observed_; - bool observed_enabled_; ash::MagnifierType observed_type_; content::NotificationRegistrar registrar_; DISALLOW_COPY_AND_ASSIGN(MagnificationManagerTest); @@ -127,200 +111,121 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest, IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginOffToOff) { // Confirms that magnifier is disabled on the login screen. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Logs in. UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); // Confirms that magnifier is still disabled just after login. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); UserManager::Get()->SessionStarted(); // Confirms that magnifier is still disabled just after login. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Enables magnifier. - SetMagnifierEnabled(true); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); // Confirms that magnifier is enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); } IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginFullToOff) { // Confirms that magnifier is disabled on the login screen. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Enables magnifier on login scren. - SetMagnifierEnabled(true); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); // Logs in (but the session is not started yet). UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); // Confirms that magnifier is keeping enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); UserManager::Get()->SessionStarted(); // Confirms that magnifier is disabled just after login. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); } IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginOffToFull) { // Changes to full screen magnifier again and confirms that. - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Logs in (but the session is not started yet). UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); // Confirms that magnifier is keeping disabled. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Enable magnifier on the pref. - EnableScreenManagnifierToPref(true); SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); SetSavedFullScreenMagnifierScale(2.5); UserManager::Get()->SessionStarted(); // Confirms that the prefs are successfully loaded. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); EXPECT_EQ(2.5, GetFullScreenMagnifierScale()); } -IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginOffToPartial) { - // Changes to full screen magnifier again and confirms that. - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); - - // Logs in (but the session is not started yet). - UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); - - // Confirms that magnifier is keeping disabled. - EXPECT_FALSE(IsMagnifierEnabled()); - // Enable magnifier on the pref. - EnableScreenManagnifierToPref(true); - SetScreenManagnifierTypeToPref(ash::MAGNIFIER_PARTIAL); - - UserManager::Get()->SessionStarted(); - - // Confirms that the prefs are successfully loaded. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - // Full screen magnifier scale is 1.0x since it's 'partial' magnifier. - EXPECT_EQ(1.0, GetFullScreenMagnifierScale()); -} - IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginFullToFull) { // Changes to full screen magnifier again and confirms that. - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Logs in (but the session is not started yet). UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); // Confirms that magnifier is keeping enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Enable magnifier on the pref. - EnableScreenManagnifierToPref(true); SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); SetSavedFullScreenMagnifierScale(2.5); UserManager::Get()->SessionStarted(); // Confirms that the prefs are successfully loaded. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); EXPECT_EQ(2.5, GetFullScreenMagnifierScale()); } -IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, LoginFullToPartial) { - // Changes to full screen magnifier again and confirms that. - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); +IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ChangeMagnifierType) { + // Changes to full screen magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); - // Logs in (but the session is not started yet). - UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); + // Changes to partial screen magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_PARTIAL); + CheckCurrentMagnifierType(ash::MAGNIFIER_PARTIAL); - // Confirms that magnifier is keeping enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - // Enable magnifier on the pref. - EnableScreenManagnifierToPref(true); - SetScreenManagnifierTypeToPref(ash::MAGNIFIER_PARTIAL); + // Disable magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); + + // Changes to full screen magnifier again and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); + // Logs in + UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); UserManager::Get()->SessionStarted(); - // Confirms that the prefs are successfully loaded. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); + // Changes to full screen magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); - // Full screen magnifier scale is 1.0x since it's 'partial' magnifier. - EXPECT_EQ(1.0, GetFullScreenMagnifierScale()); -} + // Changes to partial screen magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_PARTIAL); + CheckCurrentMagnifierType(ash::MAGNIFIER_PARTIAL); -IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ChangeMagnifierType) { - // Enables/disables full screen magnifier. - SetMagnifierEnabled(false); - SetMagnifierType(ash::MAGNIFIER_FULL); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - // Enables/disables partial screen magnifier. - SetMagnifierType(ash::MAGNIFIER_PARTIAL); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - // Changes the magnifier type when the magnifier is enabled. - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - SetMagnifierType(ash::MAGNIFIER_PARTIAL); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - SetMagnifierType(ash::MAGNIFIER_FULL); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - // Changes the magnifier type when the magnifier is disabled. - SetMagnifierEnabled(false); - SetMagnifierType(ash::MAGNIFIER_FULL); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - SetMagnifierType(ash::MAGNIFIER_PARTIAL); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); - - SetMagnifierType(ash::MAGNIFIER_FULL); - EXPECT_FALSE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + // Disable magnifier and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); + + // Changes to full screen magnifier again and confirms that. + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); } IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, TypePref) { @@ -329,75 +234,48 @@ IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, TypePref) { UserManager::Get()->SessionStarted(); // Confirms that magnifier is disabled just after login. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Sets the pref as true to enable magnifier. SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); - EnableScreenManagnifierToPref(true); // Confirms that magnifier is enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); - - SetScreenManagnifierTypeToPref(ash::MAGNIFIER_PARTIAL); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Sets the pref as false to disabled magnifier. - EnableScreenManagnifierToPref(false); + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_OFF); // Confirms that magnifier is disabled. - EXPECT_FALSE(IsMagnifierEnabled()); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Sets the pref as true to enable magnifier again. - EnableScreenManagnifierToPref(true); + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); // Confirms that magnifier is enabled. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); } -IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ResumeSavedTypeFullPref) { +IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ResumeSavedTypePref) { // Loads the profile of the user. UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); // Sets the pref as true to enable magnifier before login. - EnableScreenManagnifierToPref(true); SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); // Logs in. UserManager::Get()->SessionStarted(); // Confirms that magnifier is enabled just after login. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); -} - -IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ResumeSavedTypePartialPref) { - // Loads the profile of the user. - UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); - - // Sets the pref as true to enable magnifier before login. - EnableScreenManagnifierToPref(true); - SetScreenManagnifierTypeToPref(ash::MAGNIFIER_PARTIAL); - - // Logs in. - UserManager::Get()->SessionStarted(); - - // Confirms that magnifier is enabled just after login. - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, GetMagnifierType()); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); } IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ScalePref) { - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Sets 2.5x to the pref. SetSavedFullScreenMagnifierScale(2.5); // Enables full screen magnifier. - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Confirms that 2.5x is restored. EXPECT_EQ(2.5, GetFullScreenMagnifierScale()); @@ -408,33 +286,30 @@ IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ScalePref) { } IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, InvalidScalePref) { - // TEST 1: Sets too small scale - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); + // TEST 1: too small scale + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Sets too small value to the pref. SetSavedFullScreenMagnifierScale(0.5); // Enables full screen magnifier. - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Confirms that the actual scale is set to the minimum scale. EXPECT_EQ(1.0, GetFullScreenMagnifierScale()); - // TEST 2: Sets too large scale - SetMagnifierEnabled(false); - EXPECT_FALSE(IsMagnifierEnabled()); + // TEST 2: too large scale + SetScreenManagnifierType(ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Sets too large value to the pref. SetSavedFullScreenMagnifierScale(50.0); // Enables full screen magnifier. - SetMagnifierEnabled(true); - EXPECT_TRUE(IsMagnifierEnabled()); - EXPECT_EQ(ash::MAGNIFIER_FULL, GetMagnifierType()); + SetScreenManagnifierType(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Confirms that the actual scale is set to the maximum scale. EXPECT_EQ(4.0, GetFullScreenMagnifierScale()); @@ -446,53 +321,30 @@ IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); UserManager::Get()->SessionStarted(); - // Enable magnifier (without type) - EnableScreenManagnifierToPref(true); - EXPECT_TRUE(observed_); + // Before the test, sets to full magnifier. + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Disables magnifier and confirms observer is invoked. observed_ = false; - SetMagnifierEnabled(false); + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_OFF); EXPECT_TRUE(observed_); - - // Disables magnifier again and confirms observer is not invoked. - observed_ = false; - SetMagnifierEnabled(false); - EXPECT_FALSE(observed_); + EXPECT_EQ(observed_type_, ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); // Enables full screen magnifier and confirms observer is invoked. observed_ = false; - SetMagnifierType(ash::MAGNIFIER_FULL); - SetMagnifierEnabled(true); - EXPECT_TRUE(observed_); - - // Enables full screen magnifier again and confirms observer is invoked. - observed_ = false; - SetMagnifierEnabled(true); - EXPECT_TRUE(observed_); - EXPECT_TRUE(observed_enabled_); - EXPECT_EQ(ash::MAGNIFIER_FULL, observed_type_); - - // Switches to partial screen magnifier and confirms observer is invoked. - observed_ = false; - SetMagnifierType(ash::MAGNIFIER_PARTIAL); - EXPECT_TRUE(observed_); - EXPECT_TRUE(observed_enabled_); - EXPECT_EQ(ash::MAGNIFIER_PARTIAL, observed_type_); - - // Switches to partial screen magnifier and confirms observer is invoked. - observed_ = false; - SetMagnifierType(ash::MAGNIFIER_FULL); + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); EXPECT_TRUE(observed_); - EXPECT_TRUE(observed_enabled_); - EXPECT_EQ(ash::MAGNIFIER_FULL, observed_type_); + EXPECT_EQ(observed_type_, ash::MAGNIFIER_FULL); + CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); // Disables magnifier again and confirms observer is invoked. observed_ = false; - SetMagnifierEnabled(false); + SetScreenManagnifierTypeToPref(ash::MAGNIFIER_OFF); EXPECT_TRUE(observed_); - EXPECT_FALSE(observed_enabled_); - EXPECT_FALSE(IsMagnifierEnabled()); + EXPECT_EQ(observed_type_, ash::MAGNIFIER_OFF); + CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); } } // namespace chromeos diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index 5aa9e7f..8ee9f98 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc @@ -4,7 +4,6 @@ #include "chrome/browser/chromeos/preferences.h" -#include "ash/magnifier/magnifier_constants.h" #include "base/chromeos/chromeos_version.h" #include "base/command_line.h" #include "base/i18n/time_formatting.h" @@ -14,7 +13,6 @@ #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/accessibility/magnification_manager.h" #include "chrome/browser/chromeos/drive/drive_file_system_util.h" #include "chrome/browser/chromeos/input_method/input_method_configuration.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" @@ -116,9 +114,6 @@ void Preferences::RegisterUserPrefs(PrefServiceSyncable* prefs) { prefs->RegisterBooleanPref(prefs::kScreenMagnifierEnabled, false, PrefServiceSyncable::SYNCABLE_PREF); - prefs->RegisterIntegerPref(prefs::kScreenMagnifierType, - ash::kDefaultMagnifierType, - PrefServiceSyncable::SYNCABLE_PREF); prefs->RegisterDoublePref(prefs::kScreenMagnifierScale, std::numeric_limits<double>::min(), PrefServiceSyncable::UNSYNCABLE_PREF); @@ -309,14 +304,13 @@ void Preferences::InitUserPrefs(PrefServiceSyncable* prefs) { accessibility_enabled_.Init(prefs::kSpokenFeedbackEnabled, prefs, callback); screen_magnifier_enabled_.Init(prefs::kScreenMagnifierEnabled, prefs, callback); - screen_magnifier_type_.Init(prefs::kScreenMagnifierType, prefs, callback); screen_magnifier_scale_.Init(prefs::kScreenMagnifierScale, prefs, callback); mouse_sensitivity_.Init(prefs::kMouseSensitivity, prefs, callback); touchpad_sensitivity_.Init(prefs::kTouchpadSensitivity, prefs, callback); use_24hour_clock_.Init(prefs::kUse24HourClock, prefs, callback); disable_drive_.Init(prefs::kDisableDrive, prefs, callback); disable_drive_over_cellular_.Init(prefs::kDisableDriveOverCellular, - prefs, callback); + prefs, callback); disable_drive_hosted_files_.Init(prefs::kDisableDriveHostedFiles, prefs, callback); download_default_directory_.Init(prefs::kDownloadDefaultDirectory, diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h index cb18e44..d00b66e 100644 --- a/chrome/browser/chromeos/preferences.h +++ b/chrome/browser/chromeos/preferences.h @@ -111,7 +111,6 @@ class Preferences : public PrefServiceObserver { BooleanPrefMember vert_edge_scroll_enabled_; BooleanPrefMember accessibility_enabled_; BooleanPrefMember screen_magnifier_enabled_; - IntegerPrefMember screen_magnifier_type_; DoublePrefMember screen_magnifier_scale_; IntegerPrefMember speed_factor_; IntegerPrefMember mouse_sensitivity_; diff --git a/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc b/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc index 23adfd6..220d928 100644 --- a/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc +++ b/chrome/browser/chromeos/system/tray_accessibility_browsertest.cc @@ -30,8 +30,8 @@ namespace chromeos { -void SetMagnifierEnabled(bool enabled) { - MagnificationManager::Get()->SetMagnifierEnabled(enabled); +namespace { + ui::MouseEvent& dummyEvent = *((ui::MouseEvent*)0); } class TrayAccessibilityTest : public CrosInProcessBrowserTest { @@ -150,13 +150,13 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowTrayIcon) { EXPECT_FALSE(IsTrayIconVisible()); // Toggling magnifier the visibillity of the icon. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(IsTrayIconVisible()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_FALSE(IsTrayIconVisible()); // Enabling all accessibility features. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(IsTrayIconVisible()); accessibility::EnableHighContrast(true); EXPECT_TRUE(IsTrayIconVisible()); @@ -166,7 +166,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowTrayIcon) { EXPECT_TRUE(IsTrayIconVisible()); accessibility::EnableHighContrast(false); EXPECT_TRUE(IsTrayIconVisible()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_FALSE(IsTrayIconVisible()); // Confirms that prefs::kShouldAlwaysShowAccessibilityMenu doesn't affect @@ -208,13 +208,13 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenu) { EXPECT_FALSE(CanCreateMenuItem()); // Toggling screen magnifier changes the visibillity of the menu. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_FALSE(CanCreateMenuItem()); // Enabling all accessibility features. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(true); EXPECT_TRUE(CanCreateMenuItem()); @@ -224,7 +224,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenu) { EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(false); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_FALSE(CanCreateMenuItem()); } @@ -255,13 +255,13 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenuWithShowMenuOption) { EXPECT_TRUE(CanCreateMenuItem()); // The menu is keeping visible regardless of toggling screen magnifier. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CanCreateMenuItem()); // Enabling all accessibility features. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(true); EXPECT_TRUE(CanCreateMenuItem()); @@ -271,7 +271,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenuWithShowMenuOption) { EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(false); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CanCreateMenuItem()); // Sets prefs::kShouldAlwaysShowAccessibilityMenu = true. @@ -300,13 +300,13 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenuWithShowOnLoginScreen) { EXPECT_TRUE(CanCreateMenuItem()); // The menu is keeping visible regardless of toggling screen magnifier. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CanCreateMenuItem()); // Enabling all accessibility features. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(true); EXPECT_TRUE(CanCreateMenuItem()); @@ -316,7 +316,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ShowMenuWithShowOnLoginScreen) { EXPECT_TRUE(CanCreateMenuItem()); accessibility::EnableHighContrast(false); EXPECT_TRUE(CanCreateMenuItem()); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CanCreateMenuItem()); // Sets prefs::kShouldAlwaysShowAccessibilityMenu = true. @@ -362,14 +362,17 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, ClickDetailMenu) { // Confirms that the check item toggles the magnifier. EXPECT_FALSE(accessibility::IsHighContrastEnabled()); - EXPECT_FALSE(MagnificationManager::Get()->IsMagnifierEnabled()); + EXPECT_EQ(ash::MAGNIFIER_OFF, + MagnificationManager::Get()->GetMagnifierType()); EXPECT_TRUE(CreateDetailedMenu()); ClickScreenMagnifierOnDetailMenu(); - EXPECT_TRUE(MagnificationManager::Get()->IsMagnifierEnabled()); + EXPECT_EQ(ash::MAGNIFIER_FULL, + MagnificationManager::Get()->GetMagnifierType()); EXPECT_TRUE(CreateDetailedMenu()); ClickScreenMagnifierOnDetailMenu(); - EXPECT_FALSE(MagnificationManager::Get()->IsMagnifierEnabled()); + EXPECT_EQ(ash::MAGNIFIER_OFF, + MagnificationManager::Get()->GetMagnifierType()); } IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, CheckMarksOnDetailMenu) { @@ -413,7 +416,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, CheckMarksOnDetailMenu) { CloseDetailMenu(); // Enabling full screen magnifier. - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CreateDetailedMenu()); EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu()); EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu()); @@ -421,7 +424,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, CheckMarksOnDetailMenu) { CloseDetailMenu(); // Disabling screen magnifier. - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CreateDetailedMenu()); EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu()); EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu()); @@ -431,7 +434,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, CheckMarksOnDetailMenu) { // Enabling all of the a11y features. accessibility::EnableSpokenFeedback(true, NULL, ash::A11Y_NOTIFICATION_NONE); accessibility::EnableHighContrast(true); - SetMagnifierEnabled(true); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_FULL); EXPECT_TRUE(CreateDetailedMenu()); EXPECT_TRUE(IsSpokenFeedbackEnabledOnDetailMenu()); EXPECT_TRUE(IsHighContrastEnabledOnDetailMenu()); @@ -441,7 +444,7 @@ IN_PROC_BROWSER_TEST_F(TrayAccessibilityTest, CheckMarksOnDetailMenu) { // Disabling all of the a11y features. accessibility::EnableSpokenFeedback(false, NULL, ash::A11Y_NOTIFICATION_NONE); accessibility::EnableHighContrast(false); - SetMagnifierEnabled(false); + MagnificationManager::Get()->SetMagnifier(ash::MAGNIFIER_OFF); EXPECT_TRUE(CreateDetailedMenu()); EXPECT_FALSE(IsSpokenFeedbackEnabledOnDetailMenu()); EXPECT_FALSE(IsHighContrastEnabledOnDetailMenu()); diff --git a/chrome/browser/resources/options/browser_options.html b/chrome/browser/resources/options/browser_options.html index 7c26ef9..9a1bf83 100644 --- a/chrome/browser/resources/options/browser_options.html +++ b/chrome/browser/resources/options/browser_options.html @@ -637,10 +637,6 @@ pref="settings.a11y.screen_magnifier" type="checkbox"> <span i18n-content="accessibilityScreenMagnifier"></span> </label> - <select id="accessibility-screen-magnifier-type-select" - class="control" i18n-options="magnifierList" data-type="number" - pref="settings.a11y.screen_magnifier_type2"> - </select> </div> </div> <div class="option-name" id="accessibility-tap-dragging"> diff --git a/chrome/browser/ui/ash/ash_init.cc b/chrome/browser/ui/ash/ash_init.cc index ef9d18a..0f50c6b 100644 --- a/chrome/browser/ui/ash/ash_init.cc +++ b/chrome/browser/ui/ash/ash_init.cc @@ -96,14 +96,12 @@ void OpenAsh() { chromeos::accessibility::IsHighContrastEnabled()); DCHECK(chromeos::MagnificationManager::Get()); - bool magnifier_enabled = - chromeos::MagnificationManager::Get()->IsMagnifierEnabled(); ash::MagnifierType magnifier_type = chromeos::MagnificationManager::Get()->GetMagnifierType(); - ash::Shell::GetInstance()->magnification_controller()-> - SetEnabled(magnifier_enabled && magnifier_type == ash::MAGNIFIER_FULL); - ash::Shell::GetInstance()->partial_magnification_controller()-> - SetEnabled(magnifier_enabled && magnifier_type == ash::MAGNIFIER_PARTIAL); + ash::Shell::GetInstance()->magnification_controller()->SetEnabled( + magnifier_type == ash::MAGNIFIER_FULL); + ash::Shell::GetInstance()->partial_magnification_controller()->SetEnabled( + magnifier_type == ash::MAGNIFIER_PARTIAL); if (!CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableZeroBrowsersOpenForTests)) { diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.cc b/chrome/browser/ui/ash/chrome_shell_delegate.cc index b784036..5354516 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate.cc +++ b/chrome/browser/ui/ash/chrome_shell_delegate.cc @@ -355,35 +355,19 @@ void ChromeShellDelegate::ToggleHighContrast() { #endif } -bool ChromeShellDelegate::IsMagnifierEnabled() const { -#if defined(OS_CHROMEOS) - DCHECK(chromeos::MagnificationManager::Get()); - return chromeos::MagnificationManager::Get()->IsMagnifierEnabled(); -#else - return false; -#endif -} - ash::MagnifierType ChromeShellDelegate::GetMagnifierType() const { #if defined(OS_CHROMEOS) DCHECK(chromeos::MagnificationManager::Get()); return chromeos::MagnificationManager::Get()->GetMagnifierType(); #else - return ash::kDefaultMagnifierType; -#endif -} - -void ChromeShellDelegate::SetMagnifierEnabled(bool enabled) { -#if defined(OS_CHROMEOS) - DCHECK(chromeos::MagnificationManager::Get()); - return chromeos::MagnificationManager::Get()->SetMagnifierEnabled(enabled); + return ash::MAGNIFIER_OFF; #endif } -void ChromeShellDelegate::SetMagnifierType(ash::MagnifierType type) { +void ChromeShellDelegate::SetMagnifier(ash::MagnifierType type) { #if defined(OS_CHROMEOS) DCHECK(chromeos::MagnificationManager::Get()); - return chromeos::MagnificationManager::Get()->SetMagnifierType(type); + return chromeos::MagnificationManager::Get()->SetMagnifier(type); #endif } diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.h b/chrome/browser/ui/ash/chrome_shell_delegate.h index 7270a37..401bcb53 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate.h +++ b/chrome/browser/ui/ash/chrome_shell_delegate.h @@ -61,9 +61,7 @@ class ChromeShellDelegate : public ash::ShellDelegate, virtual void ToggleSpokenFeedback( ash::AccessibilityNotificationVisibility notify) OVERRIDE; virtual bool IsHighContrastEnabled() const OVERRIDE; - virtual void SetMagnifierEnabled(bool enabled) OVERRIDE; - virtual void SetMagnifierType(ash::MagnifierType type) OVERRIDE; - virtual bool IsMagnifierEnabled() const OVERRIDE; + virtual void SetMagnifier(ash::MagnifierType type) OVERRIDE; virtual ash::MagnifierType GetMagnifierType() const OVERRIDE; virtual bool ShouldAlwaysShowAccessibilityMenu() const OVERRIDE; virtual app_list::AppListViewDelegate* CreateAppListViewDelegate() OVERRIDE; diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc index 34dc189..82784e49 100644 --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc @@ -149,8 +149,10 @@ void CoreOobeHandler::HandleEnableScreenMagnifier(const base::ListValue* args) { return; } // TODO(nkostylev): Add support for partial screen magnifier. + ash::MagnifierType type = enabled ? ash::MAGNIFIER_FULL : + ash::MAGNIFIER_OFF; DCHECK(MagnificationManager::Get()); - MagnificationManager::Get()->SetMagnifierEnabled(enabled); + MagnificationManager::Get()->SetMagnifier(type); } void CoreOobeHandler::HandleEnableSpokenFeedback(const base::ListValue* args) { @@ -171,13 +173,15 @@ void CoreOobeHandler::ShowOobeUI(bool show) { void CoreOobeHandler::UpdateA11yState() { DCHECK(MagnificationManager::Get()); + ash::MagnifierType type = MagnificationManager::Get()->GetMagnifierType(); + base::DictionaryValue a11y_info; a11y_info.SetBoolean("highContrastEnabled", accessibility::IsHighContrastEnabled()); a11y_info.SetBoolean("spokenFeedbackEnabled", accessibility::IsSpokenFeedbackEnabled()); a11y_info.SetBoolean("screenMagnifierEnabled", - MagnificationManager::Get()->IsMagnifierEnabled()); + type != ash::MAGNIFIER_OFF); web_ui()->CallJavascriptFunction("cr.ui.Oobe.refreshA11yInfo", a11y_info); } diff --git a/chrome/browser/ui/webui/options/browser_options_handler.cc b/chrome/browser/ui/webui/options/browser_options_handler.cc index 7b00522..c4a25d7 100644 --- a/chrome/browser/ui/webui/options/browser_options_handler.cc +++ b/chrome/browser/ui/webui/options/browser_options_handler.cc @@ -85,7 +85,6 @@ #endif #if defined(OS_CHROMEOS) -#include "ash/magnifier/magnifier_constants.h" #include "chrome/browser/chromeos/accessibility/accessibility_util.h" #include "chrome/browser/chromeos/extensions/wallpaper_manager_util.h" #include "chrome/browser/chromeos/login/user_manager.h" @@ -424,22 +423,6 @@ void BrowserOptionsHandler::GetLocalizedValues(DictionaryValue* values) { values->SetString("accessibilityLearnMoreURL", chrome::kChromeAccessibilityHelpURL); - - // Creates magnifierList. - base::ListValue* magnifierList = new base::ListValue(); - base::ListValue* option_full = new base::ListValue(); - option_full->Append(base::Value::CreateIntegerValue(ash::MAGNIFIER_FULL)); - option_full->Append(new base::StringValue(l10n_util::GetStringUTF16( - IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_FULL))); - base::ListValue* option_partial = new base::ListValue(); - option_partial->Append(base::Value::CreateIntegerValue( - ash::MAGNIFIER_PARTIAL)); - option_partial->Append(new base::StringValue(l10n_util::GetStringUTF16( - IDS_OPTIONS_SETTINGS_ACCESSIBILITY_SCREEN_MAGNIFIER_PARTIAL))); - magnifierList->Append(option_full); - magnifierList->Append(option_partial); - values->Set("magnifierList", magnifierList); - #endif #if defined(OS_MACOSX) values->SetString("macPasswordsWarning", diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index eaa2156..174bb08 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -743,10 +743,6 @@ const char kSpokenFeedbackEnabled[] = "settings.accessibility"; const char kHighContrastEnabled[] = "settings.a11y.high_contrast_enabled"; // A boolean pref which determines whether screen magnifier is enabled. const char kScreenMagnifierEnabled[] = "settings.a11y.screen_magnifier"; -// A integer pref which determines what type of screen magnifier is enabled. -// Note that: 'screen_magnifier_type' had been used as string pref. Hence, -// we are using another name pref here. -const char kScreenMagnifierType[] = "settings.a11y.screen_magnifier_type2"; // A double pref which determines a zooming scale of the screen magnifier. const char kScreenMagnifierScale[] = "settings.a11y.screen_magnifier_scale"; // A boolean pref which determines whether virtual keyboard is enabled. diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index fb59a0d..77fab57 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -271,7 +271,6 @@ extern const char kLanguageXkbAutoRepeatInterval[]; extern const char kSpokenFeedbackEnabled[]; extern const char kHighContrastEnabled[]; extern const char kScreenMagnifierEnabled[]; -extern const char kScreenMagnifierType[]; extern const char kScreenMagnifierScale[]; extern const char kVirtualKeyboardEnabled[]; extern const char kShouldAlwaysShowAccessibilityMenu[]; |