15f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Copyright 2013 The Chromium Authors. All rights reserved. 25f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// Use of this source code is governed by a BSD-style license that can be 35f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// found in the LICENSE file. 45f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 50bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#include "base/bind.h" 60bc735ffcfb223c0186419547abaa5c84482663eChris Lattner#include "base/callback.h" 75f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/command_line.h" 85f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "base/macros.h" 92f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#include "chrome/browser/browser_process.h" 102f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#include "chrome/browser/extensions/extension_apitest.h" 112f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#include "chrome/test/base/ui_test_utils.h" 122f7f5b1f5ff023cb8c4008ae53a12b09e3ea2622James Dennett#include "components/user_manager/user.h" 135f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "components/user_manager/user_manager.h" 145f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "extensions/common/switches.h" 155f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "testing/gmock/include/gmock/gmock.h" 165f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 175f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#if defined(OS_CHROMEOS) 18686775deca8b8685eb90801495880e3abdd844c2Chris Lattner#include "chrome/browser/chromeos/login/helper.h" 190ee7d94ece918f22e67d0f09fcbc631c91091adcArgyrios Kyrtzidis#include "chrome/browser/chromeos/net/network_portal_detector_test_impl.h" 2030a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth#include "chromeos/chromeos_switches.h" 21ae50fa0a9e7217b043ed4ffe175af4b26dc90f34Chris Lattner#include "chromeos/dbus/cryptohome_client.h" 2230a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth#include "chromeos/dbus/dbus_thread_manager.h" 23b328ee55d86acaafd55ebf0e0c84766b29459530Chad Rosier#include "chromeos/dbus/shill_device_client.h" 2430a2e16f6c27f888dd11eba6bbbae1e980078fcbChandler Carruth#include "chromeos/dbus/shill_ipconfig_client.h" 259dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner#include "chromeos/dbus/shill_manager_client.h" 269c728dc4d8da89c73fcae74c9e72d7a83ffd7b6dTed Kremenek#include "chromeos/dbus/shill_profile_client.h" 272b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "chromeos/dbus/shill_service_client.h" 282b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "chromeos/login/user_names.h" 2906159e878569e5f39bf0e8f11b84ac3ad0970597Chris Lattner#include "chromeos/network/onc/onc_utils.h" 309c728dc4d8da89c73fcae74c9e72d7a83ffd7b6dTed Kremenek#include "chromeos/network/portal_detector/network_portal_detector.h" 319c728dc4d8da89c73fcae74c9e72d7a83ffd7b6dTed Kremenek#include "components/onc/onc_constants.h" 325f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#include "components/policy/core/browser/browser_policy_connector.h" 331eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#include "components/policy/core/common/external_data_fetcher.h" 34a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek#include "components/policy/core/common/mock_configuration_policy_provider.h" 351eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#include "components/policy/core/common/policy_map.h" 364bd495c2a4fc742dde435115f66c722217975bd2James Dennett#include "components/policy/core/common/policy_types.h" 374bd495c2a4fc742dde435115f66c722217975bd2James Dennett#include "content/public/browser/notification_observer.h" 382b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "content/public/browser/notification_registrar.h" 392b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "content/public/browser/notification_service.h" 40af50aab0c317462129d73ae8000c6394c718598dJames Dennett#include "content/public/browser/notification_source.h" 41af50aab0c317462129d73ae8000c6394c718598dJames Dennett#include "extensions/browser/notification_types.h" 42f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor#include "policy/policy_constants.h" 432b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "third_party/cros_system_api/dbus/service_constants.h" 442b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#else // !defined(OS_CHROMEOS) 451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#include "chrome/browser/extensions/api/networking_private/networking_private_credentials_getter.h" 462b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "chrome/browser/extensions/api/networking_private/networking_private_service_client.h" 471eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#include "chrome/browser/extensions/api/networking_private/networking_private_service_client_factory.h" 482b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#include "components/wifi/fake_wifi_service.h" 492b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#endif // defined(OS_CHROMEOS) 502b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner 512b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner// TODO(stevenjb/mef): Clean these tests up. crbug.com/371442 522b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner 532b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing testing::Return; 541eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpusing testing::_; 55f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor 56f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor#if defined(OS_CHROMEOS) 571eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpusing chromeos::CryptohomeClient; 582b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::DBUS_METHOD_CALL_SUCCESS; 592b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::DBusMethodCallStatus; 6031d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregorusing chromeos::DBusThreadManager; 6131d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregorusing chromeos::NetworkPortalDetector; 6231d375f056447d4e2418275d4913661d3bfedb3eDouglas Gregorusing chromeos::NetworkPortalDetectorTestImpl; 63f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregorusing chromeos::ShillDeviceClient; 642b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::ShillIPConfigClient; 652b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::ShillManagerClient; 662b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::ShillProfileClient; 672b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing chromeos::ShillServiceClient; 68f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor#else // !defined(OS_CHROMEOS) 692b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattnerusing extensions::NetworkingPrivateServiceClientFactory; 701eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#endif // defined(OS_CHROMEOS) 711eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 72f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregornamespace { 73f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor 74f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor#if defined(OS_CHROMEOS) 75f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregorconst char kUser1ProfilePath[] = "/profile/user1/shill"; 76f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregorconst char kWifiDevicePath[] = "/device/stub_wifi_device1"; 773201f382956ed9beee9fb31229c2835c1208889cChandler Carruthconst char kCellularDevicePath[] = "/device/stub_cellular_device1"; 783201f382956ed9beee9fb31229c2835c1208889cChandler Carruthconst char kIPConfigPath[] = "/ipconfig/ipconfig1"; 793201f382956ed9beee9fb31229c2835c1208889cChandler Carruth 80f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregorclass TestListener : public content::NotificationObserver { 81f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor public: 82f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor TestListener(const std::string& message, const base::Closure& callback) 83f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor : message_(message), callback_(callback) { 843201f382956ed9beee9fb31229c2835c1208889cChandler Carruth registrar_.Add(this, 85f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor extensions::NOTIFICATION_EXTENSION_TEST_MESSAGE, 86f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor content::NotificationService::AllSources()); 875f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer } 885f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 89bcc2a67e5180612417727cbdd8afd0f79fdf726dChris Lattner virtual void Observe(int type, 905a4374812c56aa60672e291b07e14d3696bbb5a6Argyrios Kyrtzidis const content::NotificationSource& /* source */, 915a4374812c56aa60672e291b07e14d3696bbb5a6Argyrios Kyrtzidis const content::NotificationDetails& details) OVERRIDE { 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const std::string& message = *content::Details<std::string>(details).ptr(); 93de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner if (message == message_) 945f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer callback_.Run(); 959ebac5e0dab6f99717e3ff169c45048966146b2eChris Lattner } 965f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 97f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor private: 981eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump std::string message_; 99de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner base::Closure callback_; 100de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner 1011eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump content::NotificationRegistrar registrar_; 102f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor 103b7489d8129136437953d412e2a6cf0ef87f4a461Chris Lattner DISALLOW_COPY_AND_ASSIGN(TestListener); 104f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor}; 105f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor#else // !defined(OS_CHROMEOS) 106f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor 107b7489d8129136437953d412e2a6cf0ef87f4a461Chris Lattner// Stub Verify* methods implementation to satisfy expectations of 108b7489d8129136437953d412e2a6cf0ef87f4a461Chris Lattner// networking_private_apitest. 1091eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump// TODO(mef): Fix ChromeOS implementation to use NetworkingPrivateCrypto, 1106fda54c19321673965536b0a8f7236f635cf9730Chris Lattner// and update networking_private_apitest to use and expect valid data. 111f62d43d2afe1960755a1b5813cae1e5983bcac1bDouglas Gregor// That will eliminate the need for mock implementation. 112de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattnerclass CryptoVerifyStub 113de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner : public extensions::NetworkingPrivateServiceClient::CryptoVerify { 1144d10ef18c32eae35be07e0d8d18b5ff485b4c5f9Chris Lattner virtual void VerifyDestination(const Credentials& verification_properties, 1156fda54c19321673965536b0a8f7236f635cf9730Chris Lattner bool* verified, 116de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner std::string* error) OVERRIDE { 117de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner *verified = true; 1189dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner } 119de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner 1209dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner virtual void VerifyAndEncryptCredentials( 1215f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const std::string& network_guid, 1221eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump const Credentials& credentials, 123de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner const VerifyAndEncryptCredentialsCallback& callback) OVERRIDE { 124de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner callback.Run("encrypted_credentials", ""); 125d1623a81992a24abbfcd5520b32a0dd90857b8a8Chris Lattner } 126de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner 1279dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner virtual void VerifyAndEncryptData(const Credentials& verification_properties, 1289dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner const std::string& data, 1294d10ef18c32eae35be07e0d8d18b5ff485b4c5f9Chris Lattner std::string* base64_encoded_ciphertext, 1301eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump std::string* error) OVERRIDE { 131a64ccefdf0ea4e03ec88805d71b0af74950c7472Argyrios Kyrtzidis *base64_encoded_ciphertext = "encrypted_data"; 132a64ccefdf0ea4e03ec88805d71b0af74950c7472Argyrios Kyrtzidis } 133a64ccefdf0ea4e03ec88805d71b0af74950c7472Argyrios Kyrtzidis}; 134a64ccefdf0ea4e03ec88805d71b0af74950c7472Argyrios Kyrtzidis#endif // defined(OS_CHROMEOS) 135de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner 136de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattnerclass ExtensionNetworkingPrivateApiTest 137de7aeefc5573d669ed476d7bda7a8940d3bcadb7Chris Lattner : public ExtensionApiTest { 1389dc1f530c086d2c16f8cba758b0f59a5bf41323aChris Lattner public: 1391eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump ExtensionNetworkingPrivateApiTest() 1404bd495c2a4fc742dde435115f66c722217975bd2James Dennett#if defined(OS_CHROMEOS) 1414bd495c2a4fc742dde435115f66c722217975bd2James Dennett : detector_(NULL), 1424bd495c2a4fc742dde435115f66c722217975bd2James Dennett service_test_(NULL), 1434bd495c2a4fc742dde435115f66c722217975bd2James Dennett manager_test_(NULL), 1444bd495c2a4fc742dde435115f66c722217975bd2James Dennett device_test_(NULL) 1455f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer#endif 1461eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump { 1474bd495c2a4fc742dde435115f66c722217975bd2James Dennett } 1485f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 1494bd495c2a4fc742dde435115f66c722217975bd2James Dennett bool RunNetworkingSubtest(const std::string& subtest) { 1504bd495c2a4fc742dde435115f66c722217975bd2James Dennett return RunExtensionSubtest( 1515f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "networking", "main.html?" + subtest, 1525f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer kFlagEnableFileAccess | kFlagLoadAsComponent); 1535f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer } 1545f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 1555f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 1561eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#if defined(OS_CHROMEOS) 1574bd495c2a4fc742dde435115f66c722217975bd2James Dennett EXPECT_CALL(provider_, IsInitializationComplete(_)) 1584bd495c2a4fc742dde435115f66c722217975bd2James Dennett .WillRepeatedly(Return(true)); 1594bd495c2a4fc742dde435115f66c722217975bd2James Dennett policy::BrowserPolicyConnector::SetPolicyProviderForTesting(&provider_); 1604bd495c2a4fc742dde435115f66c722217975bd2James Dennett#endif 1614bd495c2a4fc742dde435115f66c722217975bd2James Dennett 162dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin ExtensionApiTest::SetUpInProcessBrowserTestFixture(); 163dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin } 164dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin 165dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin#if defined(OS_CHROMEOS) 166dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin static void AssignString(std::string* out, 167dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin DBusMethodCallStatus call_status, 1681216015de0a958860082a7fa8b504547197686c3James Dennett const std::string& result) { 169dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin CHECK_EQ(call_status, DBUS_METHOD_CALL_SUCCESS); 1704a0beb20655ae9f28d519e088c6ec8dceec59eddJordan Rose *out = result; 171dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin } 172dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin 173dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 1748cc488fefb2fb04bc8d5398da29f0182f97934cfChris Lattner ExtensionApiTest::SetUpCommandLine(command_line); 175651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines // Whitelist the extension ID of the test extension. 176b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner command_line->AppendSwitchASCII( 1775f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer extensions::switches::kWhitelistedExtensionID, 1785f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer "epcifkihnkjgphfkloaaleeakhpmgdmn"); 1795f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer 1805f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer // TODO(pneubeck): Remove the following hack, once the NetworkingPrivateAPI 1815f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer // uses the ProfileHelper to obtain the userhash crbug/238623. 1825f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const std::string login_user = chromeos::login::CanonicalizeUserID( 1835f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer command_line->GetSwitchValueNative(chromeos::switches::kLoginUser)); 1845f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer const std::string sanitized_user = 1855f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer CryptohomeClient::GetStubSanitizedUsername(login_user); 1861eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump command_line->AppendSwitchASCII(chromeos::switches::kLoginProfile, 1876fda54c19321673965536b0a8f7236f635cf9730Chris Lattner sanitized_user); 1886fda54c19321673965536b0a8f7236f635cf9730Chris Lattner } 1896fda54c19321673965536b0a8f7236f635cf9730Chris Lattner 1905f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer void InitializeSanitizedUsername() { 191651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 1925f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer user_manager::User* user = user_manager->GetActiveUser(); 1935f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer CHECK(user); 1945f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer std::string userhash; 1955f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer DBusThreadManager::Get()->GetCryptohomeClient()->GetSanitizedUsername( 1965f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer user->email(), 1975f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer base::Bind(&AssignString, &userhash_)); 1985f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer content::RunAllPendingInMessageLoop(); 1991eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump CHECK(!userhash_.empty()); 200311ff02fae0392bee6abe7723cdf5a69b2899a47Chris Lattner } 201311ff02fae0392bee6abe7723cdf5a69b2899a47Chris Lattner 2021eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump void SetupCellular() { 203e80a59cc41d42a970466cb020b6f44c5b8831d70Chris Lattner // Add a Cellular Device and set a couple of properties. 204e80a59cc41d42a970466cb020b6f44c5b8831d70Chris Lattner device_test_->AddDevice( 2051eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump kCellularDevicePath, shill::kTypeCellular, "stub_cellular_device1"); 2065f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer device_test_->SetDeviceProperty(kCellularDevicePath, 207782f2f52b78d8ca785110398a7f7b56b830b9ac7Ted Kremenek shill::kCarrierProperty, 2081eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump base::StringValue("Cellular1_Carrier")); 209a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek base::DictionaryValue home_provider; 210a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek home_provider.SetString("name", "Cellular1_Provider"); 211a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek home_provider.SetString("country", "us"); 2121eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump device_test_->SetDeviceProperty(kCellularDevicePath, 213a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek shill::kHomeProviderProperty, 214a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek home_provider); 215a898283deb689b2454f3a966ef1cbf81bcb3e3e4Ted Kremenek AddService("stub_cellular1", "cellular1", 21619a95bcf3561ed977c48d5f2a2793b60a8c8e573Ted Kremenek shill::kTypeCellular, shill::kStateIdle); 2170a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner // Note: These properties will show up in a "Cellular" object in ONC. 218af50aab0c317462129d73ae8000c6394c718598dJames Dennett service_test_->SetServiceProperty( 219af50aab0c317462129d73ae8000c6394c718598dJames Dennett "stub_cellular1", 2200a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner shill::kAutoConnectProperty, 2211f19c76253ae95153d84355c80342e8eaab81fe1Michael Han base::FundamentalValue(true)); 2220a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner service_test_->SetServiceProperty( 2230a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner "stub_cellular1", 2240a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner shill::kNetworkTechnologyProperty, 2250a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner base::StringValue(shill::kNetworkTechnologyGsm)); 2260a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner service_test_->SetServiceProperty( 2270a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner "stub_cellular1", 2280a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner shill::kActivationStateProperty, 2290a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner base::StringValue(shill::kActivationStateNotActivated)); 2304a2ef80d896c1bac38ce113ec19a8d509a619288Nico Weber service_test_->SetServiceProperty( 2310a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner "stub_cellular1", 2320a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner shill::kRoamingStateProperty, 2334a2ef80d896c1bac38ce113ec19a8d509a619288Nico Weber base::StringValue(shill::kRoamingStateHome)); 2340a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner content::RunAllPendingInMessageLoop(); 2350a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner } 2360a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2374a2ef80d896c1bac38ce113ec19a8d509a619288Nico Weber void AddService(const std::string& service_path, 2380a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner const std::string& name, 2390a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner const std::string& type, 2400a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner const std::string& state) { 2410a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner service_test_->AddService( 2420a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner service_path, service_path + "_guid", name, 2430a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner type, state, true /* add_to_visible */); 2440a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner } 2450a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2460a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner virtual void SetUpOnMainThread() OVERRIDE { 247af50aab0c317462129d73ae8000c6394c718598dJames Dennett detector_ = new NetworkPortalDetectorTestImpl(); 2480a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner NetworkPortalDetector::InitializeForTesting(detector_); 2490a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2500a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner ExtensionApiTest::SetUpOnMainThread(); 251a83f4d2315dbeb3914868f1ccb8e74fb2ccdbb0cArgyrios Kyrtzidis content::RunAllPendingInMessageLoop(); 2520a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2530a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner InitializeSanitizedUsername(); 2540a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2550a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner DBusThreadManager* dbus_manager = DBusThreadManager::Get(); 2560a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner manager_test_ = dbus_manager->GetShillManagerClient()->GetTestInterface(); 2570a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner service_test_ = dbus_manager->GetShillServiceClient()->GetTestInterface(); 2580a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner device_test_ = dbus_manager->GetShillDeviceClient()->GetTestInterface(); 2590a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner 2600a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner ShillIPConfigClient::TestInterface* ip_config_test = 2610a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner dbus_manager->GetShillIPConfigClient()->GetTestInterface(); 2620a76aae8c03cb7dd7bdbe683485560afaf695959Chris Lattner ShillProfileClient::TestInterface* profile_test = 2631eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump dbus_manager->GetShillProfileClient()->GetTestInterface(); 264af50aab0c317462129d73ae8000c6394c718598dJames Dennett 265af50aab0c317462129d73ae8000c6394c718598dJames Dennett device_test_->ClearDevices(); 266af50aab0c317462129d73ae8000c6394c718598dJames Dennett service_test_->ClearServices(); 267a50bd54164393ca3cd08016e7099bdeb531b5014Chris Lattner 2685c5db4e94bd1243ba92563acba51ba66afa94917Chris Lattner // Sends a notification about the added profile. 269a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek profile_test->AddProfile(kUser1ProfilePath, userhash_); 270af50aab0c317462129d73ae8000c6394c718598dJames Dennett 2715c5db4e94bd1243ba92563acba51ba66afa94917Chris Lattner // Enable technologies. 272a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek manager_test_->AddTechnology("wimax", true); 2735c5db4e94bd1243ba92563acba51ba66afa94917Chris Lattner 274a50bd54164393ca3cd08016e7099bdeb531b5014Chris Lattner // Add IPConfigs 2751eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump base::DictionaryValue ipconfig; 276af50aab0c317462129d73ae8000c6394c718598dJames Dennett ipconfig.SetStringWithoutPathExpansion(shill::kAddressProperty, "0.0.0.0"); 277b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner ipconfig.SetStringWithoutPathExpansion(shill::kGatewayProperty, "0.0.0.1"); 278b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner ipconfig.SetIntegerWithoutPathExpansion(shill::kPrefixlenProperty, 0); 279a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek ipconfig.SetStringWithoutPathExpansion(shill::kMethodProperty, 280a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek shill::kTypeIPv4); 2811eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump ip_config_test->AddIPConfig(kIPConfigPath, ipconfig); 2823b4d5e955e819dd3a4bed37ea2e47d6e4cb05274Chris Lattner 2831eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump // Add Devices 284402785357ab053dd53f4fdd858b9630a5e0f8badChandler Carruth device_test_->AddDevice( 285df7c17a8d02fe09a3466786bae3e40fc3252687aChris Lattner kWifiDevicePath, shill::kTypeWifi, "stub_wifi_device1"); 2869c728dc4d8da89c73fcae74c9e72d7a83ffd7b6dTed Kremenek base::ListValue wifi_ip_configs; 287642116259e8df6286063a17361c20e95b5017a0aChandler Carruth wifi_ip_configs.AppendString(kIPConfigPath); 288a77c031cb66f75d22672070052cc6e0205289ff8Chandler Carruth device_test_->SetDeviceProperty( 2899c728dc4d8da89c73fcae74c9e72d7a83ffd7b6dTed Kremenek kWifiDevicePath, shill::kIPConfigsProperty, wifi_ip_configs); 29064e462dff03492c586be0349ec6aa3ad5cd92720Douglas Gregor device_test_->SetDeviceProperty(kWifiDevicePath, 29164e462dff03492c586be0349ec6aa3ad5cd92720Douglas Gregor shill::kAddressProperty, 2925c38b6388dc44dcb8467a9e0f22d93db7221717eChris Lattner base::StringValue("001122aabbcc")); 293a543016fe07030f695d6d56fd22c8c8da617e0d7Douglas Gregor 2941eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump // Add Services 295aae58b0c3efb5fa9f97a3e4b1c1a2d31077efe5bDouglas Gregor AddService("stub_ethernet", "eth0", 2961eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump shill::kTypeEthernet, shill::kStateOnline); 297af50aab0c317462129d73ae8000c6394c718598dJames Dennett service_test_->SetServiceProperty( 298ceafc4b63599d14f0b5b10ff92e22bf242682dceBenjamin Kramer "stub_ethernet", 299686775deca8b8685eb90801495880e3abdd844c2Chris Lattner shill::kProfileProperty, 3001eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump base::StringValue(ShillProfileClient::GetSharedProfilePath())); 301af50aab0c317462129d73ae8000c6394c718598dJames Dennett profile_test->AddService(ShillProfileClient::GetSharedProfilePath(), 302af50aab0c317462129d73ae8000c6394c718598dJames Dennett "stub_ethernet"); 303af50aab0c317462129d73ae8000c6394c718598dJames Dennett 304af50aab0c317462129d73ae8000c6394c718598dJames Dennett AddService("stub_wifi1", "wifi1", shill::kTypeWifi, shill::kStateOnline); 305321abd4583dc02a254489132c5ccbe125d18ce4fTed Kremenek service_test_->SetServiceProperty("stub_wifi1", 306321abd4583dc02a254489132c5ccbe125d18ce4fTed Kremenek shill::kSecurityProperty, 3077bfaaaecb3113f955db31e8d8a51acffd1bc0c27Nico Weber base::StringValue(shill::kSecurityWep)); 3081eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump service_test_->SetServiceProperty("stub_wifi1", 3090827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis shill::kSignalStrengthProperty, 3100827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis base::FundamentalValue(40)); 3110827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis service_test_->SetServiceProperty("stub_wifi1", 3120827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis shill::kProfileProperty, 3130827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis base::StringValue(kUser1ProfilePath)); 3140827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis service_test_->SetServiceProperty("stub_wifi1", 3150827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis shill::kConnectableProperty, 3160827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis base::FundamentalValue(true)); 3170827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis service_test_->SetServiceProperty("stub_wifi1", 3180827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis shill::kDeviceProperty, 3190827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis base::StringValue(kWifiDevicePath)); 3200827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis profile_test->AddService(kUser1ProfilePath, "stub_wifi1"); 3210827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis base::ListValue frequencies1; 3220827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis frequencies1.AppendInteger(2400); 3238f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis service_test_->SetServiceProperty("stub_wifi1", 3248f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis shill::kWifiFrequencyListProperty, 3258f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis frequencies1); 3268f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis service_test_->SetServiceProperty("stub_wifi1", 3278f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis shill::kWifiFrequency, 3288f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis base::FundamentalValue(2400)); 3298f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis 3308f89652be7bb85bdac83c37fec85f20cdd2dfc83Argyrios Kyrtzidis AddService("stub_wifi2", "wifi2_PSK", shill::kTypeWifi, shill::kStateIdle); 331af50aab0c317462129d73ae8000c6394c718598dJames Dennett service_test_->SetServiceProperty("stub_wifi2", 332af50aab0c317462129d73ae8000c6394c718598dJames Dennett shill::kSecurityProperty, 333af50aab0c317462129d73ae8000c6394c718598dJames Dennett base::StringValue(shill::kSecurityPsk)); 334651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines service_test_->SetServiceProperty("stub_wifi2", 335a9793ed6a77946c988ee38035baf4cde6ff2e864Ted Kremenek shill::kSignalStrengthProperty, 3361eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump base::FundamentalValue(80)); 3370b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor service_test_->SetServiceProperty("stub_wifi2", 3380b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor shill::kConnectableProperty, 3390b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor base::FundamentalValue(true)); 3400b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor 341a50bd54164393ca3cd08016e7099bdeb531b5014Chris Lattner AddService("stub_wimax", "wimax", shill::kTypeWimax, shill::kStateOnline); 3421eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump service_test_->SetServiceProperty("stub_wimax", 3430b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor shill::kSignalStrengthProperty, 3440b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor base::FundamentalValue(40)); 3450b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor service_test_->SetServiceProperty("stub_wimax", 3460b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor shill::kProfileProperty, 3470b7a158d120ac8d78c114a823e17eedfec6b6658Douglas Gregor base::StringValue(kUser1ProfilePath)); 3481eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump service_test_->SetServiceProperty("stub_wimax", 349af50aab0c317462129d73ae8000c6394c718598dJames Dennett shill::kConnectableProperty, 350af50aab0c317462129d73ae8000c6394c718598dJames Dennett base::FundamentalValue(true)); 351af50aab0c317462129d73ae8000c6394c718598dJames Dennett profile_test->AddService(kUser1ProfilePath, "stub_wimax"); 352af50aab0c317462129d73ae8000c6394c718598dJames Dennett 353af50aab0c317462129d73ae8000c6394c718598dJames Dennett base::ListValue frequencies2; 354b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner frequencies2.AppendInteger(2400); 355b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner frequencies2.AppendInteger(5000); 356b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner service_test_->SetServiceProperty("stub_wifi2", 357b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner shill::kWifiFrequencyListProperty, 358b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner frequencies2); 359b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner service_test_->SetServiceProperty("stub_wifi2", 360b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner shill::kWifiFrequency, 361b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner base::FundamentalValue(5000)); 362b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner service_test_->SetServiceProperty("stub_wifi2", 363b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner shill::kProfileProperty, 364b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner base::StringValue(kUser1ProfilePath)); 3651eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump profile_test->AddService(kUser1ProfilePath, "stub_wifi2"); 366af50aab0c317462129d73ae8000c6394c718598dJames Dennett 367af50aab0c317462129d73ae8000c6394c718598dJames Dennett AddService("stub_vpn1", "vpn1", shill::kTypeVPN, shill::kStateOnline); 368af50aab0c317462129d73ae8000c6394c718598dJames Dennett 369af50aab0c317462129d73ae8000c6394c718598dJames Dennett content::RunAllPendingInMessageLoop(); 370b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner } 371b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner#else // !defined(OS_CHROMEOS) 3721eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 3734bd495c2a4fc742dde435115f66c722217975bd2James Dennett ExtensionApiTest::SetUpCommandLine(command_line); 3744bd495c2a4fc742dde435115f66c722217975bd2James Dennett // Whitelist the extension ID of the test extension. 3754bd495c2a4fc742dde435115f66c722217975bd2James Dennett command_line->AppendSwitchASCII( 376b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner extensions::switches::kWhitelistedExtensionID, 377b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner "epcifkihnkjgphfkloaaleeakhpmgdmn"); 3784bd495c2a4fc742dde435115f66c722217975bd2James Dennett } 3794bd495c2a4fc742dde435115f66c722217975bd2James Dennett 3804bd495c2a4fc742dde435115f66c722217975bd2James Dennett static KeyedService* CreateNetworkingPrivateServiceClient( 381b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner content::BrowserContext* profile) { 3821eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump return new extensions::NetworkingPrivateServiceClient( 3834bd495c2a4fc742dde435115f66c722217975bd2James Dennett new wifi::FakeWiFiService(), new CryptoVerifyStub()); 3844bd495c2a4fc742dde435115f66c722217975bd2James Dennett } 3854bd495c2a4fc742dde435115f66c722217975bd2James Dennett 386b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner virtual void SetUpOnMainThread() OVERRIDE { 387b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner ExtensionApiTest::SetUpOnMainThread(); 3884bd495c2a4fc742dde435115f66c722217975bd2James Dennett content::RunAllPendingInMessageLoop(); 3894bd495c2a4fc742dde435115f66c722217975bd2James Dennett NetworkingPrivateServiceClientFactory::GetInstance()->SetTestingFactory( 390b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner profile(), 391b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner &CreateNetworkingPrivateServiceClient); 392b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner } 393b9c3f966b103f7cfe8e5e60007c4c8b38f7298ebChris Lattner 3941eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#endif // OS_CHROMEOS 395beb7713c6102687f7e49e27b8228e84a69d8f6c6Ted Kremenek 39619a95bcf3561ed977c48d5f2a2793b60a8c8e573Ted Kremenek protected: 3972b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#if defined(OS_CHROMEOS) 3982b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner NetworkPortalDetectorTestImpl* detector() { return detector_; } 3992b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner 4002b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner NetworkPortalDetectorTestImpl* detector_; 4012b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner ShillServiceClient::TestInterface* service_test_; 4022b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner ShillManagerClient::TestInterface* manager_test_; 4032b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner ShillDeviceClient::TestInterface* device_test_; 4042b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner policy::MockConfigurationPolicyProvider provider_; 4052b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner std::string userhash_; 4061eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump#endif 4072b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner}; 4081eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 4092b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner// Place each subtest into a separate browser test so that the stub networking 4102b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner// library state is reset for each subtest run. This way they won't affect each 4112b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner// other. 4121eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 4132b2453a7d8fe732561795431f39ceb2b2a832d84Chris LattnerIN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, StartConnect) { 4142b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner EXPECT_TRUE(RunNetworkingSubtest("startConnect")) << message_; 4152b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner} 4162b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner 41706159e878569e5f39bf0e8f11b84ac3ad0970597Chris LattnerIN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, StartDisconnect) { 41806159e878569e5f39bf0e8f11b84ac3ad0970597Chris Lattner EXPECT_TRUE(RunNetworkingSubtest("startDisconnect")) << message_; 41906159e878569e5f39bf0e8f11b84ac3ad0970597Chris Lattner} 42006159e878569e5f39bf0e8f11b84ac3ad0970597Chris Lattner 42106159e878569e5f39bf0e8f11b84ac3ad0970597Chris LattnerIN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 4221eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump StartConnectNonexistent) { 4230827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis EXPECT_TRUE(RunNetworkingSubtest("startConnectNonexistent")) << message_; 4240827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis} 4250827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis 4260827408865e32789e0ec4b8113a302ccdc531423Argyrios KyrtzidisIN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 4270827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis StartDisconnectNonexistent) { 428dec0984fce504a39a7f085774fb67cfd9957be58Jeffrey Yasskin EXPECT_TRUE(RunNetworkingSubtest("startDisconnectNonexistent")) << message_; 4290827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis} 4300827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis 4310827408865e32789e0ec4b8113a302ccdc531423Argyrios KyrtzidisIN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 4320827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis StartGetPropertiesNonexistent) { 4330827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis EXPECT_TRUE(RunNetworkingSubtest("startGetPropertiesNonexistent")) 4340827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis << message_; 4350827408865e32789e0ec4b8113a302ccdc531423Argyrios Kyrtzidis} 4362b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner 4372b2453a7d8fe732561795431f39ceb2b2a832d84Chris Lattner#if defined(OS_CHROMEOS) 4385f016e2cb5d11daeb237544de1c5d59f20fe1a6eReid Spencer// TODO(stevenjb/mef): Fix these on non-Chrome OS, crbug.com/371442. 439IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, GetNetworks) { 440 // Hide stub_wifi2. 441 service_test_->SetServiceProperty("stub_wifi2", 442 shill::kVisibleProperty, 443 base::FundamentalValue(false)); 444 // Add a couple of additional networks that are not configured (saved). 445 AddService("stub_wifi3", "wifi3", shill::kTypeWifi, shill::kStateIdle); 446 AddService("stub_wifi4", "wifi4", shill::kTypeWifi, shill::kStateIdle); 447 content::RunAllPendingInMessageLoop(); 448 EXPECT_TRUE(RunNetworkingSubtest("getNetworks")) << message_; 449} 450 451IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, GetVisibleNetworks) { 452 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworks")) << message_; 453} 454#endif 455 456IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 457 GetVisibleNetworksWifi) { 458 EXPECT_TRUE(RunNetworkingSubtest("getVisibleNetworksWifi")) << message_; 459} 460 461#if defined(OS_CHROMEOS) 462// TODO(stevenjb/mef): Fix this on non-Chrome OS, crbug.com/371442. 463IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, RequestNetworkScan) { 464 EXPECT_TRUE(RunNetworkingSubtest("requestNetworkScan")) << message_; 465} 466#endif 467 468// Properties are filtered and translated through 469// ShillToONCTranslator::TranslateWiFiWithState 470IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, GetProperties) { 471 EXPECT_TRUE(RunNetworkingSubtest("getProperties")) << message_; 472} 473 474#if defined(OS_CHROMEOS) 475IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 476 GetCellularProperties) { 477 SetupCellular(); 478 EXPECT_TRUE(RunNetworkingSubtest("getPropertiesCellular")) << message_; 479} 480#endif 481 482IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, GetState) { 483 EXPECT_TRUE(RunNetworkingSubtest("getState")) << message_; 484} 485 486IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, GetStateNonExistent) { 487 EXPECT_TRUE(RunNetworkingSubtest("getStateNonExistent")) << message_; 488} 489 490IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, SetProperties) { 491 EXPECT_TRUE(RunNetworkingSubtest("setProperties")) << message_; 492} 493 494IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, CreateNetwork) { 495 EXPECT_TRUE(RunNetworkingSubtest("createNetwork")) << message_; 496} 497 498#if defined(OS_CHROMEOS) 499// TODO(stevenjb/mef): Find a maintainable way to support this on win/mac and 500// a better way to set this up on Chrome OS. 501IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 502 GetManagedProperties) { 503 const std::string uidata_blob = 504 "{ \"user_settings\": {" 505 " \"WiFi\": {" 506 " \"Passphrase\": \"FAKE_CREDENTIAL_VPaJDV9x\" }" 507 " }" 508 "}"; 509 service_test_->SetServiceProperty("stub_wifi2", 510 shill::kUIDataProperty, 511 base::StringValue(uidata_blob)); 512 service_test_->SetServiceProperty("stub_wifi2", 513 shill::kAutoConnectProperty, 514 base::FundamentalValue(false)); 515 516 ShillProfileClient::TestInterface* profile_test = 517 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface(); 518 // Update the profile entry. 519 profile_test->AddService(kUser1ProfilePath, "stub_wifi2"); 520 521 content::RunAllPendingInMessageLoop(); 522 523 const std::string user_policy_blob = 524 "{ \"NetworkConfigurations\": [" 525 " { \"GUID\": \"stub_wifi2\"," 526 " \"Type\": \"WiFi\"," 527 " \"Name\": \"My WiFi Network\"," 528 " \"WiFi\": {" 529 " \"Passphrase\": \"passphrase\"," 530 " \"Recommended\": [ \"AutoConnect\", \"Passphrase\" ]," 531 " \"SSID\": \"wifi2_PSK\"," 532 " \"Security\": \"WPA-PSK\" }" 533 " }" 534 " ]," 535 " \"Certificates\": []," 536 " \"Type\": \"UnencryptedConfiguration\"" 537 "}"; 538 539 policy::PolicyMap policy; 540 policy.Set(policy::key::kOpenNetworkConfiguration, 541 policy::POLICY_LEVEL_MANDATORY, 542 policy::POLICY_SCOPE_USER, 543 new base::StringValue(user_policy_blob), 544 NULL); 545 provider_.UpdateChromePolicy(policy); 546 547 content::RunAllPendingInMessageLoop(); 548 549 EXPECT_TRUE(RunNetworkingSubtest("getManagedProperties")) << message_; 550} 551#endif // OS_CHROMEOS 552 553IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 554 OnNetworksChangedEventConnect) { 555 EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventConnect")) 556 << message_; 557} 558 559IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 560 OnNetworksChangedEventDisconnect) { 561 EXPECT_TRUE(RunNetworkingSubtest("onNetworksChangedEventDisconnect")) 562 << message_; 563} 564 565#if defined(OS_CHROMEOS) 566// TODO(stevenjb/mef): Fix this on non-Chrome OS, crbug.com/371442. 567IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 568 OnNetworkListChangedEvent) { 569 EXPECT_TRUE(RunNetworkingSubtest("onNetworkListChangedEvent")) << message_; 570} 571#endif // OS_CHROMEOS 572 573IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 574 VerifyDestination) { 575 EXPECT_TRUE(RunNetworkingSubtest("verifyDestination")) << message_; 576} 577 578IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 579 VerifyAndEncryptCredentials) { 580 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptCredentials")) << message_; 581} 582 583IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 584 VerifyAndEncryptData) { 585 EXPECT_TRUE(RunNetworkingSubtest("verifyAndEncryptData")) << message_; 586} 587 588#if defined(OS_CHROMEOS) 589// Currently TDLS support is only enabled for Chrome OS. 590IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 591 SetWifiTDLSEnabledState) { 592 EXPECT_TRUE(RunNetworkingSubtest("setWifiTDLSEnabledState")) << message_; 593} 594 595IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 596 GetWifiTDLSStatus) { 597 EXPECT_TRUE(RunNetworkingSubtest("getWifiTDLSStatus")) << message_; 598} 599#endif 600 601// NetworkPortalDetector is only enabled for Chrome OS. 602#if defined(OS_CHROMEOS) 603IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 604 GetCaptivePortalStatus) { 605 SetupCellular(); 606 607 NetworkPortalDetector::CaptivePortalState state; 608 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 609 detector()->SetDetectionResultsForTesting("stub_ethernet_guid", state); 610 611 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE; 612 detector()->SetDetectionResultsForTesting("stub_wifi1_guid", state); 613 614 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 615 detector()->SetDetectionResultsForTesting("stub_wifi2_guid", state); 616 617 state.status = 618 NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 619 detector()->SetDetectionResultsForTesting("stub_cellular1_guid", state); 620 621 EXPECT_TRUE(RunNetworkingSubtest("getCaptivePortalStatus")) << message_; 622} 623 624IN_PROC_BROWSER_TEST_F(ExtensionNetworkingPrivateApiTest, 625 CaptivePortalNotification) { 626 detector()->SetDefaultNetworkForTesting("wifi_guid"); 627 NetworkPortalDetector::CaptivePortalState state; 628 state.status = NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE; 629 detector()->SetDetectionResultsForTesting("wifi_guid", state); 630 631 TestListener listener( 632 "notifyPortalDetectorObservers", 633 base::Bind(&NetworkPortalDetectorTestImpl::NotifyObserversForTesting, 634 base::Unretained(detector()))); 635 EXPECT_TRUE(RunNetworkingSubtest("captivePortalNotification")) << message_; 636} 637#endif // defined(OS_CHROMEOS) 638 639} // namespace 640