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

Side by Side Diff: chrome/browser/extensions/api/system_info/system_info_api.cc

Issue 18578008: [SystemInfo API] Move Storage API out of experimental namespace and rename to the "system" namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/extensions/api/system_info/system_info_api.h" 5 #include "chrome/browser/extensions/api/system_info/system_info_api.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
11 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/memory/singleton.h" 13 #include "base/memory/singleton.h"
14 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/extensions/api/system_info_storage/storage_info_provide r.h" 17 #include "chrome/browser/extensions/api/system_info_storage/storage_info_provide r.h"
18 #include "chrome/browser/extensions/event_names.h" 18 #include "chrome/browser/extensions/event_names.h"
19 #include "chrome/browser/extensions/event_router_forwarder.h" 19 #include "chrome/browser/extensions/event_router_forwarder.h"
20 #include "chrome/browser/storage_monitor/removable_storage_observer.h" 20 #include "chrome/browser/storage_monitor/removable_storage_observer.h"
21 #include "chrome/browser/storage_monitor/storage_info.h" 21 #include "chrome/browser/storage_monitor/storage_info.h"
22 #include "chrome/browser/storage_monitor/storage_monitor.h" 22 #include "chrome/browser/storage_monitor/storage_monitor.h"
23 #include "chrome/common/extensions/api/experimental_system_info_storage.h" 23 #include "chrome/common/extensions/api/experimental_system_info_storage.h"
24 #include "chrome/common/extensions/api/system_info_storage.h"
24 #include "ui/gfx/display_observer.h" 25 #include "ui/gfx/display_observer.h"
25 26
26 #if defined(USE_ASH) 27 #if defined(USE_ASH)
27 #include "ash/screen_ash.h" 28 #include "ash/screen_ash.h"
28 #include "ash/shell.h" 29 #include "ash/shell.h"
29 #endif 30 #endif
30 31
31 namespace extensions { 32 namespace extensions {
32 33
33 using api::experimental_system_info_storage::StorageFreeSpaceChangeInfo; 34 using api::experimental_system_info_storage::StorageFreeSpaceChangeInfo;
34 using api::experimental_system_info_storage::StorageUnitInfo; 35 using api::system_info_storage::StorageUnitInfo;
35 using api::experimental_system_info_storage::StorageUnitType; 36 using api::system_info_storage::StorageUnitType;
36 using content::BrowserThread; 37 using content::BrowserThread;
37 38
38 namespace { 39 namespace {
39 40
40 // The display events use the "systemInfo" prefix. 41 // The display events use the "systemInfo" prefix.
41 const char kSystemInfoEventPrefix[] = "systemInfo"; 42 const char kSystemInfoEventPrefix[] = "systemInfo";
42 // The storage events still use the "experimental.systemInfo" prefix. 43 // The storage events still use the "experimental.systemInfo" prefix.
43 const char kExperimentalSystemInfoEventPrefix[] = "experimental.systemInfo"; 44 const char kExperimentalSystemInfoEventPrefix[] = "experimental.systemInfo";
44 45
45 bool IsDisplayChangedEvent(const std::string& event_name) { 46 bool IsDisplayChangedEvent(const std::string& event_name) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE; 79 virtual void OnDisplayBoundsChanged(const gfx::Display& display) OVERRIDE;
79 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE; 80 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE;
80 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE; 81 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE;
81 82
82 // chrome::RemovableStorageObserver implementation. 83 // chrome::RemovableStorageObserver implementation.
83 virtual void OnRemovableStorageAttached( 84 virtual void OnRemovableStorageAttached(
84 const chrome::StorageInfo& info) OVERRIDE; 85 const chrome::StorageInfo& info) OVERRIDE;
85 virtual void OnRemovableStorageDetached( 86 virtual void OnRemovableStorageDetached(
86 const chrome::StorageInfo& info) OVERRIDE; 87 const chrome::StorageInfo& info) OVERRIDE;
87 88
88 void DispatchStorageAttachedEvent(const chrome::StorageInfo& info, 89 void DispatchStorageAttachedEvent(const chrome::StorageInfo& info);
89 int64 avail_bytes);
90 90
91 // Called from any thread to dispatch the systemInfo event to all extension 91 // Called from any thread to dispatch the systemInfo event to all extension
92 // processes cross multiple profiles. 92 // processes cross multiple profiles.
93 void DispatchEvent(const std::string& event_name, 93 void DispatchEvent(const std::string& event_name,
94 scoped_ptr<base::ListValue> args); 94 scoped_ptr<base::ListValue> args);
95 95
96 // The callbacks of querying storage info to start and stop watching the 96 // The callbacks of querying storage info to start and stop watching the
97 // storages. Called from UI thread. 97 // storages. Called from UI thread.
98 void StartWatchingStorages(bool success); 98 void StartWatchingStorages(bool success);
99 void StopWatchingStorages(bool success); 99 void StopWatchingStorages(bool success);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 info.available_capacity = static_cast<double>(new_value); 210 info.available_capacity = static_cast<double>(new_value);
211 211
212 scoped_ptr<base::ListValue> args(new base::ListValue()); 212 scoped_ptr<base::ListValue> args(new base::ListValue());
213 args->Append(info.ToValue().release()); 213 args->Append(info.ToValue().release());
214 214
215 DispatchEvent(event_names::kOnStorageAvailableCapacityChanged, args.Pass()); 215 DispatchEvent(event_names::kOnStorageAvailableCapacityChanged, args.Pass());
216 } 216 }
217 217
218 void SystemInfoEventRouter::OnRemovableStorageAttached( 218 void SystemInfoEventRouter::OnRemovableStorageAttached(
219 const chrome::StorageInfo& info) { 219 const chrome::StorageInfo& info) {
220 base::PostTaskAndReplyWithResult( 220 DispatchStorageAttachedEvent(info);
221 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior(
222 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN),
223 FROM_HERE,
224 base::Bind(&StorageInfoProvider::GetStorageFreeSpaceFromTransientId,
225 StorageInfoProvider::Get(),
226 StorageInfoProvider::Get()->GetTransientIdForDeviceId(
227 info.device_id())),
228 base::Bind(&SystemInfoEventRouter::DispatchStorageAttachedEvent,
229 // Since SystemInfoEventRouter is a global lazy instance, this
230 // pointer will be alive when the reply comes back.
231 base::Unretained(this),
232 info));
233 } 221 }
234 222
235 void SystemInfoEventRouter::DispatchStorageAttachedEvent( 223 void SystemInfoEventRouter::DispatchStorageAttachedEvent(
236 const chrome::StorageInfo& info, int64 avail_bytes) { 224 const chrome::StorageInfo& info) {
237 StorageUnitInfo unit; 225 StorageUnitInfo unit;
238 systeminfo::BuildStorageUnitInfo(info, &unit); 226 systeminfo::BuildStorageUnitInfo(info, &unit);
239 227
240 unit.available_capacity =
241 avail_bytes > 0 ? static_cast<double>(avail_bytes) : 0;
242
243 scoped_ptr<base::ListValue> args(new base::ListValue); 228 scoped_ptr<base::ListValue> args(new base::ListValue);
244 args->Append(unit.ToValue().release()); 229 args->Append(unit.ToValue().release());
245 DispatchEvent(event_names::kOnStorageAttached, args.Pass()); 230 DispatchEvent(event_names::kOnStorageAttached, args.Pass());
246 } 231 }
247 232
248 void SystemInfoEventRouter::OnRemovableStorageDetached( 233 void SystemInfoEventRouter::OnRemovableStorageDetached(
249 const chrome::StorageInfo& info) { 234 const chrome::StorageInfo& info) {
250 scoped_ptr<base::ListValue> args(new base::ListValue); 235 scoped_ptr<base::ListValue> args(new base::ListValue);
251 args->Append(new base::StringValue(StorageInfoProvider::Get()-> 236 args->Append(new base::StringValue(StorageInfoProvider::Get()->
252 GetTransientIdForDeviceId(info.device_id()))); 237 GetTransientIdForDeviceId(info.device_id())));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 291
307 void SystemInfoAPI::OnListenerAdded(const EventListenerInfo& details) { 292 void SystemInfoAPI::OnListenerAdded(const EventListenerInfo& details) {
308 SystemInfoEventRouter::GetInstance()->AddEventListener(details.event_name); 293 SystemInfoEventRouter::GetInstance()->AddEventListener(details.event_name);
309 } 294 }
310 295
311 void SystemInfoAPI::OnListenerRemoved(const EventListenerInfo& details) { 296 void SystemInfoAPI::OnListenerRemoved(const EventListenerInfo& details) {
312 SystemInfoEventRouter::GetInstance()->RemoveEventListener(details.event_name); 297 SystemInfoEventRouter::GetInstance()->RemoveEventListener(details.event_name);
313 } 298 }
314 299
315 } // namespace extensions 300 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698