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

Side by Side Diff: chrome/browser/chromeos/cros/login_library.cc

Issue 7891021: Use stub impl when libcros fails to load (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix power manager stub impl Created 9 years, 3 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/chromeos/cros/login_library.h" 5 #include "chrome/browser/chromeos/cros/login_library.h"
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/task.h" 8 #include "base/task.h"
9 #include "base/timer.h" 9 #include "base/timer.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/chromeos/cros/cros_library.h" 11 #include "chrome/browser/chromeos/cros/cros_library.h"
12 #include "chrome/browser/chromeos/login/signed_settings.h" 12 #include "chrome/browser/chromeos/login/signed_settings.h"
13 #include "chrome/browser/chromeos/login/signed_settings_temp_storage.h" 13 #include "chrome/browser/chromeos/login/signed_settings_temp_storage.h"
14 #include "chrome/browser/policy/proto/device_management_backend.pb.h" 14 #include "chrome/browser/policy/proto/device_management_backend.pb.h"
15 #include "chrome/browser/prefs/pref_service.h" 15 #include "chrome/browser/prefs/pref_service.h"
16 #include "chrome/common/chrome_notification_types.h" 16 #include "chrome/common/chrome_notification_types.h"
17 #include "content/browser/browser_thread.h" 17 #include "content/browser/browser_thread.h"
18 #include "content/common/notification_service.h" 18 #include "content/common/notification_service.h"
19 19
20 namespace em = enterprise_management; 20 namespace em = enterprise_management;
21 namespace chromeos { 21 namespace chromeos {
22 22
23 LoginLibrary::~LoginLibrary() {} 23 LoginLibrary::~LoginLibrary() {}
24 24
25 class LoginLibraryImpl : public LoginLibrary { 25 class LoginLibraryImpl : public LoginLibrary {
26 public: 26 public:
27 LoginLibraryImpl() : job_restart_request_(NULL) { 27 LoginLibraryImpl() : job_restart_request_(NULL) {
28 CHECK(CrosLibrary::Get() && CrosLibrary::Get()->libcros_loaded());
29 Init();
30 } 28 }
31 29
32 virtual ~LoginLibraryImpl() { 30 virtual ~LoginLibraryImpl() {
33 if (session_connection_) { 31 if (session_connection_) {
34 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 32 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
35 chromeos::DisconnectSession(session_connection_); 33 chromeos::DisconnectSession(session_connection_);
36 } 34 }
37 } 35 }
38 36
39 void EmitLoginPromptReady() { 37 virtual void Init() OVERRIDE {
40 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { 38 DCHECK(CrosLibrary::Get()->libcros_loaded());
41 BrowserThread::PostTask( 39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
42 BrowserThread::UI, FROM_HERE, 40 session_connection_ = chromeos::MonitorSession(&Handler, this);
43 NewRunnableMethod(this, &LoginLibraryImpl::EmitLoginPromptReady)); 41 }
44 return; 42
45 } 43 virtual void EmitLoginPromptReady() OVERRIDE {
44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
46 chromeos::EmitLoginPromptReady(); 45 chromeos::EmitLoginPromptReady();
47 } 46 }
48 47
49 void RequestRetrievePolicy(RetrievePolicyCallback callback, void* delegate) { 48 virtual void RequestRetrievePolicy(
49 RetrievePolicyCallback callback, void* delegate) OVERRIDE {
50 DCHECK(callback) << "must provide a callback to RequestRetrievePolicy()"; 50 DCHECK(callback) << "must provide a callback to RequestRetrievePolicy()";
51 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 51 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
52 chromeos::RetrievePolicy(callback, delegate); 52 chromeos::RetrievePolicy(callback, delegate);
53 } 53 }
54 54
55 void RequestStorePolicy(const std::string& policy, 55 virtual void RequestStorePolicy(const std::string& policy,
56 StorePolicyCallback callback, 56 StorePolicyCallback callback,
57 void* delegate) { 57 void* delegate) OVERRIDE {
58 DCHECK(callback) << "must provide a callback to StorePolicy()"; 58 DCHECK(callback) << "must provide a callback to StorePolicy()";
59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 59 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
60 chromeos::StorePolicy(policy.c_str(), policy.length(), callback, delegate); 60 chromeos::StorePolicy(policy.c_str(), policy.length(), callback, delegate);
61 } 61 }
62 62
63 bool StartSession(const std::string& user_email, 63 virtual bool StartSession(
64 const std::string& unique_id /* unused */) { 64 const std::string& user_email,
65 const std::string& unique_id /* unused */) OVERRIDE {
65 // only pass unique_id through once we use it for something. 66 // only pass unique_id through once we use it for something.
66 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 67 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
67 return chromeos::StartSession(user_email.c_str(), ""); 68 return chromeos::StartSession(user_email.c_str(), "");
68 } 69 }
69 70
70 bool StopSession(const std::string& unique_id /* unused */) { 71 virtual bool StopSession(const std::string& unique_id /* unused */) OVERRIDE {
71 // only pass unique_id through once we use it for something. 72 // only pass unique_id through once we use it for something.
72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 73 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
73 return chromeos::StopSession(""); 74 return chromeos::StopSession("");
74 } 75 }
75 76
76 bool RestartEntd() { 77 virtual bool RestartEntd() OVERRIDE {
77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
78 return chromeos::RestartEntd(); 79 return chromeos::RestartEntd();
79 } 80 }
80 81
81 bool RestartJob(int pid, const std::string& command_line) { 82 virtual bool RestartJob(int pid, const std::string& command_line) OVERRIDE {
82 if (job_restart_request_) { 83 if (job_restart_request_) {
83 NOTREACHED(); 84 NOTREACHED();
84 return false; 85 return false;
85 } 86 }
86 job_restart_request_ = new JobRestartRequest(pid, command_line); 87 job_restart_request_ = new JobRestartRequest(pid, command_line);
87 return true; 88 return true;
88 } 89 }
89 90
90 private: 91 private:
91 class JobRestartRequest 92 class JobRestartRequest
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 break; 171 break;
171 case PropertyOpFailure: 172 case PropertyOpFailure:
172 self->CompletePropertyOp(false); 173 self->CompletePropertyOp(false);
173 break; 174 break;
174 default: 175 default:
175 NOTREACHED(); 176 NOTREACHED();
176 break; 177 break;
177 } 178 }
178 } 179 }
179 180
180 void Init() {
181 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
182 session_connection_ = chromeos::MonitorSession(&Handler, this);
183 }
184
185 void CompleteSetOwnerKey(bool value) { 181 void CompleteSetOwnerKey(bool value) {
186 VLOG(1) << "Owner key generation: " << (value ? "success" : "fail"); 182 VLOG(1) << "Owner key generation: " << (value ? "success" : "fail");
187 int result = 183 int result =
188 chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED; 184 chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED;
189 if (!value) 185 if (!value)
190 result = chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_FAILED; 186 result = chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_FAILED;
191 187
192 // Whether we exported the public key or not, send a notification indicating 188 // Whether we exported the public key or not, send a notification indicating
193 // that we're done with this attempt. 189 // that we're done with this attempt.
194 NotificationService::current()->Notify(result, 190 NotificationService::current()->Notify(result,
(...skipping 24 matching lines...) Expand all
219 JobRestartRequest* job_restart_request_; 215 JobRestartRequest* job_restart_request_;
220 216
221 DISALLOW_COPY_AND_ASSIGN(LoginLibraryImpl); 217 DISALLOW_COPY_AND_ASSIGN(LoginLibraryImpl);
222 }; 218 };
223 219
224 class LoginLibraryStubImpl : public LoginLibrary { 220 class LoginLibraryStubImpl : public LoginLibrary {
225 public: 221 public:
226 LoginLibraryStubImpl() {} 222 LoginLibraryStubImpl() {}
227 virtual ~LoginLibraryStubImpl() {} 223 virtual ~LoginLibraryStubImpl() {}
228 224
229 void EmitLoginPromptReady() { } 225 virtual void Init() OVERRIDE {}
230 void RequestRetrievePolicy(RetrievePolicyCallback callback, void* delegate) { 226
227 virtual void EmitLoginPromptReady() OVERRIDE {}
228 virtual void RequestRetrievePolicy(
229 RetrievePolicyCallback callback, void* delegate) OVERRIDE {
231 callback(delegate, "", 0); 230 callback(delegate, "", 0);
232 } 231 }
233 void RequestStorePolicy(const std::string& policy, 232 virtual void RequestStorePolicy(const std::string& policy,
234 StorePolicyCallback callback, 233 StorePolicyCallback callback,
235 void* delegate) { 234 void* delegate) OVERRIDE {
236 callback(delegate, true); 235 callback(delegate, true);
237 } 236 }
238 bool StartSession(const std::string& user_email, 237 virtual bool StartSession(
239 const std::string& unique_id /* unused */) { return true; } 238 const std::string& user_email,
240 bool StopSession(const std::string& unique_id /* unused */) { return true; } 239 const std::string& unique_id /* unused */) OVERRIDE {
241 bool RestartJob(int pid, const std::string& command_line) { return true; } 240 return true;
242 bool RestartEntd() { return true; } 241 }
242 virtual bool StopSession(const std::string& unique_id /* unused */) OVERRIDE {
243 return true;
244 }
245 virtual bool RestartJob(int pid, const std::string& command_line) OVERRIDE {
246 return true;
247 }
248 virtual bool RestartEntd() OVERRIDE { return true; }
243 249
244 private: 250 private:
245 DISALLOW_COPY_AND_ASSIGN(LoginLibraryStubImpl); 251 DISALLOW_COPY_AND_ASSIGN(LoginLibraryStubImpl);
246 }; 252 };
247 253
248 // static 254 // static
249 LoginLibrary* LoginLibrary::GetImpl(bool stub) { 255 LoginLibrary* LoginLibrary::GetImpl(bool stub) {
256 LoginLibrary* impl;
250 if (stub) 257 if (stub)
251 return new LoginLibraryStubImpl(); 258 impl = new LoginLibraryStubImpl();
252 else 259 else
253 return new LoginLibraryImpl(); 260 impl = new LoginLibraryImpl();
261 impl->Init();
262 return impl;
254 } 263 }
255 264
256 } // namespace chromeos 265 } // namespace chromeos
257
258 // Needed for NewRunnableMethod() call above.
259 DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::LoginLibraryImpl);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698