Index: chrome/browser/sync/test/integration/wifi_credentials_helper.cc |
diff --git a/chrome/browser/sync/test/integration/wifi_credentials_helper.cc b/chrome/browser/sync/test/integration/wifi_credentials_helper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d29765f1cb848db10e2b51b8fe725d0b044b33e3 |
--- /dev/null |
+++ b/chrome/browser/sync/test/integration/wifi_credentials_helper.cc |
@@ -0,0 +1,95 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/sync/test/integration/wifi_credentials_helper.h" |
+ |
+#include "base/logging.h" |
+#include "base/strings/string_number_conversions.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/sync/test/integration/sync_datatype_helper.h" |
+#include "chrome/browser/sync/test/integration/sync_test.h" |
+#include "components/wifi_sync/wifi_credential.h" |
+#include "components/wifi_sync/wifi_security_class.h" |
+ |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.h" |
+#endif |
+ |
+using wifi_sync::WifiCredential; |
+using sync_datatype_helper::test; |
+ |
+using WifiCredentialSet = wifi_sync::WifiCredential::CredentialSet; |
+ |
+namespace wifi_credentials_helper { |
+ |
+namespace { |
+ |
+WifiCredentialSet GetWifiCredentialsForProfile(const Profile* profile) { |
+#if defined(OS_CHROMEOS) |
+ return GetWifiCredentialsForProfileChromeOs(profile); |
+#else |
+ NOTIMPLEMENTED(); |
+ return WifiCredential::MakeSet(); |
+#endif |
+} |
+ |
+bool CredentialsMatch(const WifiCredentialSet& a_credentials, |
+ const WifiCredentialSet& b_credentials) { |
+ if (a_credentials.size() != b_credentials.size()) { |
+ LOG(ERROR) << "CredentialSets a and b do not match in size: " |
+ << a_credentials.size() |
+ << " vs " << b_credentials.size() << " respectively."; |
+ return false; |
+ } |
+ |
+ for (const auto &credential : a_credentials) { |
+ if (b_credentials.find(credential) == b_credentials.end()) { |
+ LOG(ERROR) |
+ << "Network from a not found in b. " |
+ << "SSID (hex): " |
+ << base::HexEncode(credential.ssid().data(), |
+ credential.ssid().size()).c_str() |
+ << " SecurityClass: " << credential.security_class() |
+ << " Passphrase: " << credential.passphrase(); |
+ return false; |
+ } |
+ } |
+ |
+ return true; |
+} |
+ |
+} // namespace |
+ |
+bool VerifierIsEmpty() { |
+ return GetWifiCredentialsForProfile(test()->verifier()).empty(); |
+} |
+ |
+bool ProfileMatchesVerifier(int profile_index) { |
+ WifiCredentialSet verifier_credentials = |
+ GetWifiCredentialsForProfile(test()->verifier()); |
+ WifiCredentialSet other_credentials = |
+ GetWifiCredentialsForProfile(test()->GetProfile(profile_index)); |
+ return CredentialsMatch(verifier_credentials, other_credentials); |
+} |
+ |
+bool AllProfilesMatch() { |
+ if (test()->use_verifier() && !ProfileMatchesVerifier(0)) { |
+ LOG(ERROR) << "Profile 0 does not match verifier."; |
+ return false; |
+ } |
+ |
+ WifiCredentialSet profile0_credentials = |
+ GetWifiCredentialsForProfile(test()->GetProfile(0)); |
+ for (int i = 1; i < test()->num_clients(); ++i) { |
+ WifiCredentialSet other_profile_credentials = |
+ GetWifiCredentialsForProfile(test()->GetProfile(i)); |
+ if (!CredentialsMatch(profile0_credentials, other_profile_credentials)) { |
+ LOG(ERROR) << "Profile " << i << " " << "does not match with profile 0."; |
+ return false; |
+ } |
+ } |
+ return true; |
+} |
+ |
+} // namespace wifi_credentials_helper |