Index: chrome/browser/chromeos/extensions/screenlock_private_apitest.cc |
diff --git a/chrome/browser/chromeos/extensions/screenlock_private_apitest.cc b/chrome/browser/chromeos/extensions/screenlock_private_apitest.cc |
index fe355fda6a124152600ee04a8d36c80a436e1574..c23956bc1d1406ca07a375610431390c73bbae79 100644 |
--- a/chrome/browser/chromeos/extensions/screenlock_private_apitest.cc |
+++ b/chrome/browser/chromeos/extensions/screenlock_private_apitest.cc |
@@ -2,8 +2,68 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/chromeos/login/screen_locker.h" |
+#include "chrome/browser/chromeos/login/user.h" |
+#include "chrome/browser/extensions/api/test/test_api.h" |
#include "chrome/browser/extensions/extension_apitest.h" |
+#include "content/public/browser/notification_service.h" |
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ScreenlockPrivateApiTest) { |
- ASSERT_TRUE(RunExtensionTest("screenlockPrivate")) << message_; |
+namespace extensions { |
+ |
+namespace { |
+ |
+const char kAttemptClickAuthMessage[] = "attemptClickAuth"; |
+ |
+} // namespace |
+ |
+class ScreenlockPrivateApiTest : public ExtensionApiTest, |
+ public content::NotificationObserver { |
+ public: |
+ ScreenlockPrivateApiTest() {} |
+ |
+ virtual ~ScreenlockPrivateApiTest() {} |
+ |
+ protected: |
+ chromeos::ScreenLocker* GetScreenLocker() { |
+ chromeos::ScreenLocker* locker = |
+ chromeos::ScreenLocker::default_screen_locker(); |
+ EXPECT_TRUE(locker); |
+ return locker; |
+ } |
+ |
+ // ExtensionApiTest override: |
+ virtual void RunTestOnMainThreadLoop() OVERRIDE { |
+ registrar_.Add(this, |
+ chrome::NOTIFICATION_EXTENSION_TEST_MESSAGE, |
+ content::NotificationService::AllSources()); |
+ ExtensionApiTest::RunTestOnMainThreadLoop(); |
+ registrar_.RemoveAll(); |
+ } |
+ |
+ // content::NotificationObserver override: |
+ virtual void Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) OVERRIDE { |
+ const std::string& content = *content::Details<std::string>(details).ptr(); |
+ if (content == kAttemptClickAuthMessage) { |
+ chromeos::ScreenLocker* locker = GetScreenLocker(); |
+ const chromeos::UserList& users = locker->users(); |
+ EXPECT_GE(1u, users.size()); |
+ GetScreenLocker()->Authenticate( |
+ chromeos::UserContext(users[0]->email(), "", "")); |
+ } |
+ } |
+ |
+ content::NotificationRegistrar registrar_; |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(ScreenlockPrivateApiTest, LockUnlock) { |
+ ASSERT_TRUE(RunExtensionTest("screenlock_private/lock_unlock")) << message_; |
} |
+ |
+IN_PROC_BROWSER_TEST_F(ScreenlockPrivateApiTest, AuthType) { |
+ ASSERT_TRUE(RunExtensionTest("screenlock_private/auth_type")) << message_; |
+} |
+ |
+} // namespace extensions |