| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/settings/chromeos/easy_unlock_settings_handler
.h" | 5 #include "chrome/browser/ui/webui/settings/chromeos/easy_unlock_settings_handler
.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "chrome/browser/signin/easy_unlock_service.h" | 8 #include "chrome/browser/signin/easy_unlock_service.h" |
| 9 #include "chrome/browser/signin/easy_unlock_service_factory.h" | 9 #include "chrome/browser/signin/easy_unlock_service_factory.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/public/browser/web_ui_data_source.h" | 11 #include "content/public/browser/web_ui_data_source.h" |
| 12 #include "content/public/test/test_browser_thread_bundle.h" | 12 #include "content/public/test/test_browser_thread_bundle.h" |
| 13 #include "content/public/test/test_web_ui.h" | 13 #include "content/public/test/test_web_ui.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 15 |
| 16 namespace chromeos { | 16 namespace chromeos { |
| 17 namespace settings { | 17 namespace settings { |
| 18 | 18 |
| 19 namespace { | 19 namespace { |
| 20 | 20 |
| 21 class FakeEasyUnlockService : public EasyUnlockService { | 21 class FakeEasyUnlockService : public EasyUnlockService { |
| 22 public: | 22 public: |
| 23 explicit FakeEasyUnlockService(Profile* profile) | 23 explicit FakeEasyUnlockService(Profile* profile) |
| 24 : EasyUnlockService(profile), turn_off_status_(IDLE), is_allowed_(true) {} | 24 : EasyUnlockService(profile), |
| 25 turn_off_status_(IDLE), |
| 26 is_allowed_(true), |
| 27 is_enabled_(false) {} |
| 25 | 28 |
| 26 TurnOffFlowStatus GetTurnOffFlowStatus() const override { | 29 TurnOffFlowStatus GetTurnOffFlowStatus() const override { |
| 27 return turn_off_status_; | 30 return turn_off_status_; |
| 28 } | 31 } |
| 29 | 32 |
| 30 bool IsAllowed() const override { return is_allowed_; } | 33 bool IsAllowed() const override { return is_allowed_; } |
| 34 void set_is_allowed(bool is_allowed) { is_allowed_ = is_allowed; } |
| 31 | 35 |
| 32 void set_is_allowed(bool is_allowed) { is_allowed_ = is_allowed; } | 36 bool IsEnabled() const override { return is_enabled_; } |
| 37 void set_is_enabled(bool is_enabled) { is_enabled_ = is_enabled; } |
| 33 | 38 |
| 34 void RunTurnOffFlow() override { | 39 void RunTurnOffFlow() override { |
| 35 turn_off_status_ = PENDING; | 40 turn_off_status_ = PENDING; |
| 36 NotifyTurnOffOperationStatusChanged(); | 41 NotifyTurnOffOperationStatusChanged(); |
| 37 } | 42 } |
| 38 | 43 |
| 39 void ResetTurnOffFlow() override { | 44 void ResetTurnOffFlow() override { |
| 40 turn_off_status_ = IDLE; | 45 turn_off_status_ = IDLE; |
| 41 NotifyTurnOffOperationStatusChanged(); | 46 NotifyTurnOffOperationStatusChanged(); |
| 42 } | 47 } |
| (...skipping 26 matching lines...) Expand all Loading... |
| 69 void SetAutoPairingResult(bool success, const std::string& error) override {} | 74 void SetAutoPairingResult(bool success, const std::string& error) override {} |
| 70 | 75 |
| 71 void InitializeInternal() override {} | 76 void InitializeInternal() override {} |
| 72 void ShutdownInternal() override {} | 77 void ShutdownInternal() override {} |
| 73 bool IsAllowedInternal() const override { return false; } | 78 bool IsAllowedInternal() const override { return false; } |
| 74 void OnWillFinalizeUnlock(bool success) override {} | 79 void OnWillFinalizeUnlock(bool success) override {} |
| 75 void OnSuspendDoneInternal() override {} | 80 void OnSuspendDoneInternal() override {} |
| 76 | 81 |
| 77 TurnOffFlowStatus turn_off_status_; | 82 TurnOffFlowStatus turn_off_status_; |
| 78 bool is_allowed_; | 83 bool is_allowed_; |
| 84 bool is_enabled_; |
| 79 }; | 85 }; |
| 80 | 86 |
| 81 class TestEasyUnlockSettingsHandler : public EasyUnlockSettingsHandler { | 87 class TestEasyUnlockSettingsHandler : public EasyUnlockSettingsHandler { |
| 82 public: | 88 public: |
| 83 explicit TestEasyUnlockSettingsHandler(Profile* profile) | 89 explicit TestEasyUnlockSettingsHandler(Profile* profile) |
| 84 : EasyUnlockSettingsHandler(profile) {} | 90 : EasyUnlockSettingsHandler(profile) {} |
| 85 | 91 |
| 86 using EasyUnlockSettingsHandler::set_web_ui; | 92 using EasyUnlockSettingsHandler::set_web_ui; |
| 87 }; | 93 }; |
| 88 | 94 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 105 profile_ = builder.Build(); | 111 profile_ = builder.Build(); |
| 106 } | 112 } |
| 107 | 113 |
| 108 Profile* profile() { return profile_.get(); } | 114 Profile* profile() { return profile_.get(); } |
| 109 content::TestWebUI* web_ui() { return &web_ui_; } | 115 content::TestWebUI* web_ui() { return &web_ui_; } |
| 110 FakeEasyUnlockService* fake_easy_unlock_service() { | 116 FakeEasyUnlockService* fake_easy_unlock_service() { |
| 111 return static_cast<FakeEasyUnlockService*>( | 117 return static_cast<FakeEasyUnlockService*>( |
| 112 EasyUnlockService::Get(profile_.get())); | 118 EasyUnlockService::Get(profile_.get())); |
| 113 } | 119 } |
| 114 | 120 |
| 121 void VerifyEnabledStatusCallback(size_t expected_total_calls, |
| 122 bool expected_status) { |
| 123 std::string event; |
| 124 bool status; |
| 125 |
| 126 EXPECT_EQ(expected_total_calls, web_ui_.call_data().size()); |
| 127 |
| 128 const content::TestWebUI::CallData& data = *web_ui_.call_data().back(); |
| 129 EXPECT_EQ("cr.webUIListenerCallback", data.function_name()); |
| 130 ASSERT_TRUE(data.arg1()->GetAsString(&event)); |
| 131 EXPECT_EQ("easy-unlock-enabled-status", event); |
| 132 ASSERT_TRUE(data.arg2()->GetAsBoolean(&status)); |
| 133 |
| 134 EXPECT_EQ(expected_status, status); |
| 135 } |
| 136 |
| 115 void VerifyTurnOffStatusCallback(size_t expected_total_calls, | 137 void VerifyTurnOffStatusCallback(size_t expected_total_calls, |
| 116 const std::string& expected_status) { | 138 const std::string& expected_status) { |
| 117 std::string event; | 139 std::string event; |
| 118 std::string status; | 140 std::string status; |
| 119 | 141 |
| 120 EXPECT_EQ(expected_total_calls, web_ui_.call_data().size()); | 142 EXPECT_EQ(expected_total_calls, web_ui_.call_data().size()); |
| 121 | 143 |
| 122 const content::TestWebUI::CallData& data = *web_ui_.call_data().back(); | 144 const content::TestWebUI::CallData& data = *web_ui_.call_data().back(); |
| 123 EXPECT_EQ("cr.webUIListenerCallback", data.function_name()); | 145 EXPECT_EQ("cr.webUIListenerCallback", data.function_name()); |
| 124 ASSERT_TRUE(data.arg1()->GetAsString(&event)); | 146 ASSERT_TRUE(data.arg1()->GetAsString(&event)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 141 content::WebUIDataSource::Add(profile(), data_source); | 163 content::WebUIDataSource::Add(profile(), data_source); |
| 142 handler.reset( | 164 handler.reset( |
| 143 EasyUnlockSettingsHandler::Create(data_source, profile())); | 165 EasyUnlockSettingsHandler::Create(data_source, profile())); |
| 144 EXPECT_TRUE(handler.get()); | 166 EXPECT_TRUE(handler.get()); |
| 145 | 167 |
| 146 fake_easy_unlock_service()->set_is_allowed(false); | 168 fake_easy_unlock_service()->set_is_allowed(false); |
| 147 handler.reset(EasyUnlockSettingsHandler::Create(data_source, profile())); | 169 handler.reset(EasyUnlockSettingsHandler::Create(data_source, profile())); |
| 148 EXPECT_FALSE(handler.get()); | 170 EXPECT_FALSE(handler.get()); |
| 149 } | 171 } |
| 150 | 172 |
| 173 TEST_F(EasyUnlockSettingsHandlerTest, EnabledStatus) { |
| 174 scoped_ptr<EasyUnlockSettingsHandler> handler; |
| 175 handler.reset(new TestEasyUnlockSettingsHandler(profile())); |
| 176 handler->set_web_ui(web_ui()); |
| 177 |
| 178 // Test the C++ -> JS push path. |
| 179 handler->SendEnabledStatus(); |
| 180 VerifyEnabledStatusCallback(1U, false); |
| 181 |
| 182 fake_easy_unlock_service()->set_is_enabled(true); |
| 183 handler->SendEnabledStatus(); |
| 184 VerifyEnabledStatusCallback(2U, true); |
| 185 |
| 186 // Test the JS -> C++ -> JS callback path. |
| 187 base::ListValue list_args; |
| 188 list_args.Append(new base::StringValue("test-callback-id")); |
| 189 handler->HandleGetEnabledStatus(&list_args); |
| 190 |
| 191 std::string callback_id; |
| 192 bool enabled_status; |
| 193 |
| 194 EXPECT_EQ(3U, web_ui()->call_data().size()); |
| 195 |
| 196 const content::TestWebUI::CallData& data = *web_ui()->call_data().back(); |
| 197 EXPECT_EQ("cr.webUIResponse", data.function_name()); |
| 198 |
| 199 ASSERT_TRUE(data.arg1()->GetAsString(&callback_id)); |
| 200 EXPECT_EQ("test-callback-id", callback_id); |
| 201 |
| 202 ASSERT_TRUE(data.arg2()->GetAsBoolean(&enabled_status)); |
| 203 EXPECT_TRUE(enabled_status); |
| 204 } |
| 205 |
| 151 TEST_F(EasyUnlockSettingsHandlerTest, TurnOffStatus) { | 206 TEST_F(EasyUnlockSettingsHandlerTest, TurnOffStatus) { |
| 152 scoped_ptr<EasyUnlockSettingsHandler> handler; | 207 scoped_ptr<EasyUnlockSettingsHandler> handler; |
| 153 handler.reset(new TestEasyUnlockSettingsHandler(profile())); | 208 handler.reset(new TestEasyUnlockSettingsHandler(profile())); |
| 154 handler->set_web_ui(web_ui()); | 209 handler->set_web_ui(web_ui()); |
| 155 | 210 |
| 156 handler->HandleGetTurnOffFlowStatus(nullptr); | 211 handler->HandleGetTurnOffFlowStatus(nullptr); |
| 157 VerifyTurnOffStatusCallback(1U, "idle"); | 212 VerifyTurnOffStatusCallback(1U, "idle"); |
| 158 | 213 |
| 159 handler->HandleRequestTurnOff(nullptr); | 214 handler->HandleRequestTurnOff(nullptr); |
| 160 VerifyTurnOffStatusCallback(2U, "pending"); | 215 VerifyTurnOffStatusCallback(2U, "pending"); |
| 161 | 216 |
| 162 handler->HandleGetTurnOffFlowStatus(nullptr); | 217 handler->HandleGetTurnOffFlowStatus(nullptr); |
| 163 VerifyTurnOffStatusCallback(3U, "pending"); | 218 VerifyTurnOffStatusCallback(3U, "pending"); |
| 164 | 219 |
| 165 handler->HandlePageDismissed(nullptr); | 220 handler->HandlePageDismissed(nullptr); |
| 166 VerifyTurnOffStatusCallback(4U, "idle"); | 221 VerifyTurnOffStatusCallback(4U, "idle"); |
| 167 | 222 |
| 168 fake_easy_unlock_service()->SetTurnOffFailForTest(); | 223 fake_easy_unlock_service()->SetTurnOffFailForTest(); |
| 169 VerifyTurnOffStatusCallback(5U, "server-error"); | 224 VerifyTurnOffStatusCallback(5U, "server-error"); |
| 170 | 225 |
| 171 handler->HandleGetTurnOffFlowStatus(nullptr); | 226 handler->HandleGetTurnOffFlowStatus(nullptr); |
| 172 VerifyTurnOffStatusCallback(6U, "server-error"); | 227 VerifyTurnOffStatusCallback(6U, "server-error"); |
| 173 } | 228 } |
| 174 | 229 |
| 175 } // namespace settings | 230 } // namespace settings |
| 176 } // namespace chromeos | 231 } // namespace chromeos |
| OLD | NEW |