11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string> 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector> 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/string16.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/string_util.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/utf_string_conversions.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/easy_unlock_screenlock_state_handler.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/easy_unlock_service.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/signin/screenlock_bridge.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 155b892326406927b709cdaf6c384d4ababf456332Ben Murdoch#include "chrome/test/base/testing_browser_process.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "testing/gtest/include/gtest/gtest.h" 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/base/l10n/l10n_util.h" 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace { 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// Icons used by EasyUnlockScreenlockStateHandler. The icon id values are the 2234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)// same as the ones set by ScreenlockBridge. 2334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)const char kLockedIconId[] = "locked"; 2434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)const char kUnlockedIconId[] = "unlocked"; 2534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)const char kSpinnerIconId[] = "spinner"; 2634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)const char kHardlockedIconId[] = "hardlocked"; 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Checks if |input| string has any unreplaced placeholders. 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool StringHasPlaceholders(const base::string16& input) { 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<size_t> offsets; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<base::string16> subst; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci subst.push_back(base::string16()); 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 replaced = ReplaceStringPlaceholders(input, subst, &offsets); 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return !offsets.empty(); 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Fake lock handler to be used in these tests. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass TestLockHandler : public ScreenlockBridge::LockHandler { 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci explicit TestLockHandler(const std::string& user_email) 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : user_email_(user_email), 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci show_icon_count_(0u), 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci auth_type_(OFFLINE_PASSWORD) { 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~TestLockHandler() {} 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // ScreenlockBridge::LockHandler implementation: 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ShowBannerMessage(const base::string16& message) OVERRIDE { 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(true) << "Should not be reached."; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ShowUserPodCustomIcon( 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& user_email, 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ScreenlockBridge::UserPodCustomIconOptions& icon) OVERRIDE { 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(user_email_, user_email); 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ++show_icon_count_; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci last_custom_icon_ = icon.ToDictionaryValue().Pass(); 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ValidateCustomIcon(); 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void HideUserPodCustomIcon(const std::string& user_email) OVERRIDE { 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(user_email_, user_email); 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci last_custom_icon_.reset(); 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void EnableInput() OVERRIDE { 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(true) << "Should not be reached."; 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SetAuthType(const std::string& user_email, 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AuthType auth_type, 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::string16& auth_value) OVERRIDE { 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_EQ(user_email_, user_email); 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Generally, this is allowed, but EasyUnlockScreenlockStateHandler should 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // avoid resetting the same auth type. 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_NE(auth_type_, auth_type); 781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci auth_type_ = auth_type; 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci auth_value_ = auth_value; 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual AuthType GetAuthType(const std::string& user_email) const OVERRIDE { 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(user_email_, user_email); 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return auth_type_; 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void Unlock(const std::string& user_email) OVERRIDE { 891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(true) << "Should not be reached."; 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void AttemptEasySignin(const std::string& user_email, 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& secret, 941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& key_label) OVERRIDE { 951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(true) << "Should not be reached."; 961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Utility methods used by tests: 991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Gets last set auth value. 1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 GetAuthValue() const { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return auth_value_; 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Sets the auth value. 1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void SetAuthValue(const base::string16& value) { 1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci auth_value_ = value; 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Returns the number of times an icon was shown since the last call to this 1111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // method. 1121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t GetAndResetShowIconCount() { 1131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t result = show_icon_count_; 1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci show_icon_count_ = 0u; 1151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return result; 1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Whether the custom icon is set. 1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool HasCustomIcon() const { 1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return last_custom_icon_; 1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 12334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) // If custom icon is set, returns the icon's id. 12434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) // If there is no icon, or if it doesn't have an id set, returns an empty 12534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) // string. 12634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) std::string GetCustomIconId() const { 1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string result; 1281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (last_custom_icon_) 12934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) last_custom_icon_->GetString("id", &result); 1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return result; 1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Whether the custom icon is set and it has a tooltip. 1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool CustomIconHasTooltip() const { 1351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return last_custom_icon_ && last_custom_icon_->HasKey("tooltip"); 1361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Gets the custom icon's tooltip text, if one is set. 1391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 GetCustomIconTooltip() const { 1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 result; 1411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (last_custom_icon_) 1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci last_custom_icon_->GetString("tooltip.text", &result); 1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return result; 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Whether the custom icon's tooltip should be autoshown. If the icon is not 1471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // set, or it doesn't have a tooltip, returns false. 1481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool IsCustomIconTooltipAutoshown() const { 1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool result = false; 1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (last_custom_icon_) 1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci last_custom_icon_->GetBoolean("tooltip.autoshow", &result); 1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return result; 1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Whether the custom icon is set and if has hardlock capability enabed. 1561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool CustomIconHardlocksOnClick() const { 1571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool result = false; 1581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (last_custom_icon_) 1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci last_custom_icon_->GetBoolean("hardlockOnClick", &result); 1601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return result; 1611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 1641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Does some sanity checks on the last icon set by |ShowUserPodCustomIcon|. 1651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // It will cause a test failure if the icon is not valid. 1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void ValidateCustomIcon() { 1671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(last_custom_icon_.get()); 1681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 16934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_TRUE(last_custom_icon_->HasKey("id")); 1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (last_custom_icon_->HasKey("tooltip")) { 1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 tooltip; 1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(last_custom_icon_->GetString("tooltip.text", &tooltip)); 1741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(tooltip.empty()); 1751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(StringHasPlaceholders(tooltip)); 1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The fake user email used in test. All methods called on |this| should be 1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // associated with this user. 1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string user_email_; 1821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The last icon set using |SetUserPodCustomIcon|. Call to 1841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // |HideUserPodcustomIcon| resets it. 1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<base::DictionaryValue> last_custom_icon_; 1861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t show_icon_count_; 1871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Auth type and value set using |SetAuthType|. 1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AuthType auth_type_; 1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 auth_value_; 1911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DISALLOW_COPY_AND_ASSIGN(TestLockHandler); 1931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass EasyUnlockScreenlockStateHandlerTest : public testing::Test { 1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandlerTest() : user_email_("test_user@gmail.com") {} 1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~EasyUnlockScreenlockStateHandlerTest() {} 1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SetUp() OVERRIDE { 2015b892326406927b709cdaf6c384d4ababf456332Ben Murdoch TestingBrowserProcess::GetGlobal()->SetApplicationLocale("en-US"); 2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Create and inject fake lock handler to the screenlock bridge. 2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(new TestLockHandler(user_email_)); 2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge* screenlock_bridge = ScreenlockBridge::Get(); 2061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci screenlock_bridge->SetLockHandler(lock_handler_.get()); 2071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Create the screenlock state handler object that will be tested. 20934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_.reset(new EasyUnlockScreenlockStateHandler( 21034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) user_email_, 21134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::NO_HARDLOCK, 21234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) screenlock_bridge)); 2131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void TearDown() OVERRIDE { 2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(NULL); 2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(); 2181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_.reset(); 2191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 2201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci protected: 2221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The state handler that is being tested. 2231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<EasyUnlockScreenlockStateHandler> state_handler_; 2241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // The user associated with |state_handler_|. 2261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string user_email_; 2271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Faked lock handler given to ScreenlockBridge during the test. Abstracts 2291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // the screen lock UI. 2301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<TestLockHandler> lock_handler_; 2311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 2321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2335b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, AuthenticatedTrialRun) { 2345b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetTrialRun(); 2351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 2361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 2391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 2401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 2411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 24334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kUnlockedIconId, lock_handler_->GetCustomIconId()); 2441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()); 2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->IsCustomIconTooltipAutoshown()); 2461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(lock_handler_->CustomIconHardlocksOnClick()); 2471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 2491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 2501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Duplicated state change should be ignored. 2511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 2521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, AuthenticatedNotInitialRun) { 2551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 2561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 2571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 2591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 2601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 2611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 26334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kUnlockedIconId, lock_handler_->GetCustomIconId()); 2641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()); 2651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(lock_handler_->IsCustomIconTooltipAutoshown()); 2661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHardlocksOnClick()); 2671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2695b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, IsActive) { 2705b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_FALSE(state_handler_->IsActive()); 2715b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 2725b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 2735b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(state_handler_->IsActive()); 2745b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 2755b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_INACTIVE); 2765b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_FALSE(state_handler_->IsActive()); 2775b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 2785b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 2791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, BluetoothConnecting) { 2801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 2811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING); 2825b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(state_handler_->IsActive()); 2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 28934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kSpinnerIconId, lock_handler_->GetCustomIconId()); 2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(lock_handler_->CustomIconHasTooltip()); 2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHardlocksOnClick()); 2921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 2931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 2941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING); 2951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Duplicated state change should be ignored. 2961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 2971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 2981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 29934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)TEST_F(EasyUnlockScreenlockStateHandlerTest, HardlockedState) { 30034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->ChangeState( 30134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 30234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 30334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 30434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 30534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 30634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 30734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 30834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 30934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 31034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 31134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 31234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 31334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 31434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 31534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kHardlockedIconId, lock_handler_->GetCustomIconId()); 31634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()); 3175b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(lock_handler_->IsCustomIconTooltipAutoshown()); 31834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_FALSE(lock_handler_->CustomIconHardlocksOnClick()); 31934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 32034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 32134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 32234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 32334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 32434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 32534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)} 32634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 32734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)TEST_F(EasyUnlockScreenlockStateHandlerTest, HardlockedStateNoPairing) { 32834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->ChangeState( 32934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 33034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 33134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 33234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 33334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 33434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 33534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 33634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::NO_PAIRING); 33734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 33834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_FALSE(lock_handler_->HasCustomIcon()); 33934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 34034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 34134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)} 34234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 3431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, StatesWithLockedIcon) { 3441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<EasyUnlockScreenlockStateHandler::State> states; 3451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH); 3461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED); 3481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE); 3491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back( 3501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED); 3511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 3521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (size_t i = 0; i < states.size(); ++i) { 3541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState(states[i]); 3555b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(state_handler_->IsActive()); 3561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()) 3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)) 3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()) 3641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 36534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()) 3661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()) 3681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(lock_handler_->IsCustomIconTooltipAutoshown()) 3701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHardlocksOnClick()) 3721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState(states[i]); 3751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()) 3761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 3805b892326406927b709cdaf6c384d4ababf456332Ben Murdoch// Verifies tooltips are autoshown on initial run. 3815b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, StatesWithLockedIcon_TrialRun) { 3825b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetTrialRun(); 3835b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 3845b892326406927b709cdaf6c384d4ababf456332Ben Murdoch std::vector<EasyUnlockScreenlockStateHandler::State> states; 3855b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH); 3865b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 3875b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED); 3885b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE); 3895b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back( 3905b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED); 3915b892326406927b709cdaf6c384d4ababf456332Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 3925b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 3935b892326406927b709cdaf6c384d4ababf456332Ben Murdoch for (size_t i = 0; i < states.size(); ++i) { 3945b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState(states[i]); 3955b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()) 3965b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 3975b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()) 3985b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 3995b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(lock_handler_->IsCustomIconTooltipAutoshown()) 4005b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 4015b892326406927b709cdaf6c384d4ababf456332Ben Murdoch } 4025b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4035b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ScreenlockBridge::Get()->SetLockHandler(NULL); 4045b892326406927b709cdaf6c384d4ababf456332Ben Murdoch lock_handler_.reset(new TestLockHandler(user_email_)); 4055b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 4065b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 4075b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4085b892326406927b709cdaf6c384d4ababf456332Ben Murdoch // After the screen unlocks the tooltips should not be shown anymore. 4095b892326406927b709cdaf6c384d4ababf456332Ben Murdoch for (size_t i = 0; i < states.size(); ++i) { 4105b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState(states[i]); 4115b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()) 4125b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 4135b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_TRUE(lock_handler_->CustomIconHasTooltip()) 4145b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 4155b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_FALSE(lock_handler_->IsCustomIconTooltipAutoshown()) 4165b892326406927b709cdaf6c384d4ababf456332Ben Murdoch << "State: " << states[i]; 4175b892326406927b709cdaf6c384d4ababf456332Ben Murdoch } 4185b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 4195b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4205b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, SettingTrialRunUpdatesUI) { 4215b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 4225b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 4235b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4245b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4255b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4265b892326406927b709cdaf6c384d4ababf456332Ben Murdoch lock_handler_->GetAuthType(user_email_)); 4275b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4285b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4295b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_FALSE(lock_handler_->IsCustomIconTooltipAutoshown()); 4305b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4315b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetTrialRun(); 4325b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4335b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4345b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4355b892326406927b709cdaf6c384d4ababf456332Ben Murdoch lock_handler_->GetAuthType(user_email_)); 4365b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4375b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4385b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->IsCustomIconTooltipAutoshown()); 4395b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 4405b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 4411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, 4421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci LockScreenClearedOnStateHandlerDestruction) { 4431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 4441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 4451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 4491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_.reset(); 4531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 4551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 4561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 4571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(lock_handler_->HasCustomIcon()); 4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, StatePreservedWhenScreenUnlocks) { 4621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 4631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 4641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(NULL); 4711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(new TestLockHandler(user_email_)); 4721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 4731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 4741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 4781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 4801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, StateChangeWhileScreenUnlocked) { 4821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 4831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 4841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(NULL); 4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(new TestLockHandler(user_email_)); 4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING); 4961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 4981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 4991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 5011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 5021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 50334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kSpinnerIconId, lock_handler_->GetCustomIconId()); 5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, 5071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci HardlockEnabledAfterInitialUnlock) { 5085b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetTrialRun(); 5095b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::vector<EasyUnlockScreenlockStateHandler::State> states; 5111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back( 5121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING); 5131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back( 5141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED); 5151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH); 5161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 5171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED); 5181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE); 5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // This one should go last as changing state to AUTHENTICATED enables hard 5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // locking. 5211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci states.push_back(EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 5221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (size_t i = 0; i < states.size(); ++i) { 5241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState(states[i]); 5251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()) << "State: " << states[i]; 5261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_FALSE(lock_handler_->CustomIconHardlocksOnClick()) 5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 5281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(NULL); 5311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(new TestLockHandler(user_email_)); 5321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 5331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci for (size_t i = 0; i < states.size(); ++i) { 5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState(states[i]); 5361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()) << "State: " << states[i]; 5371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHardlocksOnClick()) 5381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci << "State: " << states[i]; 5391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 5401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 5411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 5425b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, 5435b892326406927b709cdaf6c384d4ababf456332Ben Murdoch NoPairingHardlockClearsIcon) { 5445b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 5455b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 5465b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5475b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5485b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5495b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()); 5505b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5515b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetHardlockState( 5525b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::NO_PAIRING); 5535b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5545b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 5555b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_FALSE(lock_handler_->HasCustomIcon()); 5565b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 5575b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5585b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, PairingChangedHardlock) { 5595b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 5605b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 5615b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5625b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5635b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5645b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()); 5655b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5665b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetHardlockState( 5675b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::PAIRING_CHANGED); 5685b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5695b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5705b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5715b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kHardlockedIconId, lock_handler_->GetCustomIconId()); 5725b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5735b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 5745b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 5755b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5765b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 5775b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5785b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kHardlockedIconId, lock_handler_->GetCustomIconId()); 5795b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 5805b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5815b892326406927b709cdaf6c384d4ababf456332Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, 5825b892326406927b709cdaf6c384d4ababf456332Ben Murdoch PairingChangedHardlockIneffectiveOnInitialRun) { 5835b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetTrialRun(); 5845b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5855b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->ChangeState( 5865b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 5875b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5885b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5895b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5905b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()); 5915b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5925b892326406927b709cdaf6c384d4ababf456332Ben Murdoch state_handler_->SetHardlockState( 5935b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EasyUnlockScreenlockStateHandler::PAIRING_CHANGED); 5945b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 5955b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 5965b892326406927b709cdaf6c384d4ababf456332Ben Murdoch ASSERT_TRUE(lock_handler_->HasCustomIcon()); 5975b892326406927b709cdaf6c384d4ababf456332Ben Murdoch EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()); 5985b892326406927b709cdaf6c384d4ababf456332Ben Murdoch} 5995b892326406927b709cdaf6c384d4ababf456332Ben Murdoch 6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, InactiveStateHidesIcon) { 6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 6031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_TRUE(lock_handler_->HasCustomIcon()); 6051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_INACTIVE); 6081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ASSERT_FALSE(lock_handler_->HasCustomIcon()); 6101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, 6131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AuthenticatedStateClearsPreviousAuthValue) { 6141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_INACTIVE); 6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->SetAuthValue(base::ASCIIToUTF16("xxx")); 6181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 6211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(l10n_util::GetStringUTF16( 6231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_EASY_UNLOCK_SCREENLOCK_USER_POD_AUTH_VALUE), 6241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthValue()); 6251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 6281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(base::string16(), lock_handler_->GetAuthValue()); 6301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, 6331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ChangingStateDoesNotAffectAuthValueIfAuthTypeDoesNotChange) { 6341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->SetAuthValue(base::ASCIIToUTF16("xxx")); 6351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 6381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(base::ASCIIToUTF16("xxx"), lock_handler_->GetAuthValue()); 6391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED); 6421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(base::ASCIIToUTF16("xxx"), lock_handler_->GetAuthValue()); 6431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_BLUETOOTH_CONNECTING); 6461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(base::ASCIIToUTF16("xxx"), lock_handler_->GetAuthValue()); 64734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 64834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kSpinnerIconId, lock_handler_->GetCustomIconId()); 6491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, StateChangesIgnoredIfHardlocked) { 6521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 6541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 65534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 65634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 65734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 65834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 65934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 66034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 66134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 66234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 66334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 66434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 66534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 66634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kHardlockedIconId, lock_handler_->GetCustomIconId()); 6671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 67034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 67134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 6721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 67534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 67634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 67734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 6781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 6791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 6801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTEST_F(EasyUnlockScreenlockStateHandlerTest, 68234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) LockScreenChangeableOnLockAfterHardlockReset) { 6831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 68634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 68734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 68834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(2u, lock_handler_->GetAndResetShowIconCount()); 68934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 69034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 69134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::NO_HARDLOCK); 69234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 69334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ScreenlockBridge::Get()->SetLockHandler(NULL); 69434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_.reset(new TestLockHandler(user_email_)); 69534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 69634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 6971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 6981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 6991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 70034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 70134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(2u, lock_handler_->GetAndResetShowIconCount()); 70234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_TRUE(lock_handler_->HasCustomIcon()); 7031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(NULL); 7051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_.reset(new TestLockHandler(user_email_)); 7061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 7071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 7081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 7101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->HasCustomIcon()); 7111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 7121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 71334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kLockedIconId, lock_handler_->GetCustomIconId()); 7141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 7151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci state_handler_->ChangeState( 7161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 7171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 7181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->HasCustomIcon()); 7191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_EQ(ScreenlockBridge::LockHandler::USER_CLICK, 7201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci lock_handler_->GetAuthType(user_email_)); 7211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci EXPECT_TRUE(lock_handler_->CustomIconHardlocksOnClick()); 7221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 7231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 72434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)TEST_F(EasyUnlockScreenlockStateHandlerTest, HardlockStatePersistsOverUnlocks) { 72534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->ChangeState( 72634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 72734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->SetHardlockState( 72834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 72934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(2u, lock_handler_->GetAndResetShowIconCount()); 73034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 73134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ScreenlockBridge::Get()->SetLockHandler(NULL); 73234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_.reset(new TestLockHandler(user_email_)); 73334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 73434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ScreenlockBridge::Get()->SetLockHandler(lock_handler_.get()); 73534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 73634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(1u, lock_handler_->GetAndResetShowIconCount()); 73734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 73834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 73934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) ASSERT_TRUE(lock_handler_->HasCustomIcon()); 74034680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(kHardlockedIconId, lock_handler_->GetCustomIconId()); 74134680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 74234680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) state_handler_->ChangeState( 74334680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 74434680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(0u, lock_handler_->GetAndResetShowIconCount()); 74534680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_TRUE(lock_handler_->HasCustomIcon()); 74634680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) EXPECT_EQ(ScreenlockBridge::LockHandler::OFFLINE_PASSWORD, 74734680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) lock_handler_->GetAuthType(user_email_)); 74834680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles)} 74934680572440d7894ef8dafce81d8039ed80726a2Torne (Richard Coles) 750e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben MurdochTEST_F(EasyUnlockScreenlockStateHandlerTest, NoOverrideOnlineSignin) { 751e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch lock_handler_->SetAuthType(user_email_, 752e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch ScreenlockBridge::LockHandler::ONLINE_SIGN_IN, 753e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch base::string16()); 754e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 755e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch std::vector<EasyUnlockScreenlockStateHandler::State> states; 756e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_BLUETOOTH); 757e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_NO_PHONE); 758e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED); 759e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE); 760e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back( 761e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch EasyUnlockScreenlockStateHandler::STATE_PHONE_NOT_AUTHENTICATED); 762e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_LOCKED); 763e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNLOCKABLE); 764e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_PHONE_UNSUPPORTED); 765e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch states.push_back(EasyUnlockScreenlockStateHandler::STATE_AUTHENTICATED); 766e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 767e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch for (size_t i = 0; i < states.size(); ++i) { 768e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch state_handler_->ChangeState(states[i]); 769e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch EXPECT_EQ(ScreenlockBridge::LockHandler::ONLINE_SIGN_IN, 770e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch lock_handler_->GetAuthType(user_email_)); 771e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch } 772e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 773e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch std::vector<EasyUnlockScreenlockStateHandler::HardlockState> hardlock_states; 774e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::NO_HARDLOCK); 775e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::USER_HARDLOCK); 776e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::PAIRING_CHANGED); 777e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::PAIRING_ADDED); 778e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::NO_PAIRING); 779e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch hardlock_states.push_back(EasyUnlockScreenlockStateHandler::LOGIN_FAILED); 780e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 781e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch for (size_t i = 0; i < hardlock_states.size(); ++i) { 782e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch state_handler_->SetHardlockState(hardlock_states[i]); 783e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch EXPECT_EQ(ScreenlockBridge::LockHandler::ONLINE_SIGN_IN, 784e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch lock_handler_->GetAuthType(user_email_)); 785e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch } 786e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch} 787e4256316f8b5e8d1ec0df1f7762771622a53fa63Ben Murdoch 7881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace 789