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

Side by Side Diff: chrome/browser/geolocation/wifi_data_provider_corewlan_mac.mm

Issue 3828009: Move scoped_nsdisable_screen_update from base to app/mac... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 2 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 | 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 // Implements a WLAN API binding for CoreWLAN, as available on OSX 10.6 5 // Implements a WLAN API binding for CoreWLAN, as available on OSX 10.6
6 6
7 #include "chrome/browser/geolocation/wifi_data_provider_mac.h" 7 #include "chrome/browser/geolocation/wifi_data_provider_mac.h"
8 8
9 #include <dlfcn.h> 9 #include <dlfcn.h>
10 #import <Foundation/Foundation.h> 10 #import <Foundation/Foundation.h>
11 11
12 #include "base/scoped_nsautorelease_pool.h" 12 #include "base/mac/scoped_nsautorelease_pool.h"
13 #include "base/scoped_nsobject.h" 13 #include "base/scoped_nsobject.h"
14 #include "base/sys_string_conversions.h" 14 #include "base/sys_string_conversions.h"
15 15
16 // Define a subset of the CoreWLAN interfaces we require. We can't depend on 16 // Define a subset of the CoreWLAN interfaces we require. We can't depend on
17 // CoreWLAN.h existing as we need to build on 10.5 SDKs. We can't just send 17 // CoreWLAN.h existing as we need to build on 10.5 SDKs. We can't just send
18 // messages to an untyped id due to the build treating warnings as errors, 18 // messages to an untyped id due to the build treating warnings as errors,
19 // hence the reason we need class definitions. 19 // hence the reason we need class definitions.
20 // TODO(joth): When we build all 10.6 code exclusively 10.6 SDK (or later) 20 // TODO(joth): When we build all 10.6 code exclusively 10.6 SDK (or later)
21 // tidy this up to use the framework directly. See http://crbug.com/37703 21 // tidy this up to use the framework directly. See http://crbug.com/37703
22 22
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 scoped_nsobject<NSString> merge_key_; 59 scoped_nsobject<NSString> merge_key_;
60 60
61 DISALLOW_COPY_AND_ASSIGN(CoreWlanApi); 61 DISALLOW_COPY_AND_ASSIGN(CoreWlanApi);
62 }; 62 };
63 63
64 bool CoreWlanApi::Init() { 64 bool CoreWlanApi::Init() {
65 // As the WLAN api binding runs on its own thread, we need to provide our own 65 // As the WLAN api binding runs on its own thread, we need to provide our own
66 // auto release pool. It's simplest to do this as an automatic variable in 66 // auto release pool. It's simplest to do this as an automatic variable in
67 // each method that needs it, to ensure the scoping is correct and does not 67 // each method that needs it, to ensure the scoping is correct and does not
68 // interfere with any other code using autorelease pools on the thread. 68 // interfere with any other code using autorelease pools on the thread.
69 base::ScopedNSAutoreleasePool auto_pool; 69 base::mac::ScopedNSAutoreleasePool auto_pool;
70 bundle_.reset([[NSBundle alloc] 70 bundle_.reset([[NSBundle alloc]
71 initWithPath:@"/System/Library/Frameworks/CoreWLAN.framework"]); 71 initWithPath:@"/System/Library/Frameworks/CoreWLAN.framework"]);
72 if (!bundle_) { 72 if (!bundle_) {
73 DLOG(INFO) << "Failed to load the CoreWLAN framework bundle"; 73 DLOG(INFO) << "Failed to load the CoreWLAN framework bundle";
74 return false; 74 return false;
75 } 75 }
76 76
77 // Dynamically look up the value of the kCWScanKeyMerge (i.e. without build 77 // Dynamically look up the value of the kCWScanKeyMerge (i.e. without build
78 // time dependency on the 10.6 specific library). 78 // time dependency on the 10.6 specific library).
79 void* dl_handle = dlopen([[bundle_ executablePath] fileSystemRepresentation], 79 void* dl_handle = dlopen([[bundle_ executablePath] fileSystemRepresentation],
(...skipping 11 matching lines...) Expand all
91 // this value is itself wrong it's not the end of the world, we might just 91 // this value is itself wrong it's not the end of the world, we might just
92 // get very slightly lower quality location fixes due to SSID merges). 92 // get very slightly lower quality location fixes due to SSID merges).
93 DLOG(WARNING) << "Could not dynamically load the CoreWLAN merge key"; 93 DLOG(WARNING) << "Could not dynamically load the CoreWLAN merge key";
94 merge_key_.reset([@"SCAN_MERGE" retain]); 94 merge_key_.reset([@"SCAN_MERGE" retain]);
95 } 95 }
96 96
97 return true; 97 return true;
98 } 98 }
99 99
100 bool CoreWlanApi::GetAccessPointData(WifiData::AccessPointDataSet* data) { 100 bool CoreWlanApi::GetAccessPointData(WifiData::AccessPointDataSet* data) {
101 base::ScopedNSAutoreleasePool auto_pool; 101 base::mac::ScopedNSAutoreleasePool auto_pool;
102 // Initialize the scan parameters with scan key merging disabled, so we get 102 // Initialize the scan parameters with scan key merging disabled, so we get
103 // every AP listed in the scan without any SSID de-duping logic. 103 // every AP listed in the scan without any SSID de-duping logic.
104 NSDictionary* params = 104 NSDictionary* params =
105 [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] 105 [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]
106 forKey:merge_key_.get()]; 106 forKey:merge_key_.get()];
107 107
108 Class cw_interface_class = [bundle_ classNamed:@"CWInterface"]; 108 Class cw_interface_class = [bundle_ classNamed:@"CWInterface"];
109 NSArray* supported_interfaces = [cw_interface_class supportedInterfaces]; 109 NSArray* supported_interfaces = [cw_interface_class supportedInterfaces];
110 uint interface_error_count = 0; 110 uint interface_error_count = 0;
111 for (NSString* interface_name in supported_interfaces) { 111 for (NSString* interface_name in supported_interfaces) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 [supported_interfaces count] > interface_error_count; 153 [supported_interfaces count] > interface_error_count;
154 } 154 }
155 155
156 WifiDataProviderCommon::WlanApiInterface* NewCoreWlanApi() { 156 WifiDataProviderCommon::WlanApiInterface* NewCoreWlanApi() {
157 scoped_ptr<CoreWlanApi> self(new CoreWlanApi); 157 scoped_ptr<CoreWlanApi> self(new CoreWlanApi);
158 if (self->Init()) 158 if (self->Init())
159 return self.release(); 159 return self.release();
160 160
161 return NULL; 161 return NULL;
162 } 162 }
OLDNEW
« no previous file with comments | « chrome/browser/dom_ui/options/advanced_options_utils_mac.mm ('k') | chrome/browser/platform_util_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698