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

Side by Side Diff: content/browser/geolocation/wifi_data_provider_win.cc

Issue 102593002: Convert string16 to base::string16 in content. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // Windows Vista uses the Native Wifi (WLAN) API for accessing WiFi cards. See 5 // Windows Vista uses the Native Wifi (WLAN) API for accessing WiFi cards. See
6 // http://msdn.microsoft.com/en-us/library/ms705945(VS.85).aspx. Windows XP 6 // http://msdn.microsoft.com/en-us/library/ms705945(VS.85).aspx. Windows XP
7 // Service Pack 3 (and Windows XP Service Pack 2, if upgraded with a hot fix) 7 // Service Pack 3 (and Windows XP Service Pack 2, if upgraded with a hot fix)
8 // also support a limited version of the WLAN API. See 8 // also support a limited version of the WLAN API. See
9 // http://msdn.microsoft.com/en-us/library/bb204766.aspx. The WLAN API uses 9 // http://msdn.microsoft.com/en-us/library/bb204766.aspx. The WLAN API uses
10 // wlanapi.h, which is not part of the SDK used by Gears, so is replicated 10 // wlanapi.h, which is not part of the SDK used by Gears, so is replicated
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 class WindowsNdisApi : public WifiDataProviderCommon::WlanApiInterface { 120 class WindowsNdisApi : public WifiDataProviderCommon::WlanApiInterface {
121 public: 121 public:
122 virtual ~WindowsNdisApi(); 122 virtual ~WindowsNdisApi();
123 static WindowsNdisApi* Create(); 123 static WindowsNdisApi* Create();
124 124
125 // WlanApiInterface 125 // WlanApiInterface
126 virtual bool GetAccessPointData(WifiData::AccessPointDataSet* data); 126 virtual bool GetAccessPointData(WifiData::AccessPointDataSet* data);
127 127
128 private: 128 private:
129 static bool GetInterfacesNDIS( 129 static bool GetInterfacesNDIS(
130 std::vector<string16>* interface_service_names_out); 130 std::vector<base::string16>* interface_service_names_out);
131 131
132 // Swaps in content of the vector passed 132 // Swaps in content of the vector passed
133 explicit WindowsNdisApi(std::vector<string16>* interface_service_names); 133 explicit WindowsNdisApi(std::vector<base::string16>* interface_service_names);
134 134
135 bool GetInterfaceDataNDIS(HANDLE adapter_handle, 135 bool GetInterfaceDataNDIS(HANDLE adapter_handle,
136 WifiData::AccessPointDataSet* data); 136 WifiData::AccessPointDataSet* data);
137 // NDIS variables. 137 // NDIS variables.
138 std::vector<string16> interface_service_names_; 138 std::vector<base::string16> interface_service_names_;
139 139
140 // Remembers scan result buffer size across calls. 140 // Remembers scan result buffer size across calls.
141 int oid_buffer_size_; 141 int oid_buffer_size_;
142 }; 142 };
143 143
144 // Extracts data for an access point and converts to Gears format. 144 // Extracts data for an access point and converts to Gears format.
145 bool GetNetworkData(const WLAN_BSS_ENTRY& bss_entry, 145 bool GetNetworkData(const WLAN_BSS_ENTRY& bss_entry,
146 AccessPointData* access_point_data); 146 AccessPointData* access_point_data);
147 bool UndefineDosDevice(const string16& device_name); 147 bool UndefineDosDevice(const base::string16& device_name);
148 bool DefineDosDeviceIfNotExists(const string16& device_name); 148 bool DefineDosDeviceIfNotExists(const base::string16& device_name);
149 HANDLE GetFileHandle(const string16& device_name); 149 HANDLE GetFileHandle(const base::string16& device_name);
150 // Makes the OID query and returns a Win32 error code. 150 // Makes the OID query and returns a Win32 error code.
151 int PerformQuery(HANDLE adapter_handle, 151 int PerformQuery(HANDLE adapter_handle,
152 BYTE* buffer, 152 BYTE* buffer,
153 DWORD buffer_size, 153 DWORD buffer_size,
154 DWORD* bytes_out); 154 DWORD* bytes_out);
155 bool ResizeBuffer(int requested_size, scoped_ptr_malloc<BYTE>* buffer); 155 bool ResizeBuffer(int requested_size, scoped_ptr_malloc<BYTE>* buffer);
156 // Gets the system directory and appends a trailing slash if not already 156 // Gets the system directory and appends a trailing slash if not already
157 // present. 157 // present.
158 bool GetSystemDirectory(string16* path); 158 bool GetSystemDirectory(base::string16* path);
159 } // namespace 159 } // namespace
160 160
161 WifiDataProviderImplBase* WifiDataProvider::DefaultFactoryFunction() { 161 WifiDataProviderImplBase* WifiDataProvider::DefaultFactoryFunction() {
162 return new Win32WifiDataProvider(); 162 return new Win32WifiDataProvider();
163 } 163 }
164 164
165 Win32WifiDataProvider::Win32WifiDataProvider() { 165 Win32WifiDataProvider::Win32WifiDataProvider() {
166 } 166 }
167 167
168 Win32WifiDataProvider::~Win32WifiDataProvider() { 168 Win32WifiDataProvider::~Win32WifiDataProvider() {
(...skipping 26 matching lines...) Expand all
195 } 195 }
196 196
197 WindowsWlanApi::~WindowsWlanApi() { 197 WindowsWlanApi::~WindowsWlanApi() {
198 FreeLibrary(library_); 198 FreeLibrary(library_);
199 } 199 }
200 200
201 WindowsWlanApi* WindowsWlanApi::Create() { 201 WindowsWlanApi* WindowsWlanApi::Create() {
202 if (base::win::GetVersion() < base::win::VERSION_VISTA) 202 if (base::win::GetVersion() < base::win::VERSION_VISTA)
203 return NULL; 203 return NULL;
204 // We use an absolute path to load the DLL to avoid DLL preloading attacks. 204 // We use an absolute path to load the DLL to avoid DLL preloading attacks.
205 string16 system_directory; 205 base::string16 system_directory;
206 if (!GetSystemDirectory(&system_directory)) { 206 if (!GetSystemDirectory(&system_directory)) {
207 return NULL; 207 return NULL;
208 } 208 }
209 DCHECK(!system_directory.empty()); 209 DCHECK(!system_directory.empty());
210 string16 dll_path = system_directory + L"wlanapi.dll"; 210 base::string16 dll_path = system_directory + L"wlanapi.dll";
211 HINSTANCE library = LoadLibraryEx(dll_path.c_str(), 211 HINSTANCE library = LoadLibraryEx(dll_path.c_str(),
212 NULL, 212 NULL,
213 LOAD_WITH_ALTERED_SEARCH_PATH); 213 LOAD_WITH_ALTERED_SEARCH_PATH);
214 if (!library) { 214 if (!library) {
215 return NULL; 215 return NULL;
216 } 216 }
217 return new WindowsWlanApi(library); 217 return new WindowsWlanApi(library);
218 } 218 }
219 219
220 void WindowsWlanApi::GetWLANFunctions(HINSTANCE wlan_library) { 220 void WindowsWlanApi::GetWLANFunctions(HINSTANCE wlan_library) {
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 } 352 }
353 } 353 }
354 354
355 (*WlanFreeMemory_function_)(bss_list); 355 (*WlanFreeMemory_function_)(bss_list);
356 356
357 return found; 357 return found;
358 } 358 }
359 359
360 // WindowsNdisApi 360 // WindowsNdisApi
361 WindowsNdisApi::WindowsNdisApi( 361 WindowsNdisApi::WindowsNdisApi(
362 std::vector<string16>* interface_service_names) 362 std::vector<base::string16>* interface_service_names)
363 : oid_buffer_size_(kInitialBufferSize) { 363 : oid_buffer_size_(kInitialBufferSize) {
364 DCHECK(!interface_service_names->empty()); 364 DCHECK(!interface_service_names->empty());
365 interface_service_names_.swap(*interface_service_names); 365 interface_service_names_.swap(*interface_service_names);
366 } 366 }
367 367
368 WindowsNdisApi::~WindowsNdisApi() { 368 WindowsNdisApi::~WindowsNdisApi() {
369 } 369 }
370 370
371 WindowsNdisApi* WindowsNdisApi::Create() { 371 WindowsNdisApi* WindowsNdisApi::Create() {
372 std::vector<string16> interface_service_names; 372 std::vector<base::string16> interface_service_names;
373 if (GetInterfacesNDIS(&interface_service_names)) { 373 if (GetInterfacesNDIS(&interface_service_names)) {
374 return new WindowsNdisApi(&interface_service_names); 374 return new WindowsNdisApi(&interface_service_names);
375 } 375 }
376 return NULL; 376 return NULL;
377 } 377 }
378 378
379 bool WindowsNdisApi::GetAccessPointData(WifiData::AccessPointDataSet* data) { 379 bool WindowsNdisApi::GetAccessPointData(WifiData::AccessPointDataSet* data) {
380 DCHECK(data); 380 DCHECK(data);
381 int interfaces_failed = 0; 381 int interfaces_failed = 0;
382 int interfaces_succeeded = 0; 382 int interfaces_succeeded = 0;
(...skipping 22 matching lines...) Expand all
405 CloseHandle(adapter_handle); 405 CloseHandle(adapter_handle);
406 UndefineDosDevice(interface_service_names_[i]); 406 UndefineDosDevice(interface_service_names_[i]);
407 } 407 }
408 408
409 // Return true if at least one interface succeeded, or at the very least none 409 // Return true if at least one interface succeeded, or at the very least none
410 // failed. 410 // failed.
411 return interfaces_succeeded > 0 || interfaces_failed == 0; 411 return interfaces_succeeded > 0 || interfaces_failed == 0;
412 } 412 }
413 413
414 bool WindowsNdisApi::GetInterfacesNDIS( 414 bool WindowsNdisApi::GetInterfacesNDIS(
415 std::vector<string16>* interface_service_names_out) { 415 std::vector<base::string16>* interface_service_names_out) {
416 HKEY network_cards_key = NULL; 416 HKEY network_cards_key = NULL;
417 if (RegOpenKeyEx( 417 if (RegOpenKeyEx(
418 HKEY_LOCAL_MACHINE, 418 HKEY_LOCAL_MACHINE,
419 L"Software\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards", 419 L"Software\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards",
420 0, 420 0,
421 KEY_READ, 421 KEY_READ,
422 &network_cards_key) != ERROR_SUCCESS) { 422 &network_cards_key) != ERROR_SUCCESS) {
423 return false; 423 return false;
424 } 424 }
425 DCHECK(network_cards_key); 425 DCHECK(network_cards_key);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 UTF8ToUTF16(reinterpret_cast<const char*>(bss_entry.dot11Ssid.ucSSID), 523 UTF8ToUTF16(reinterpret_cast<const char*>(bss_entry.dot11Ssid.ucSSID),
524 static_cast<ULONG>(bss_entry.dot11Ssid.uSSIDLength), 524 static_cast<ULONG>(bss_entry.dot11Ssid.uSSIDLength),
525 &access_point_data->ssid); 525 &access_point_data->ssid);
526 // TODO(steveblock): Is it possible to get the following? 526 // TODO(steveblock): Is it possible to get the following?
527 // access_point_data->signal_to_noise 527 // access_point_data->signal_to_noise
528 // access_point_data->age 528 // access_point_data->age
529 // access_point_data->channel 529 // access_point_data->channel
530 return true; 530 return true;
531 } 531 }
532 532
533 bool UndefineDosDevice(const string16& device_name) { 533 bool UndefineDosDevice(const base::string16& device_name) {
534 // We remove only the mapping we use, that is \Device\<device_name>. 534 // We remove only the mapping we use, that is \Device\<device_name>.
535 string16 target_path = L"\\Device\\" + device_name; 535 base::string16 target_path = L"\\Device\\" + device_name;
536 return DefineDosDevice( 536 return DefineDosDevice(
537 DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE, 537 DDD_RAW_TARGET_PATH | DDD_REMOVE_DEFINITION | DDD_EXACT_MATCH_ON_REMOVE,
538 device_name.c_str(), 538 device_name.c_str(),
539 target_path.c_str()) == TRUE; 539 target_path.c_str()) == TRUE;
540 } 540 }
541 541
542 bool DefineDosDeviceIfNotExists(const string16& device_name) { 542 bool DefineDosDeviceIfNotExists(const base::string16& device_name) {
543 // We create a DOS device name for the device at \Device\<device_name>. 543 // We create a DOS device name for the device at \Device\<device_name>.
544 string16 target_path = L"\\Device\\" + device_name; 544 base::string16 target_path = L"\\Device\\" + device_name;
545 545
546 TCHAR target[kStringLength]; 546 TCHAR target[kStringLength];
547 if (QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 && 547 if (QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 &&
548 target_path.compare(target) == 0) { 548 target_path.compare(target) == 0) {
549 // Device already exists. 549 // Device already exists.
550 return true; 550 return true;
551 } 551 }
552 552
553 if (GetLastError() != ERROR_FILE_NOT_FOUND) { 553 if (GetLastError() != ERROR_FILE_NOT_FOUND) {
554 return false; 554 return false;
555 } 555 }
556 556
557 if (!DefineDosDevice(DDD_RAW_TARGET_PATH, 557 if (!DefineDosDevice(DDD_RAW_TARGET_PATH,
558 device_name.c_str(), 558 device_name.c_str(),
559 target_path.c_str())) { 559 target_path.c_str())) {
560 return false; 560 return false;
561 } 561 }
562 562
563 // Check that the device is really there. 563 // Check that the device is really there.
564 return QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 && 564 return QueryDosDevice(device_name.c_str(), target, kStringLength) > 0 &&
565 target_path.compare(target) == 0; 565 target_path.compare(target) == 0;
566 } 566 }
567 567
568 HANDLE GetFileHandle(const string16& device_name) { 568 HANDLE GetFileHandle(const base::string16& device_name) {
569 // We access a device with DOS path \Device\<device_name> at 569 // We access a device with DOS path \Device\<device_name> at
570 // \\.\<device_name>. 570 // \\.\<device_name>.
571 string16 formatted_device_name = L"\\\\.\\" + device_name; 571 base::string16 formatted_device_name = L"\\\\.\\" + device_name;
572 572
573 return CreateFile(formatted_device_name.c_str(), 573 return CreateFile(formatted_device_name.c_str(),
574 GENERIC_READ, 574 GENERIC_READ,
575 FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode 575 FILE_SHARE_READ | FILE_SHARE_WRITE, // share mode
576 0, // security attributes 576 0, // security attributes
577 OPEN_EXISTING, 577 OPEN_EXISTING,
578 0, // flags and attributes 578 0, // flags and attributes
579 INVALID_HANDLE_VALUE); 579 INVALID_HANDLE_VALUE);
580 } 580 }
581 581
(...skipping 21 matching lines...) Expand all
603 if (requested_size > kMaximumBufferSize) { 603 if (requested_size > kMaximumBufferSize) {
604 buffer->reset(); 604 buffer->reset();
605 return false; 605 return false;
606 } 606 }
607 607
608 buffer->reset(reinterpret_cast<BYTE*>( 608 buffer->reset(reinterpret_cast<BYTE*>(
609 realloc(buffer->release(), requested_size))); 609 realloc(buffer->release(), requested_size)));
610 return buffer != NULL; 610 return buffer != NULL;
611 } 611 }
612 612
613 bool GetSystemDirectory(string16* path) { 613 bool GetSystemDirectory(base::string16* path) {
614 DCHECK(path); 614 DCHECK(path);
615 // Return value includes terminating NULL. 615 // Return value includes terminating NULL.
616 int buffer_size = ::GetSystemDirectory(NULL, 0); 616 int buffer_size = ::GetSystemDirectory(NULL, 0);
617 if (buffer_size == 0) { 617 if (buffer_size == 0) {
618 return false; 618 return false;
619 } 619 }
620 scoped_ptr<char16[]> buffer(new char16[buffer_size]); 620 scoped_ptr<char16[]> buffer(new char16[buffer_size]);
621 621
622 // Return value excludes terminating NULL. 622 // Return value excludes terminating NULL.
623 int characters_written = ::GetSystemDirectory(buffer.get(), buffer_size); 623 int characters_written = ::GetSystemDirectory(buffer.get(), buffer_size);
624 if (characters_written == 0) { 624 if (characters_written == 0) {
625 return false; 625 return false;
626 } 626 }
627 DCHECK_EQ(buffer_size - 1, characters_written); 627 DCHECK_EQ(buffer_size - 1, characters_written);
628 628
629 path->assign(buffer.get(), characters_written); 629 path->assign(buffer.get(), characters_written);
630 630
631 if (*path->rbegin() != L'\\') { 631 if (*path->rbegin() != L'\\') {
632 path->append(L"\\"); 632 path->append(L"\\");
633 } 633 }
634 DCHECK_EQ(L'\\', *path->rbegin()); 634 DCHECK_EQ(L'\\', *path->rbegin());
635 return true; 635 return true;
636 } 636 }
637 } // namespace 637 } // namespace
638 638
639 } // namespace content 639 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/geolocation/wifi_data_provider_common.cc ('k') | content/browser/gpu/gpu_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698