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

Side by Side Diff: chrome/browser/metrics/metrics_log_unittest.cc

Issue 292433015: Refactor MetricsLogChromeOS to ChromeOSMetricsProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/metrics/metrics_log.h" 5 #include "chrome/browser/metrics/metrics_log.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 22 matching lines...) Expand all
33 #include "components/variations/metrics_util.h" 33 #include "components/variations/metrics_util.h"
34 #include "content/public/browser/browser_thread.h" 34 #include "content/public/browser/browser_thread.h"
35 #include "content/public/common/process_type.h" 35 #include "content/public/common/process_type.h"
36 #include "content/public/common/webplugininfo.h" 36 #include "content/public/common/webplugininfo.h"
37 #include "content/public/test/test_browser_thread_bundle.h" 37 #include "content/public/test/test_browser_thread_bundle.h"
38 #include "content/public/test/test_utils.h" 38 #include "content/public/test/test_utils.h"
39 #include "testing/gtest/include/gtest/gtest.h" 39 #include "testing/gtest/include/gtest/gtest.h"
40 #include "ui/gfx/size.h" 40 #include "ui/gfx/size.h"
41 #include "url/gurl.h" 41 #include "url/gurl.h"
42 42
43 #if defined(OS_CHROMEOS)
44 #include "chrome/browser/chromeos/login/users/fake_user_manager.h"
45 #include "chrome/browser/chromeos/login/users/user_manager.h"
46 #include "chrome/browser/metrics/metrics_log_chromeos.h"
47 #include "chromeos/dbus/fake_bluetooth_adapter_client.h"
48 #include "chromeos/dbus/fake_bluetooth_agent_manager_client.h"
49 #include "chromeos/dbus/fake_bluetooth_device_client.h"
50 #include "chromeos/dbus/fake_bluetooth_gatt_characteristic_client.h"
51 #include "chromeos/dbus/fake_bluetooth_gatt_descriptor_client.h"
52 #include "chromeos/dbus/fake_bluetooth_gatt_service_client.h"
53 #include "chromeos/dbus/fake_bluetooth_input_client.h"
54 #include "chromeos/dbus/fake_dbus_thread_manager.h"
55
56 using chromeos::DBusThreadManager;
57 using chromeos::BluetoothAdapterClient;
58 using chromeos::BluetoothAgentManagerClient;
59 using chromeos::BluetoothDeviceClient;
60 using chromeos::BluetoothGattCharacteristicClient;
61 using chromeos::BluetoothGattDescriptorClient;
62 using chromeos::BluetoothGattServiceClient;
63 using chromeos::BluetoothInputClient;
64 using chromeos::FakeBluetoothAdapterClient;
65 using chromeos::FakeBluetoothAgentManagerClient;
66 using chromeos::FakeBluetoothDeviceClient;
67 using chromeos::FakeBluetoothGattCharacteristicClient;
68 using chromeos::FakeBluetoothGattDescriptorClient;
69 using chromeos::FakeBluetoothGattServiceClient;
70 using chromeos::FakeBluetoothInputClient;
71 using chromeos::FakeDBusThreadManager;
72 #endif // OS_CHROMEOS
Alexei Svitkine (slow) 2014/05/23 08:41:47 Sweet!
73
74 using base::TimeDelta; 43 using base::TimeDelta;
75 using metrics::ProfilerEventProto; 44 using metrics::ProfilerEventProto;
76 using tracked_objects::ProcessDataSnapshot; 45 using tracked_objects::ProcessDataSnapshot;
77 using tracked_objects::TaskSnapshot; 46 using tracked_objects::TaskSnapshot;
78 47
79 namespace { 48 namespace {
80 49
81 const char kClientId[] = "bogus client ID"; 50 const char kClientId[] = "bogus client ID";
82 const int64 kInstallDate = 1373051956; 51 const int64 kInstallDate = 1373051956;
83 const int64 kInstallDateExpected = 1373050800; // Computed from kInstallDate. 52 const int64 kInstallDateExpected = 1373050800; // Computed from kInstallDate.
(...skipping 26 matching lines...) Expand all
110 base::UTF8ToUTF16(version), 79 base::UTF8ToUTF16(version),
111 base::string16()); 80 base::string16());
112 if (is_pepper) 81 if (is_pepper)
113 plugin.type = content::WebPluginInfo::PLUGIN_TYPE_PEPPER_IN_PROCESS; 82 plugin.type = content::WebPluginInfo::PLUGIN_TYPE_PEPPER_IN_PROCESS;
114 else 83 else
115 plugin.type = content::WebPluginInfo::PLUGIN_TYPE_NPAPI; 84 plugin.type = content::WebPluginInfo::PLUGIN_TYPE_NPAPI;
116 return plugin; 85 return plugin;
117 } 86 }
118 #endif // defined(ENABLE_PLUGINS) 87 #endif // defined(ENABLE_PLUGINS)
119 88
120 #if defined(OS_CHROMEOS)
121 class TestMetricsLogChromeOS : public MetricsLogChromeOS {
122 public:
123 explicit TestMetricsLogChromeOS(
124 metrics::ChromeUserMetricsExtension* uma_proto)
125 : MetricsLogChromeOS(uma_proto) {
126 }
127 };
128 #endif // OS_CHROMEOS
129
130 class TestMetricsLog : public MetricsLog { 89 class TestMetricsLog : public MetricsLog {
131 public: 90 public:
132 TestMetricsLog(const std::string& client_id, int session_id, LogType log_type) 91 TestMetricsLog(const std::string& client_id, int session_id, LogType log_type)
133 : MetricsLog(client_id, session_id, log_type), 92 : MetricsLog(client_id, session_id, log_type),
134 prefs_(&scoped_prefs_), 93 prefs_(&scoped_prefs_),
135 brand_for_testing_(kBrandForTesting) { 94 brand_for_testing_(kBrandForTesting) {
136 #if defined(OS_CHROMEOS)
137 metrics_log_chromeos_.reset(new TestMetricsLogChromeOS(
138 MetricsLog::uma_proto()));
139 #endif // OS_CHROMEOS
140 chrome::RegisterLocalState(scoped_prefs_.registry()); 95 chrome::RegisterLocalState(scoped_prefs_.registry());
141 InitPrefs(); 96 InitPrefs();
142 } 97 }
143 // Creates a TestMetricsLog that will use |prefs| as the fake local state. 98 // Creates a TestMetricsLog that will use |prefs| as the fake local state.
144 // Useful for tests that need to re-use the local state prefs between logs. 99 // Useful for tests that need to re-use the local state prefs between logs.
145 TestMetricsLog(const std::string& client_id, 100 TestMetricsLog(const std::string& client_id,
146 int session_id, 101 int session_id,
147 LogType log_type, 102 LogType log_type,
148 TestingPrefServiceSimple* prefs) 103 TestingPrefServiceSimple* prefs)
149 : MetricsLog(client_id, session_id, log_type), 104 : MetricsLog(client_id, session_id, log_type),
150 prefs_(prefs), 105 prefs_(prefs),
151 brand_for_testing_(kBrandForTesting) { 106 brand_for_testing_(kBrandForTesting) {
152 #if defined(OS_CHROMEOS)
153 metrics_log_chromeos_.reset(new TestMetricsLogChromeOS(
154 MetricsLog::uma_proto()));
155 #endif // OS_CHROMEOS
156 InitPrefs(); 107 InitPrefs();
157 } 108 }
158 virtual ~TestMetricsLog() {} 109 virtual ~TestMetricsLog() {}
159 110
160 virtual PrefService* GetPrefService() OVERRIDE { 111 virtual PrefService* GetPrefService() OVERRIDE {
161 return prefs_; 112 return prefs_;
162 } 113 }
163 114
164 const metrics::ChromeUserMetricsExtension& uma_proto() const { 115 const metrics::ChromeUserMetricsExtension& uma_proto() const {
165 return *MetricsLog::uma_proto(); 116 return *MetricsLog::uma_proto();
166 } 117 }
167 118
168 const metrics::SystemProfileProto& system_profile() const { 119 const metrics::SystemProfileProto& system_profile() const {
169 return uma_proto().system_profile(); 120 return uma_proto().system_profile();
170 } 121 }
171 122
172 private: 123 private:
173 void InitPrefs() { 124 void InitPrefs() {
174 prefs_->SetInt64(prefs::kInstallDate, kInstallDate); 125 prefs_->SetInt64(prefs::kInstallDate, kInstallDate);
175 prefs_->SetString(prefs::kMetricsReportingEnabledTimestamp, 126 prefs_->SetString(prefs::kMetricsReportingEnabledTimestamp,
176 base::Int64ToString(kEnabledDate)); 127 base::Int64ToString(kEnabledDate));
177 #if defined(OS_CHROMEOS)
178 prefs_->SetInteger(prefs::kStabilityChildProcessCrashCount, 10);
179 prefs_->SetInteger(prefs::kStabilityOtherUserCrashCount, 11);
180 prefs_->SetInteger(prefs::kStabilityKernelCrashCount, 12);
181 prefs_->SetInteger(prefs::kStabilitySystemUncleanShutdownCount, 13);
182 #endif // OS_CHROMEOS
183 } 128 }
184 129
185 virtual void GetFieldTrialIds( 130 virtual void GetFieldTrialIds(
186 std::vector<variations::ActiveGroupId>* field_trial_ids) const 131 std::vector<variations::ActiveGroupId>* field_trial_ids) const
187 OVERRIDE { 132 OVERRIDE {
188 ASSERT_TRUE(field_trial_ids->empty()); 133 ASSERT_TRUE(field_trial_ids->empty());
189 134
190 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) { 135 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) {
191 field_trial_ids->push_back(kFieldTrialIds[i]); 136 field_trial_ids->push_back(kFieldTrialIds[i]);
192 } 137 }
(...skipping 21 matching lines...) Expand all
214 DISALLOW_COPY_AND_ASSIGN(TestMetricsLog); 159 DISALLOW_COPY_AND_ASSIGN(TestMetricsLog);
215 }; 160 };
216 161
217 } // namespace 162 } // namespace
218 163
219 class MetricsLogTest : public testing::Test { 164 class MetricsLogTest : public testing::Test {
220 public: 165 public:
221 MetricsLogTest() {} 166 MetricsLogTest() {}
222 167
223 protected: 168 protected:
224 virtual void SetUp() OVERRIDE {
225 #if defined(OS_CHROMEOS)
226 // Set up the fake Bluetooth environment,
227 scoped_ptr<FakeDBusThreadManager> fake_dbus_thread_manager(
228 new FakeDBusThreadManager);
229 fake_dbus_thread_manager->SetBluetoothAdapterClient(
230 scoped_ptr<BluetoothAdapterClient>(new FakeBluetoothAdapterClient));
231 fake_dbus_thread_manager->SetBluetoothDeviceClient(
232 scoped_ptr<BluetoothDeviceClient>(new FakeBluetoothDeviceClient));
233 fake_dbus_thread_manager->SetBluetoothGattCharacteristicClient(
234 scoped_ptr<BluetoothGattCharacteristicClient>(
235 new FakeBluetoothGattCharacteristicClient));
236 fake_dbus_thread_manager->SetBluetoothGattDescriptorClient(
237 scoped_ptr<BluetoothGattDescriptorClient>(
238 new FakeBluetoothGattDescriptorClient));
239 fake_dbus_thread_manager->SetBluetoothGattServiceClient(
240 scoped_ptr<BluetoothGattServiceClient>(
241 new FakeBluetoothGattServiceClient));
242 fake_dbus_thread_manager->SetBluetoothInputClient(
243 scoped_ptr<BluetoothInputClient>(new FakeBluetoothInputClient));
244 fake_dbus_thread_manager->SetBluetoothAgentManagerClient(
245 scoped_ptr<BluetoothAgentManagerClient>(
246 new FakeBluetoothAgentManagerClient));
247 DBusThreadManager::InitializeForTesting(fake_dbus_thread_manager.release());
248
249 // Grab pointers to members of the thread manager for easier testing.
250 fake_bluetooth_adapter_client_ = static_cast<FakeBluetoothAdapterClient*>(
251 DBusThreadManager::Get()->GetBluetoothAdapterClient());
252 fake_bluetooth_device_client_ = static_cast<FakeBluetoothDeviceClient*>(
253 DBusThreadManager::Get()->GetBluetoothDeviceClient());
254 #endif // OS_CHROMEOS
255 }
256
257 virtual void TearDown() OVERRIDE {
258 #if defined(OS_CHROMEOS)
259 DBusThreadManager::Shutdown();
260 #endif // OS_CHROMEOS
261 }
262
263 // Check that the values in |system_values| correspond to the test data 169 // Check that the values in |system_values| correspond to the test data
264 // defined at the top of this file. 170 // defined at the top of this file.
265 void CheckSystemProfile(const metrics::SystemProfileProto& system_profile) { 171 void CheckSystemProfile(const metrics::SystemProfileProto& system_profile) {
266 EXPECT_EQ(kInstallDateExpected, system_profile.install_date()); 172 EXPECT_EQ(kInstallDateExpected, system_profile.install_date());
267 EXPECT_EQ(kEnabledDateExpected, system_profile.uma_enabled_date()); 173 EXPECT_EQ(kEnabledDateExpected, system_profile.uma_enabled_date());
268 174
269 ASSERT_EQ(arraysize(kFieldTrialIds) + arraysize(kSyntheticTrials), 175 ASSERT_EQ(arraysize(kFieldTrialIds) + arraysize(kSyntheticTrials),
270 static_cast<size_t>(system_profile.field_trial_size())); 176 static_cast<size_t>(system_profile.field_trial_size()));
271 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) { 177 for (size_t i = 0; i < arraysize(kFieldTrialIds); ++i) {
272 const metrics::SystemProfileProto::FieldTrial& field_trial = 178 const metrics::SystemProfileProto::FieldTrial& field_trial =
(...skipping 19 matching lines...) Expand all
292 EXPECT_EQ(kScreenCount, hardware.screen_count()); 198 EXPECT_EQ(kScreenCount, hardware.screen_count());
293 199
294 EXPECT_TRUE(hardware.has_cpu()); 200 EXPECT_TRUE(hardware.has_cpu());
295 EXPECT_TRUE(hardware.cpu().has_vendor_name()); 201 EXPECT_TRUE(hardware.cpu().has_vendor_name());
296 EXPECT_TRUE(hardware.cpu().has_signature()); 202 EXPECT_TRUE(hardware.cpu().has_signature());
297 203
298 // TODO(isherman): Verify other data written into the protobuf as a result 204 // TODO(isherman): Verify other data written into the protobuf as a result
299 // of this call. 205 // of this call.
300 } 206 }
301 207
302 protected:
303 #if defined(OS_CHROMEOS)
304 FakeBluetoothAdapterClient* fake_bluetooth_adapter_client_;
305 FakeBluetoothDeviceClient* fake_bluetooth_device_client_;
306 #endif // OS_CHROMEOS
307
308 private: 208 private:
309 content::TestBrowserThreadBundle thread_bundle_; 209 content::TestBrowserThreadBundle thread_bundle_;
310 210
311 DISALLOW_COPY_AND_ASSIGN(MetricsLogTest); 211 DISALLOW_COPY_AND_ASSIGN(MetricsLogTest);
312 }; 212 };
313 213
314 TEST_F(MetricsLogTest, RecordEnvironment) { 214 TEST_F(MetricsLogTest, RecordEnvironment) {
315 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG); 215 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
316 216
317 std::vector<content::WebPluginInfo> plugins; 217 std::vector<content::WebPluginInfo> plugins;
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 tracked_object->exec_thread_name_hash()); 551 tracked_object->exec_thread_name_hash());
652 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER, 552 EXPECT_EQ(ProfilerEventProto::TrackedObject::RENDERER,
653 tracked_object->process_type()); 553 tracked_object->process_type());
654 } 554 }
655 } 555 }
656 556
657 TEST_F(MetricsLogTest, ChromeChannelWrittenToProtobuf) { 557 TEST_F(MetricsLogTest, ChromeChannelWrittenToProtobuf) {
658 TestMetricsLog log("user@test.com", kSessionId, MetricsLog::ONGOING_LOG); 558 TestMetricsLog log("user@test.com", kSessionId, MetricsLog::ONGOING_LOG);
659 EXPECT_TRUE(log.uma_proto().system_profile().has_channel()); 559 EXPECT_TRUE(log.uma_proto().system_profile().has_channel());
660 } 560 }
661
662 #if defined(OS_CHROMEOS)
663 TEST_F(MetricsLogTest, MultiProfileUserCount) {
664 std::string user1("user1@example.com");
665 std::string user2("user2@example.com");
666 std::string user3("user3@example.com");
667
668 // |scoped_enabler| takes over the lifetime of |user_manager|.
669 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager();
670 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager);
671 user_manager->AddKioskAppUser(user1);
672 user_manager->AddKioskAppUser(user2);
673 user_manager->AddKioskAppUser(user3);
674
675 user_manager->LoginUser(user1);
676 user_manager->LoginUser(user3);
677
678 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
679 std::vector<metrics::MetricsProvider*> metrics_providers;
680 std::vector<content::WebPluginInfo> plugins;
681 std::vector<variations::ActiveGroupId> synthetic_trials;
682 log.RecordEnvironment(metrics_providers, plugins, synthetic_trials);
683 EXPECT_EQ(2u, log.system_profile().multi_profile_user_count());
684 }
685
686 TEST_F(MetricsLogTest, MultiProfileCountInvalidated) {
687 std::string user1("user1@example.com");
688 std::string user2("user2@example.com");
689 std::string user3("user3@example.com");
690
691 // |scoped_enabler| takes over the lifetime of |user_manager|.
692 chromeos::FakeUserManager* user_manager = new chromeos::FakeUserManager();
693 chromeos::ScopedUserManagerEnabler scoped_enabler(user_manager);
694 user_manager->AddKioskAppUser(user1);
695 user_manager->AddKioskAppUser(user2);
696 user_manager->AddKioskAppUser(user3);
697
698 user_manager->LoginUser(user1);
699
700 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
701 EXPECT_EQ(1u, log.system_profile().multi_profile_user_count());
702
703 user_manager->LoginUser(user2);
704 std::vector<metrics::MetricsProvider*> metrics_providers;
705 std::vector<variations::ActiveGroupId> synthetic_trials;
706 log.RecordEnvironment(metrics_providers,
707 std::vector<content::WebPluginInfo>(),
708 synthetic_trials);
709 EXPECT_EQ(0u, log.system_profile().multi_profile_user_count());
710 }
711
712 TEST_F(MetricsLogTest, BluetoothHardwareDisabled) {
713 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
714 log.RecordEnvironment(std::vector<metrics::MetricsProvider*>(),
715 std::vector<content::WebPluginInfo>(),
716 std::vector<variations::ActiveGroupId>());
717
718 EXPECT_TRUE(log.system_profile().has_hardware());
719 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth());
720
721 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present());
722 EXPECT_FALSE(log.system_profile().hardware().bluetooth().is_enabled());
723 }
724
725 TEST_F(MetricsLogTest, BluetoothHardwareEnabled) {
726 FakeBluetoothAdapterClient::Properties* properties =
727 fake_bluetooth_adapter_client_->GetProperties(
728 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath));
729 properties->powered.ReplaceValue(true);
730
731 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
732 log.RecordEnvironment(std::vector<metrics::MetricsProvider*>(),
733 std::vector<content::WebPluginInfo>(),
734 std::vector<variations::ActiveGroupId>());
735
736 EXPECT_TRUE(log.system_profile().has_hardware());
737 EXPECT_TRUE(log.system_profile().hardware().has_bluetooth());
738
739 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_present());
740 EXPECT_TRUE(log.system_profile().hardware().bluetooth().is_enabled());
741 }
742
743 TEST_F(MetricsLogTest, BluetoothPairedDevices) {
744 // The fake bluetooth adapter class already claims to be paired with one
745 // device when initialized. Add a second and third fake device to it so we
746 // can test the cases where a device is not paired (LE device, generally)
747 // and a device that does not have Device ID information.
748 fake_bluetooth_device_client_->CreateDevice(
749 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
750 dbus::ObjectPath(FakeBluetoothDeviceClient::kRequestPinCodePath));
751
752 fake_bluetooth_device_client_->CreateDevice(
753 dbus::ObjectPath(FakeBluetoothAdapterClient::kAdapterPath),
754 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
755
756 FakeBluetoothDeviceClient::Properties* properties =
757 fake_bluetooth_device_client_->GetProperties(
758 dbus::ObjectPath(FakeBluetoothDeviceClient::kConfirmPasskeyPath));
759 properties->paired.ReplaceValue(true);
760
761 TestMetricsLog log(kClientId, kSessionId, MetricsLog::ONGOING_LOG);
762 log.RecordEnvironment(std::vector<metrics::MetricsProvider*>(),
763 std::vector<content::WebPluginInfo>(),
764 std::vector<variations::ActiveGroupId>());
765
766 ASSERT_TRUE(log.system_profile().has_hardware());
767 ASSERT_TRUE(log.system_profile().hardware().has_bluetooth());
768
769 // Only two of the devices should appear.
770 EXPECT_EQ(2,
771 log.system_profile().hardware().bluetooth().paired_device_size());
772
773 typedef metrics::SystemProfileProto::Hardware::Bluetooth::PairedDevice
774 PairedDevice;
775
776 // First device should match the Paired Device object, complete with
777 // parsed Device ID information.
778 PairedDevice device1 =
779 log.system_profile().hardware().bluetooth().paired_device(0);
780
781 EXPECT_EQ(FakeBluetoothDeviceClient::kPairedDeviceClass,
782 device1.bluetooth_class());
783 EXPECT_EQ(PairedDevice::DEVICE_COMPUTER, device1.type());
784 EXPECT_EQ(0x001122U, device1.vendor_prefix());
785 EXPECT_EQ(PairedDevice::VENDOR_ID_USB, device1.vendor_id_source());
786 EXPECT_EQ(0x05ACU, device1.vendor_id());
787 EXPECT_EQ(0x030DU, device1.product_id());
788 EXPECT_EQ(0x0306U, device1.device_id());
789
790 // Second device should match the Confirm Passkey object, this has
791 // no Device ID information.
792 PairedDevice device2 =
793 log.system_profile().hardware().bluetooth().paired_device(1);
794
795 EXPECT_EQ(FakeBluetoothDeviceClient::kConfirmPasskeyClass,
796 device2.bluetooth_class());
797 EXPECT_EQ(PairedDevice::DEVICE_PHONE, device2.type());
798 EXPECT_EQ(0x207D74U, device2.vendor_prefix());
799 EXPECT_EQ(PairedDevice::VENDOR_ID_UNKNOWN, device2.vendor_id_source());
800 }
801 #endif // OS_CHROMEOS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698