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

Side by Side Diff: components/storage_monitor/storage_monitor_win_unittest.cc

Issue 1250713002: Fix pointer truncation in component_unittests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « no previous file | components/storage_monitor/test_storage_monitor_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <windows.h> 5 #include <windows.h>
6 #include <dbt.h> 6 #include <dbt.h>
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 for (DeviceIndices::const_iterator it = device_indices.begin(); 158 for (DeviceIndices::const_iterator it = device_indices.begin();
159 it != device_indices.end(); ++it) { 159 it != device_indices.end(); ++it) {
160 volume_broadcast.dbcv_unitmask |= 0x1 << *it; 160 volume_broadcast.dbcv_unitmask |= 0x1 << *it;
161 bool removable; 161 bool removable;
162 ASSERT_TRUE(volume_mount_watcher_->GetDeviceRemovable( 162 ASSERT_TRUE(volume_mount_watcher_->GetDeviceRemovable(
163 VolumeMountWatcherWin::DriveNumberToFilePath(*it), &removable)); 163 VolumeMountWatcherWin::DriveNumberToFilePath(*it), &removable));
164 if (removable) 164 if (removable)
165 expect_attach_calls++; 165 expect_attach_calls++;
166 } 166 }
167 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL, 167 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL,
168 reinterpret_cast<DWORD>(&volume_broadcast)); 168 reinterpret_cast<LPARAM>(&volume_broadcast));
169 169
170 RunUntilIdle(); 170 RunUntilIdle();
171 volume_mount_watcher_->FlushWorkerPoolForTesting(); 171 volume_mount_watcher_->FlushWorkerPoolForTesting();
172 RunUntilIdle(); 172 RunUntilIdle();
173 173
174 EXPECT_EQ(expect_attach_calls, observer_.attach_calls()); 174 EXPECT_EQ(expect_attach_calls, observer_.attach_calls());
175 EXPECT_EQ(0, observer_.detach_calls()); 175 EXPECT_EQ(0, observer_.detach_calls());
176 } 176 }
177 177
178 void StorageMonitorWinTest::DoMassStorageDevicesDetachedTest( 178 void StorageMonitorWinTest::DoMassStorageDevicesDetachedTest(
179 const DeviceIndices& device_indices) { 179 const DeviceIndices& device_indices) {
180 DEV_BROADCAST_VOLUME volume_broadcast; 180 DEV_BROADCAST_VOLUME volume_broadcast;
181 volume_broadcast.dbcv_size = sizeof(volume_broadcast); 181 volume_broadcast.dbcv_size = sizeof(volume_broadcast);
182 volume_broadcast.dbcv_devicetype = DBT_DEVTYP_VOLUME; 182 volume_broadcast.dbcv_devicetype = DBT_DEVTYP_VOLUME;
183 volume_broadcast.dbcv_unitmask = 0x0; 183 volume_broadcast.dbcv_unitmask = 0x0;
184 volume_broadcast.dbcv_flags = 0x0; 184 volume_broadcast.dbcv_flags = 0x0;
185 185
186 int pre_attach_calls = observer_.attach_calls(); 186 int pre_attach_calls = observer_.attach_calls();
187 int expect_detach_calls = 0; 187 int expect_detach_calls = 0;
188 for (DeviceIndices::const_iterator it = device_indices.begin(); 188 for (DeviceIndices::const_iterator it = device_indices.begin();
189 it != device_indices.end(); ++it) { 189 it != device_indices.end(); ++it) {
190 volume_broadcast.dbcv_unitmask |= 0x1 << *it; 190 volume_broadcast.dbcv_unitmask |= 0x1 << *it;
191 StorageInfo info; 191 StorageInfo info;
192 ASSERT_TRUE(volume_mount_watcher_->GetDeviceInfo( 192 ASSERT_TRUE(volume_mount_watcher_->GetDeviceInfo(
193 VolumeMountWatcherWin::DriveNumberToFilePath(*it), &info)); 193 VolumeMountWatcherWin::DriveNumberToFilePath(*it), &info));
194 if (StorageInfo::IsRemovableDevice(info.device_id())) 194 if (StorageInfo::IsRemovableDevice(info.device_id()))
195 ++expect_detach_calls; 195 ++expect_detach_calls;
196 } 196 }
197 monitor_->InjectDeviceChange(DBT_DEVICEREMOVECOMPLETE, 197 monitor_->InjectDeviceChange(DBT_DEVICEREMOVECOMPLETE,
198 reinterpret_cast<DWORD>(&volume_broadcast)); 198 reinterpret_cast<LPARAM>(&volume_broadcast));
199 RunUntilIdle(); 199 RunUntilIdle();
200 EXPECT_EQ(pre_attach_calls, observer_.attach_calls()); 200 EXPECT_EQ(pre_attach_calls, observer_.attach_calls());
201 EXPECT_EQ(expect_detach_calls, observer_.detach_calls()); 201 EXPECT_EQ(expect_detach_calls, observer_.detach_calls());
202 } 202 }
203 203
204 void StorageMonitorWinTest::DoMTPDeviceTest(const base::string16& pnp_device_id, 204 void StorageMonitorWinTest::DoMTPDeviceTest(const base::string16& pnp_device_id,
205 bool test_attach) { 205 bool test_attach) {
206 GUID guidDevInterface = GUID_NULL; 206 GUID guidDevInterface = GUID_NULL;
207 HRESULT hr = CLSIDFromString(kWPDDevInterfaceGUID, &guidDevInterface); 207 HRESULT hr = CLSIDFromString(kWPDDevInterfaceGUID, &guidDevInterface);
208 if (FAILED(hr)) 208 if (FAILED(hr))
(...skipping 25 matching lines...) Expand all
234 &location, &unique_id, 234 &location, &unique_id,
235 &name); 235 &name);
236 if (test_attach && !name.empty() && !unique_id.empty()) 236 if (test_attach && !name.empty() && !unique_id.empty())
237 expect_attach_calls++; 237 expect_attach_calls++;
238 else if (!name.empty() && !unique_id.empty()) 238 else if (!name.empty() && !unique_id.empty())
239 expect_detach_calls++; 239 expect_detach_calls++;
240 } 240 }
241 241
242 monitor_->InjectDeviceChange( 242 monitor_->InjectDeviceChange(
243 test_attach ? DBT_DEVICEARRIVAL : DBT_DEVICEREMOVECOMPLETE, 243 test_attach ? DBT_DEVICEARRIVAL : DBT_DEVICEREMOVECOMPLETE,
244 reinterpret_cast<DWORD>(dev_interface_broadcast.get())); 244 reinterpret_cast<LPARAM>(dev_interface_broadcast.get()));
245 245
246 RunUntilIdle(); 246 RunUntilIdle();
247 EXPECT_EQ(expect_attach_calls, observer_.attach_calls()); 247 EXPECT_EQ(expect_attach_calls, observer_.attach_calls());
248 EXPECT_EQ(expect_detach_calls, observer_.detach_calls()); 248 EXPECT_EQ(expect_detach_calls, observer_.detach_calls());
249 } 249 }
250 250
251 bool StorageMonitorWinTest::GetMTPStorageInfo( 251 bool StorageMonitorWinTest::GetMTPStorageInfo(
252 const std::string& storage_device_id, 252 const std::string& storage_device_id,
253 base::string16* pnp_device_id, 253 base::string16* pnp_device_id,
254 base::string16* storage_object_id) { 254 base::string16* storage_object_id) {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 volume_mount_watcher_->BlockDeviceCheckForTesting(); 409 volume_mount_watcher_->BlockDeviceCheckForTesting();
410 base::FilePath kAttachedDevicePath = 410 base::FilePath kAttachedDevicePath =
411 VolumeMountWatcherWin::DriveNumberToFilePath(8); // I: 411 VolumeMountWatcherWin::DriveNumberToFilePath(8); // I:
412 412
413 DEV_BROADCAST_VOLUME volume_broadcast; 413 DEV_BROADCAST_VOLUME volume_broadcast;
414 volume_broadcast.dbcv_size = sizeof(volume_broadcast); 414 volume_broadcast.dbcv_size = sizeof(volume_broadcast);
415 volume_broadcast.dbcv_devicetype = DBT_DEVTYP_VOLUME; 415 volume_broadcast.dbcv_devicetype = DBT_DEVTYP_VOLUME;
416 volume_broadcast.dbcv_flags = 0x0; 416 volume_broadcast.dbcv_flags = 0x0;
417 volume_broadcast.dbcv_unitmask = 0x100; // I: drive 417 volume_broadcast.dbcv_unitmask = 0x100; // I: drive
418 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL, 418 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL,
419 reinterpret_cast<DWORD>(&volume_broadcast)); 419 reinterpret_cast<LPARAM>(&volume_broadcast));
420 420
421 EXPECT_EQ(0u, volume_mount_watcher_->devices_checked().size()); 421 EXPECT_EQ(0u, volume_mount_watcher_->devices_checked().size());
422 422
423 // Re-attach the same volume. We haven't released the mock device check 423 // Re-attach the same volume. We haven't released the mock device check
424 // event, so there'll be pending calls in the UI thread to finish the 424 // event, so there'll be pending calls in the UI thread to finish the
425 // device check notification, blocking the duplicate device injection. 425 // device check notification, blocking the duplicate device injection.
426 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL, 426 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL,
427 reinterpret_cast<DWORD>(&volume_broadcast)); 427 reinterpret_cast<LPARAM>(&volume_broadcast));
428 428
429 EXPECT_EQ(0u, volume_mount_watcher_->devices_checked().size()); 429 EXPECT_EQ(0u, volume_mount_watcher_->devices_checked().size());
430 volume_mount_watcher_->ReleaseDeviceCheck(); 430 volume_mount_watcher_->ReleaseDeviceCheck();
431 RunUntilIdle(); 431 RunUntilIdle();
432 volume_mount_watcher_->ReleaseDeviceCheck(); 432 volume_mount_watcher_->ReleaseDeviceCheck();
433 433
434 // Now let all attach notifications finish running. We'll only get one 434 // Now let all attach notifications finish running. We'll only get one
435 // finish-attach call. 435 // finish-attach call.
436 volume_mount_watcher_->FlushWorkerPoolForTesting(); 436 volume_mount_watcher_->FlushWorkerPoolForTesting();
437 RunUntilIdle(); 437 RunUntilIdle();
438 438
439 const std::vector<base::FilePath>& checked_devices = 439 const std::vector<base::FilePath>& checked_devices =
440 volume_mount_watcher_->devices_checked(); 440 volume_mount_watcher_->devices_checked();
441 ASSERT_EQ(1u, checked_devices.size()); 441 ASSERT_EQ(1u, checked_devices.size());
442 EXPECT_EQ(kAttachedDevicePath, checked_devices[0]); 442 EXPECT_EQ(kAttachedDevicePath, checked_devices[0]);
443 443
444 // We'll receive a duplicate check now that the first check has fully cleared. 444 // We'll receive a duplicate check now that the first check has fully cleared.
445 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL, 445 monitor_->InjectDeviceChange(DBT_DEVICEARRIVAL,
446 reinterpret_cast<DWORD>(&volume_broadcast)); 446 reinterpret_cast<LPARAM>(&volume_broadcast));
447 volume_mount_watcher_->FlushWorkerPoolForTesting(); 447 volume_mount_watcher_->FlushWorkerPoolForTesting();
448 volume_mount_watcher_->ReleaseDeviceCheck(); 448 volume_mount_watcher_->ReleaseDeviceCheck();
449 RunUntilIdle(); 449 RunUntilIdle();
450 450
451 ASSERT_EQ(2u, checked_devices.size()); 451 ASSERT_EQ(2u, checked_devices.size());
452 EXPECT_EQ(kAttachedDevicePath, checked_devices[0]); 452 EXPECT_EQ(kAttachedDevicePath, checked_devices[0]);
453 EXPECT_EQ(kAttachedDevicePath, checked_devices[1]); 453 EXPECT_EQ(kAttachedDevicePath, checked_devices[1]);
454 } 454 }
455 455
456 TEST_F(StorageMonitorWinTest, DeviceInfoForPath) { 456 TEST_F(StorageMonitorWinTest, DeviceInfoForPath) {
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 TestPortableDeviceWatcherWin::kMTPDeviceWithValidInfo); 539 TestPortableDeviceWatcherWin::kMTPDeviceWithValidInfo);
540 EXPECT_EQ(expected, pnp_device_id); 540 EXPECT_EQ(expected, pnp_device_id);
541 EXPECT_EQ(it->object_persistent_id, 541 EXPECT_EQ(it->object_persistent_id,
542 TestPortableDeviceWatcherWin::GetMTPStorageUniqueId( 542 TestPortableDeviceWatcherWin::GetMTPStorageUniqueId(
543 pnp_device_id, storage_object_id)); 543 pnp_device_id, storage_object_id));
544 } 544 }
545 DoMTPDeviceTest(TestPortableDeviceWatcherWin::kMTPDeviceWithValidInfo, false); 545 DoMTPDeviceTest(TestPortableDeviceWatcherWin::kMTPDeviceWithValidInfo, false);
546 } 546 }
547 547
548 } // namespace storage_monitor 548 } // namespace storage_monitor
OLDNEW
« no previous file with comments | « no previous file | components/storage_monitor/test_storage_monitor_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698