Merge remote-tracking branch 'remotes/weave/master' into weave_aosp-master * remotes/weave/master: Replace https://www.googleapis.com/clouddevices/v1/ with https://www.googleapis.com/weave/v1. Set "WiFi discovery" bit of device flags according state of Hosted SSID. Return true only if device is hosting AP or if flags are being generated for SSID. Updated api_key, client_id and client_secret Add missing UI device kinds
diff --git a/examples/provider/file_config_store.cc b/examples/provider/file_config_store.cc index 44f2c30..8e72792 100644 --- a/examples/provider/file_config_store.cc +++ b/examples/provider/file_config_store.cc
@@ -38,9 +38,16 @@ settings->model_id = "AAAAA"; settings->pairing_modes = {PairingType::kEmbeddedCode}; settings->embedded_code = "0000"; - settings->client_id = "58855907228.apps.googleusercontent.com"; - settings->client_secret = "eHSAREAHrIqPsHBxCE9zPPBi"; - settings->api_key = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA"; + + // Keys owners: + // avakulenko@google.com + // gene@chromium.org + // vitalybuka@chromium.org + settings->client_id = + "338428340000-vkb4p6h40c7kja1k3l70kke8t615cjit.apps.googleusercontent." + "com"; + settings->client_secret = "LS_iPYo_WIOE0m2VnLdduhnx"; + settings->api_key = "AIzaSyACK3oZtmIylUKXiTMqkZqfuRiCgQmQSAQ"; settings->disable_security = disable_security_; return true;
diff --git a/src/config.cc b/src/config.cc index 9a18bb0..52f5ea1 100644 --- a/src/config.cc +++ b/src/config.cc
@@ -44,6 +44,9 @@ } // namespace config_keys +const char kWeaveUrl[] = "https://www.googleapis.com/weave/v1/"; +const char kDeprecatedUrl[] = "https://www.googleapis.com/clouddevices/v1/"; + namespace { const int kCurrentConfigVersion = 1; @@ -60,7 +63,7 @@ Config::Settings CreateDefaultSettings() { Config::Settings result; result.oauth_url = "https://accounts.google.com/o/oauth2/"; - result.service_url = "https://www.googleapis.com/clouddevices/v1/"; + result.service_url = kWeaveUrl; result.local_anonymous_access_role = AuthScope::kViewer; result.pairing_modes.emplace(PairingType::kPinCode); result.device_id = base::GenerateGUID(); @@ -162,8 +165,11 @@ if (dict->GetString(config_keys::kOAuthURL, &tmp)) set_oauth_url(tmp); - if (dict->GetString(config_keys::kServiceURL, &tmp)) + if (dict->GetString(config_keys::kServiceURL, &tmp)) { + if (tmp == kDeprecatedUrl) + tmp = kWeaveUrl; set_service_url(tmp); + } if (dict->GetString(config_keys::kName, &tmp)) set_name(tmp);
diff --git a/src/config_unittest.cc b/src/config_unittest.cc index fbfd25f..10ed07e 100644 --- a/src/config_unittest.cc +++ b/src/config_unittest.cc
@@ -53,8 +53,7 @@ EXPECT_EQ("", GetSettings().client_secret); EXPECT_EQ("", GetSettings().api_key); EXPECT_EQ("https://accounts.google.com/o/oauth2/", GetSettings().oauth_url); - EXPECT_EQ("https://www.googleapis.com/clouddevices/v1/", - GetSettings().service_url); + EXPECT_EQ("https://www.googleapis.com/weave/v1/", GetSettings().service_url); EXPECT_EQ("", GetSettings().oem_name); EXPECT_EQ("", GetSettings().model_name); EXPECT_EQ("", GetSettings().model_id);
diff --git a/src/privet/device_ui_kind.cc b/src/privet/device_ui_kind.cc index 08b9312..ed7c5ff 100644 --- a/src/privet/device_ui_kind.cc +++ b/src/privet/device_ui_kind.cc
@@ -20,6 +20,12 @@ return "camera"; if (kind == "AB") return "developmentBoard"; + if (kind == "AH") + return "acHeating"; + if (kind == "AI") + return "light"; + if (kind == "AO") + return "lock"; if (kind == "AE") return "printer"; if (kind == "AF")
diff --git a/src/privet/wifi_ssid_generator.cc b/src/privet/wifi_ssid_generator.cc index a049c20..697e5d8 100644 --- a/src/privet/wifi_ssid_generator.cc +++ b/src/privet/wifi_ssid_generator.cc
@@ -52,6 +52,10 @@ } std::string WifiSsidGenerator::GenerateFlags() const { + return GenerateFlagsInternal(false); +} + +std::string WifiSsidGenerator::GenerateFlagsInternal(bool for_ssid) const { std::bitset<6> flags1; // Device needs WiFi configuration. flags1[0] = wifi_ && IsSetupNeeded(wifi_->GetConnectionState()); @@ -59,8 +63,9 @@ flags1[1] = IsSetupNeeded(gcd_->GetConnectionState()); std::bitset<6> flags2; + // Device is discoverable over WiFi. - flags2[0] = true; + flags2[0] = for_ssid || (wifi_ && !wifi_->GetHostedSsid().empty()); std::string result{2, base64chars[0]}; result[0] = base64chars[flags1.to_ulong()]; @@ -77,7 +82,7 @@ std::string result = base::StringPrintf(kSsidFormat, name.c_str(), idx.c_str(), - model_id.c_str(), GenerateFlags().c_str()); + model_id.c_str(), GenerateFlagsInternal(true).c_str()); CHECK_EQ(result[result.size() - 11], '.'); return result; }
diff --git a/src/privet/wifi_ssid_generator.h b/src/privet/wifi_ssid_generator.h index d720fb5..2b86f28 100644 --- a/src/privet/wifi_ssid_generator.h +++ b/src/privet/wifi_ssid_generator.h
@@ -30,6 +30,7 @@ // Sets object to use |n| instead of random number for SSID generation. void SetRandomForTests(int n); + std::string GenerateFlagsInternal(bool for_ssid) const; const CloudDelegate* gcd_{nullptr}; const WifiDelegate* wifi_{nullptr};
diff --git a/src/privet/wifi_ssid_generator_unittest.cc b/src/privet/wifi_ssid_generator_unittest.cc index 3bd561f..398e105 100644 --- a/src/privet/wifi_ssid_generator_unittest.cc +++ b/src/privet/wifi_ssid_generator_unittest.cc
@@ -22,7 +22,26 @@ WifiSsidGenerator ssid_generator_{&gcd_, &wifi_}; }; -TEST_F(WifiSsidGeneratorTest, GenerateFlags) { +TEST_F(WifiSsidGeneratorTest, GenerateFlagsNoHostedAp) { + EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2); + + wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured}; + gcd_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured}; + EXPECT_EQ("DA", ssid_generator_.GenerateFlags()); + + wifi_.connection_state_ = ConnectionState{ConnectionState::kOnline}; + EXPECT_EQ("CA", ssid_generator_.GenerateFlags()); + + gcd_.connection_state_ = ConnectionState{ConnectionState::kOffline}; + EXPECT_EQ("AA", ssid_generator_.GenerateFlags()); + + wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured}; + EXPECT_EQ("BA", ssid_generator_.GenerateFlags()); +} + +TEST_F(WifiSsidGeneratorTest, GenerateFlagsWithHostedAp) { + EXPECT_CALL(wifi_, GetHostedSsid()) + .WillRepeatedly(Return(ssid_generator_.GenerateSsid())); EXPECT_EQ(ssid_generator_.GenerateFlags().size(), 2); wifi_.connection_state_ = ConnectionState{ConnectionState::kUnconfigured};
diff --git a/src/weave_unittest.cc b/src/weave_unittest.cc index fb00cc9..63d3348 100644 --- a/src/weave_unittest.cc +++ b/src/weave_unittest.cc
@@ -344,19 +344,17 @@ auto draft = CreateDictionaryValue(kDeviceResource); auto response = CreateDictionaryValue(kRegistrationResponse); response->Set("deviceDraft", draft->DeepCopy()); - ExpectRequest( - HttpClient::Method::kPatch, - "https://www.googleapis.com/clouddevices/v1/registrationTickets/" - "TICKET_ID?key=TEST_API_KEY", - ValueToString(*response)); + ExpectRequest(HttpClient::Method::kPatch, + "https://www.googleapis.com/weave/v1/registrationTickets/" + "TICKET_ID?key=TEST_API_KEY", + ValueToString(*response)); response = CreateDictionaryValue(kRegistrationFinalResponse); response->Set("deviceDraft", draft->DeepCopy()); - ExpectRequest( - HttpClient::Method::kPost, - "https://www.googleapis.com/clouddevices/v1/registrationTickets/" - "TICKET_ID/finalize?key=TEST_API_KEY", - ValueToString(*response)); + ExpectRequest(HttpClient::Method::kPost, + "https://www.googleapis.com/weave/v1/registrationTickets/" + "TICKET_ID/finalize?key=TEST_API_KEY", + ValueToString(*response)); ExpectRequest(HttpClient::Method::kPost, "https://accounts.google.com/o/oauth2/token",