Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(486)

Side by Side Diff: chrome/browser/extensions/api/networking_private/networking_private_apitest.cc

Issue 225413005: Added event to networkingPrivate extension that portal detection is completed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/bind.h"
5 #include "base/callback.h" 6 #include "base/callback.h"
6 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/macros.h"
7 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/chromeos/login/user.h" 10 #include "chrome/browser/chromeos/login/user.h"
9 #include "chrome/browser/chromeos/login/user_manager.h" 11 #include "chrome/browser/chromeos/login/user_manager.h"
10 #include "chrome/browser/extensions/extension_apitest.h" 12 #include "chrome/browser/extensions/extension_apitest.h"
11 #include "chrome/common/chrome_switches.h" 13 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/base/ui_test_utils.h" 14 #include "chrome/test/base/ui_test_utils.h"
13 #include "extensions/common/switches.h" 15 #include "extensions/common/switches.h"
14 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
15 17
16 #if defined(OS_CHROMEOS) 18 #if defined(OS_CHROMEOS)
19 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/chromeos/net/network_portal_detector.h" 20 #include "chrome/browser/chromeos/net/network_portal_detector.h"
18 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" 21 #include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h"
19 #include "chromeos/chromeos_switches.h" 22 #include "chromeos/chromeos_switches.h"
20 #include "chromeos/dbus/cryptohome_client.h" 23 #include "chromeos/dbus/cryptohome_client.h"
21 #include "chromeos/dbus/dbus_thread_manager.h" 24 #include "chromeos/dbus/dbus_thread_manager.h"
22 #include "chromeos/dbus/shill_device_client.h" 25 #include "chromeos/dbus/shill_device_client.h"
23 #include "chromeos/dbus/shill_manager_client.h" 26 #include "chromeos/dbus/shill_manager_client.h"
24 #include "chromeos/dbus/shill_profile_client.h" 27 #include "chromeos/dbus/shill_profile_client.h"
25 #include "chromeos/dbus/shill_service_client.h" 28 #include "chromeos/dbus/shill_service_client.h"
26 #include "chromeos/network/onc/onc_utils.h" 29 #include "chromeos/network/onc/onc_utils.h"
27 #include "components/onc/onc_constants.h" 30 #include "components/onc/onc_constants.h"
28 #include "components/policy/core/browser/browser_policy_connector.h" 31 #include "components/policy/core/browser/browser_policy_connector.h"
29 #include "components/policy/core/common/external_data_fetcher.h" 32 #include "components/policy/core/common/external_data_fetcher.h"
30 #include "components/policy/core/common/mock_configuration_policy_provider.h" 33 #include "components/policy/core/common/mock_configuration_policy_provider.h"
31 #include "components/policy/core/common/policy_map.h" 34 #include "components/policy/core/common/policy_map.h"
32 #include "components/policy/core/common/policy_types.h" 35 #include "components/policy/core/common/policy_types.h"
36 #include "content/public/browser/notification_observer.h"
37 #include "content/public/browser/notification_registrar.h"
38 #include "content/public/browser/notification_service.h"
39 #include "content/public/browser/notification_source.h"
33 #include "policy/policy_constants.h" 40 #include "policy/policy_constants.h"
34 #include "third_party/cros_system_api/dbus/service_constants.h" 41 #include "third_party/cros_system_api/dbus/service_constants.h"
35 #else // !defined(OS_CHROMEOS) 42 #else // !defined(OS_CHROMEOS)
36 #include "chrome/browser/extensions/api/networking_private/networking_private_cr edentials_getter.h" 43 #include "chrome/browser/extensions/api/networking_private/networking_private_cr edentials_getter.h"
37 #include "chrome/browser/extensions/api/networking_private/networking_private_se rvice_client.h" 44 #include "chrome/browser/extensions/api/networking_private/networking_private_se rvice_client.h"
38 #include "chrome/browser/extensions/api/networking_private/networking_private_se rvice_client_factory.h" 45 #include "chrome/browser/extensions/api/networking_private/networking_private_se rvice_client_factory.h"
39 #include "components/wifi/wifi_service.h" 46 #include "components/wifi/wifi_service.h"
40 #endif // defined(OS_CHROMEOS) 47 #endif // defined(OS_CHROMEOS)
41 48
42 using testing::Return; 49 using testing::Return;
(...skipping 11 matching lines...) Expand all
54 using chromeos::ShillProfileClient; 61 using chromeos::ShillProfileClient;
55 using chromeos::ShillServiceClient; 62 using chromeos::ShillServiceClient;
56 #else // !defined(OS_CHROMEOS) 63 #else // !defined(OS_CHROMEOS)
57 using extensions::NetworkingPrivateServiceClientFactory; 64 using extensions::NetworkingPrivateServiceClientFactory;
58 #endif // defined(OS_CHROMEOS) 65 #endif // defined(OS_CHROMEOS)
59 66
60 namespace { 67 namespace {
61 68
62 #if defined(OS_CHROMEOS) 69 #if defined(OS_CHROMEOS)
63 const char kUser1ProfilePath[] = "/profile/user1/shill"; 70 const char kUser1ProfilePath[] = "/profile/user1/shill";
71
72 class TestListener : public content::NotificationObserver {
73 public:
74 TestListener(const std::string& message, const base::Closure& callback)
75 : message_(message), callback_(callback) {
76 registrar_.Add(this,
77 chrome::NOTIFICATION_EXTENSION_TEST_MESSAGE,
78 content::NotificationService::AllSources());
79 }
80
81 virtual void Observe(int type,
82 const content::NotificationSource& /* source */,
83 const content::NotificationDetails& details) OVERRIDE {
84 const std::string& message = *content::Details<std::string>(details).ptr();
85 if (message == message_)
86 callback_.Run();
87 }
88
89 private:
90 std::string message_;
91 base::Closure callback_;
92
93 content::NotificationRegistrar registrar_;
94
95 DISALLOW_COPY_AND_ASSIGN(TestListener);
96 };
64 #else // !defined(OS_CHROMEOS) 97 #else // !defined(OS_CHROMEOS)
65 98
66 // Stub Verify* methods implementation to satisfy expectations of 99 // Stub Verify* methods implementation to satisfy expectations of
67 // networking_private_apitest. 100 // networking_private_apitest.
68 // TODO(mef): Fix ChromeOS implementation to use NetworkingPrivateCrypto, 101 // TODO(mef): Fix ChromeOS implementation to use NetworkingPrivateCrypto,
69 // and update networking_private_apitest to use and expect valid data. 102 // and update networking_private_apitest to use and expect valid data.
70 // That will eliminate the need for mock implementation. 103 // That will eliminate the need for mock implementation.
71 class CryptoVerifyStub 104 class CryptoVerifyStub
72 : public extensions::NetworkingPrivateServiceClient::CryptoVerify { 105 : public extensions::NetworkingPrivateServiceClient::CryptoVerify {
73 virtual void VerifyDestination(scoped_ptr<base::ListValue> args, 106 virtual void VerifyDestination(scoped_ptr<base::ListValue> args,
(...skipping 10 matching lines...) Expand all
84 } 117 }
85 118
86 virtual void VerifyAndEncryptData(scoped_ptr<base::ListValue> args, 119 virtual void VerifyAndEncryptData(scoped_ptr<base::ListValue> args,
87 std::string* encoded_data, 120 std::string* encoded_data,
88 std::string* error) OVERRIDE { 121 std::string* error) OVERRIDE {
89 *encoded_data = "encrypted_data"; 122 *encoded_data = "encrypted_data";
90 } 123 }
91 }; 124 };
92 #endif // defined(OS_CHROMEOS) 125 #endif // defined(OS_CHROMEOS)
93 126
94 class ExtensionNetworkingPrivateApiTest : 127 class ExtensionNetworkingPrivateApiTest
95 public ExtensionApiTest, 128 : public ExtensionApiTest,
96 public testing::WithParamInterface<bool> { 129 public testing::WithParamInterface<bool> {
97 public: 130 public:
131 ExtensionNetworkingPrivateApiTest()
132 #if defined(OS_CHROMEOS)
133 : detector_(NULL)
134 #endif
135 {
136 }
137
98 bool RunNetworkingSubtest(const std::string& subtest) { 138 bool RunNetworkingSubtest(const std::string& subtest) {
99 return RunExtensionSubtest( 139 return RunExtensionSubtest(
100 "networking", "main.html?" + subtest, 140 "networking", "main.html?" + subtest,
101 kFlagEnableFileAccess | kFlagLoadAsComponent); 141 kFlagEnableFileAccess | kFlagLoadAsComponent);
102 } 142 }
103 143
104 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 144 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
105 #if defined(OS_CHROMEOS) 145 #if defined(OS_CHROMEOS)
106 EXPECT_CALL(provider_, IsInitializationComplete(_)) 146 EXPECT_CALL(provider_, IsInitializationComplete(_))
107 .WillRepeatedly(Return(true)); 147 .WillRepeatedly(Return(true));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 CHECK(user); 184 CHECK(user);
145 std::string userhash; 185 std::string userhash;
146 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( 186 DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername(
147 user->email(), 187 user->email(),
148 base::Bind(&AssignString, &userhash_)); 188 base::Bind(&AssignString, &userhash_));
149 content::RunAllPendingInMessageLoop(); 189 content::RunAllPendingInMessageLoop();
150 CHECK(!userhash_.empty()); 190 CHECK(!userhash_.empty());
151 } 191 }
152 192
153 virtual void SetUpOnMainThread() OVERRIDE { 193 virtual void SetUpOnMainThread() OVERRIDE {
194 detector_ = new NetworkPortalDetectorTestImpl();
195 NetworkPortalDetector::InitializeForTesting(detector_);
196
154 ExtensionApiTest::SetUpOnMainThread(); 197 ExtensionApiTest::SetUpOnMainThread();
155 content::RunAllPendingInMessageLoop(); 198 content::RunAllPendingInMessageLoop();
156 199
157 InitializeSanitizedUsername(); 200 InitializeSanitizedUsername();
158 201
159 ShillManagerClient::TestInterface* manager_test = 202 ShillManagerClient::TestInterface* manager_test =
160 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface(); 203 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface();
161 ShillDeviceClient::TestInterface* device_test = 204 ShillDeviceClient::TestInterface* device_test =
162 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface(); 205 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface();
163 ShillProfileClient::TestInterface* profile_test = 206 ShillProfileClient::TestInterface* profile_test =
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 content::RunAllPendingInMessageLoop(); 326 content::RunAllPendingInMessageLoop();
284 NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory( 327 NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory(
285 profile(), 328 profile(),
286 &CreateNetworkingPrivateServiceClient); 329 &CreateNetworkingPrivateServiceClient);
287 } 330 }
288 331
289 #endif // OS_CHROMEOS 332 #endif // OS_CHROMEOS
290 333
291 protected: 334 protected:
292 #if defined(OS_CHROMEOS) 335 #if defined(OS_CHROMEOS)
336 NetworkPortalDetectorTestImpl* detector() { return detector_; }
337
338 NetworkPortalDetectorTestImpl* detector_;
293 policy::MockConfigurationPolicyProvider provider_; 339 policy::MockConfigurationPolicyProvider provider_;
294 std::string userhash_; 340 std::string userhash_;
295 #endif 341 #endif
296 }; 342 };
297 343
298 // Place each subtest into a separate browser test so that the stub networking 344 // Place each subtest into a separate browser test so that the stub networking
299 // library state is reset for each subtest run. This way they won't affect each 345 // library state is reset for each subtest run. This way they won't affect each
300 // other. 346 // other.
301 347
302 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, StartConnect) { 348 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, StartConnect) {
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 502 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
457 GetWifiTDLSStatus) { 503 GetWifiTDLSStatus) {
458 EXPECT_TRUE(RunNetworkingSubtest("getWifiTDLSStatus")) << message_; 504 EXPECT_TRUE(RunNetworkingSubtest("getWifiTDLSStatus")) << message_;
459 } 505 }
460 #endif 506 #endif
461 507
462 // NetworkPortalDetector is only enabled for Chrome OS. 508 // NetworkPortalDetector is only enabled for Chrome OS.
463 #if defined(OS_CHROMEOS) 509 #if defined(OS_CHROMEOS)
464 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest, 510 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
465 GetCaptivePortalStatus) { 511 GetCaptivePortalStatus) {
466 NetworkPortalDetectorTestImpl* detector = new NetworkPortalDetectorTestImpl();
467 NetworkPortalDetector::InitializeForTesting(detector);
468 NetworkPortalDetector::CaptivePortalState state; 512 NetworkPortalDetector::CaptivePortalState state;
469 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 513 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
470 detector->SetDetectionResultsForTesting("stub_ethernet", state); 514 detector()->SetDetectionResultsForTesting("stub_ethernet", state);
471 515
472 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE; 516 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE;
473 detector->SetDetectionResultsForTesting("stub_wifi1", state); 517 detector()->SetDetectionResultsForTesting("stub_wifi1", state);
474 518
475 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 519 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
476 detector->SetDetectionResultsForTesting("stub_wifi2", state); 520 detector()->SetDetectionResultsForTesting("stub_wifi2", state);
477 521
478 state.status = 522 state.status =
479 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 523 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
480 detector->SetDetectionResultsForTesting("stub_cellular1", state); 524 detector()->SetDetectionResultsForTesting("stub_cellular1", state);
481 525
482 EXPECT_TRUE(RunNetworkingSubtest("getCaptivePortalStatus")) << message_; 526 EXPECT_TRUE(RunNetworkingSubtest("getCaptivePortalStatus")) << message_;
483 } 527 }
528
529 IN_PROC_BROWSER_TEST_P(ExtensionNetworkingPrivateApiTest,
530 CaptivePortalNotification) {
531 detector()->SetDefaultNetworkPathForTesting("wifi");
532 NetworkPortalDetector::CaptivePortalState state;
533 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE;
534 detector()->SetDetectionResultsForTesting("wifi", state);
535
536 TestListener listener(
537 "notifyPortalDetectorObservers",
538 base::Bind(&NetworkPortalDetectorTestImpl::NotifyObserversForTesting,
539 base::Unretained(detector())));
540 EXPECT_TRUE(RunNetworkingSubtest("captivePortalNotification")) << message_;
541 }
484 #endif // defined(OS_CHROMEOS) 542 #endif // defined(OS_CHROMEOS)
485 543
486 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation, 544 INSTANTIATE_TEST_CASE_P(ExtensionNetworkingPrivateApiTestInstantiation,
487 ExtensionNetworkingPrivateApiTest, 545 ExtensionNetworkingPrivateApiTest,
488 testing::Bool()); 546 testing::Bool());
489 547
490 } // namespace 548 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698