Index: chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc |
diff --git a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc b/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc |
index 1c528968f517ea1be9f407141fa40a69630976a2..f21f54884db1058ba4a62b68f5fd1ed24651123b 100644 |
--- a/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc |
+++ b/chrome/browser/chromeos/accessibility/magnification_manager_browsertest.cc |
@@ -22,9 +22,11 @@ |
namespace chromeos { |
-class MagnificationManagerTest : public CrosInProcessBrowserTest { |
+class MagnificationManagerTest : public CrosInProcessBrowserTest, |
+ public MagnificationObserver { |
protected: |
- MagnificationManagerTest() {} |
+ MagnificationManagerTest() : observed_(false), |
+ observed_type_(ash::MAGNIFIER_OFF) {} |
virtual ~MagnificationManagerTest() {} |
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
@@ -33,6 +35,20 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest { |
TestingProfile::kTestUserProfileDir); |
} |
+ virtual void SetUpOnMainThread() OVERRIDE { |
+ MagnificationManager::Get()->AddObserver(this); |
+ } |
+ |
+ virtual void CleanUpOnMainThread() OVERRIDE { |
+ MagnificationManager::Get()->RemoveObserver(this); |
+ } |
+ |
+ // Overridden from MagnificationObserever: |
+ virtual void OnMagnifierTypeChanged(ash::MagnifierType new_type) OVERRIDE { |
+ observed_ = true; |
+ observed_type_ = new_type; |
+ } |
+ |
Profile* profile() { |
Profile* profile = ProfileManager::GetDefaultProfileOrOffTheRecord(); |
DCHECK(profile); |
@@ -44,7 +60,7 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest { |
} |
void SetScreenManagnifierType(ash::MagnifierType type) { |
- MagnificationManager::GetInstance()->SetMagnifier(type); |
+ MagnificationManager::Get()->SetMagnifier(type); |
} |
void SetScreenManagnifierTypeToPref(ash::MagnifierType type) { |
@@ -54,10 +70,11 @@ class MagnificationManagerTest : public CrosInProcessBrowserTest { |
void CheckCurrentMagnifierType( |
ash::MagnifierType type) { |
- EXPECT_EQ(MagnificationManager::GetInstance()->GetMagnifierType(), |
- type); |
+ EXPECT_EQ(MagnificationManager::Get()->GetMagnifierType(), type); |
} |
+ bool observed_; |
+ ash::MagnifierType observed_type_; |
DISALLOW_COPY_AND_ASSIGN(MagnificationManagerTest); |
}; |
@@ -158,4 +175,42 @@ IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ResumeSavedPref) { |
CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); |
} |
+IN_PROC_BROWSER_TEST_F(MagnificationManagerTest, ChangingTypeInvokesObserver) { |
+ // Logs in |
+ UserManager::Get()->UserLoggedIn("owner@invalid.domain", true); |
+ UserManager::Get()->SessionStarted(); |
+ |
+ // Before the test, sets to full magnifier. |
+ SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); |
+ CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); |
+ |
+ // Disables magnifier and confirms observer is invoked. |
+ observed_ = false; |
+ SetScreenManagnifierTypeToPref(ash::MAGNIFIER_OFF); |
+ EXPECT_TRUE(observed_); |
+ EXPECT_EQ(observed_type_, ash::MAGNIFIER_OFF); |
+ CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); |
+ |
+ // Enables full screen magnifier and confirms observer is invoked. |
+ observed_ = false; |
+ SetScreenManagnifierTypeToPref(ash::MAGNIFIER_FULL); |
+ EXPECT_TRUE(observed_); |
+ EXPECT_EQ(observed_type_, ash::MAGNIFIER_FULL); |
+ CheckCurrentMagnifierType(ash::MAGNIFIER_FULL); |
+ |
+ // Enables partial screen magnifier and confirms observer is invoked. |
+ observed_ = false; |
+ SetScreenManagnifierTypeToPref(ash::MAGNIFIER_PARTIAL); |
+ EXPECT_TRUE(observed_); |
+ EXPECT_EQ(observed_type_, ash::MAGNIFIER_PARTIAL); |
+ CheckCurrentMagnifierType(ash::MAGNIFIER_PARTIAL); |
+ |
+ // Disables magnifier again and confirms observer is invoked. |
+ observed_ = false; |
+ SetScreenManagnifierTypeToPref(ash::MAGNIFIER_OFF); |
+ EXPECT_TRUE(observed_); |
+ EXPECT_EQ(observed_type_, ash::MAGNIFIER_OFF); |
+ CheckCurrentMagnifierType(ash::MAGNIFIER_OFF); |
+} |
+ |
} // namespace chromeos |