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

Side by Side Diff: chrome/browser/extensions/api/system_private/system_private_api.cc

Issue 12089062: Move API functions registrations out of ExtensionFunctionRegistry. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 7 years, 10 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/api/system_private/system_private_api.h"
6
7 #include "base/prefs/pref_service.h"
8 #include "base/values.h"
9 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/extensions/event_router_forwarder.h"
11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/common/pref_names.h"
13
14 #if defined(OS_CHROMEOS)
15 #include "chromeos/dbus/dbus_thread_manager.h"
16 #include "chromeos/dbus/update_engine_client.h"
17 #else
18 #include "chrome/browser/upgrade_detector.h"
19 #endif
20
21 namespace {
22
23 // Maps prefs::kIncognitoModeAvailability values (0 = enabled, ...)
24 // to strings exposed to extensions.
25 const char* kIncognitoModeAvailabilityStrings[] = {
26 "enabled",
27 "disabled",
28 "forced"
29 };
30
31 // Property keys.
32 const char kBrightnessKey[] = "brightness";
33 const char kDownloadProgressKey[] = "downloadProgress";
34 const char kIsVolumeMutedKey[] = "isVolumeMuted";
35 const char kStateKey[] = "state";
36 const char kUserInitiatedKey[] = "userInitiated";
37 const char kVolumeKey[] = "volume";
38
39 // System update states.
40 const char kNotAvailableState[] = "NotAvailable";
41 const char kUpdatingState[] = "Updating";
42 const char kNeedRestartState[] = "NeedRestart";
43
44 // Event names.
45 const char kOnBrightnessChanged[] = "systemPrivate.onBrightnessChanged";
46 const char kOnVolumeChanged[] = "systemPrivate.onVolumeChanged";
47 const char kOnScreenUnlocked[] = "systemPrivate.onScreenUnlocked";
48 const char kOnWokeUp[] = "systemPrivate.onWokeUp";
49
50 // Dispatches an extension event with |argument|
51 void DispatchEvent(const std::string& event_name, base::Value* argument) {
52 scoped_ptr<base::ListValue> list_args(new base::ListValue());
53 if (argument) {
54 list_args->Append(argument);
55 }
56 g_browser_process->extension_event_router_forwarder()->
57 BroadcastEventToRenderers(event_name, list_args.Pass(), GURL());
58 }
59
60 } // namespace
61
62 namespace extensions {
63
64 bool SystemPrivateGetIncognitoModeAvailabilityFunction::RunImpl() {
65 PrefService* prefs = profile_->GetPrefs();
66 int value = prefs->GetInteger(prefs::kIncognitoModeAvailability);
67 EXTENSION_FUNCTION_VALIDATE(
68 value >= 0 &&
69 value < static_cast<int>(arraysize(kIncognitoModeAvailabilityStrings)));
70 SetResult(Value::CreateStringValue(kIncognitoModeAvailabilityStrings[value]));
71 return true;
72 }
73
74 bool SystemPrivateGetUpdateStatusFunction::RunImpl() {
75 std::string state;
76 double download_progress = 0;
77 #if defined(OS_CHROMEOS)
78 // With UpdateEngineClient, we can provide more detailed information about
79 // system updates on ChromeOS.
80 const chromeos::UpdateEngineClient::Status status =
81 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->
82 GetLastStatus();
83 // |download_progress| is set to 1 after download finishes
84 // (i.e. verify, finalize and need-reboot phase) to indicate the progress
85 // even though |status.download_progress| is 0 in these phases.
86 switch (status.status) {
87 case chromeos::UpdateEngineClient::UPDATE_STATUS_ERROR:
88 state = kNotAvailableState;
89 break;
90 case chromeos::UpdateEngineClient::UPDATE_STATUS_IDLE:
91 state = kNotAvailableState;
92 break;
93 case chromeos::UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
94 state = kNotAvailableState;
95 break;
96 case chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
97 state = kUpdatingState;
98 break;
99 case chromeos::UpdateEngineClient::UPDATE_STATUS_DOWNLOADING:
100 state = kUpdatingState;
101 download_progress = status.download_progress;
102 break;
103 case chromeos::UpdateEngineClient::UPDATE_STATUS_VERIFYING:
104 state = kUpdatingState;
105 download_progress = 1;
106 break;
107 case chromeos::UpdateEngineClient::UPDATE_STATUS_FINALIZING:
108 state = kUpdatingState;
109 download_progress = 1;
110 break;
111 case chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT:
112 state = kNeedRestartState;
113 download_progress = 1;
114 break;
115 case chromeos::UpdateEngineClient::UPDATE_STATUS_REPORTING_ERROR_EVENT:
116 state = kNotAvailableState;
117 break;
118 }
119 #else
120 if (UpgradeDetector::GetInstance()->notify_upgrade()) {
121 state = kNeedRestartState;
122 download_progress = 1;
123 } else {
124 state = kNotAvailableState;
125 }
126 #endif
127 DictionaryValue* dict = new DictionaryValue();
128 dict->SetString(kStateKey, state);
129 dict->SetDouble(kDownloadProgressKey, download_progress);
130 SetResult(dict);
131
132 return true;
133 }
134
135 void DispatchVolumeChangedEvent(double volume, bool is_volume_muted) {
136 DictionaryValue* dict = new DictionaryValue();
137 dict->SetDouble(kVolumeKey, volume);
138 dict->SetBoolean(kIsVolumeMutedKey, is_volume_muted);
139 DispatchEvent(kOnVolumeChanged, dict);
140 }
141
142 void DispatchBrightnessChangedEvent(int brightness, bool user_initiated) {
143 DictionaryValue* dict = new DictionaryValue();
144 dict->SetInteger(kBrightnessKey, brightness);
145 dict->SetBoolean(kUserInitiatedKey, user_initiated);
146 DispatchEvent(kOnBrightnessChanged, dict);
147 }
148
149 void DispatchScreenUnlockedEvent() {
150 DispatchEvent(kOnScreenUnlocked, NULL);
151 }
152
153 void DispatchWokeUpEvent() {
154 DispatchEvent(kOnWokeUp, NULL);
155 }
156
157 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698