| Index: chrome/browser/chromeos/login/session_manager_observer.cc
|
| diff --git a/chrome/browser/chromeos/login/session_manager_observer.cc b/chrome/browser/chromeos/login/session_manager_observer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..5ec65b0394662fe107c7c1919303e1d3b688e2bf
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/login/session_manager_observer.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/chromeos/login/session_manager_observer.h"
|
| +
|
| +#include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/chromeos/login/signed_settings.h"
|
| +#include "chrome/browser/chromeos/login/signed_settings_temp_storage.h"
|
| +#include "chrome/common/chrome_notification_types.h"
|
| +#include "content/browser/browser_thread.h"
|
| +#include "content/common/notification_service.h"
|
| +
|
| +namespace chromeos {
|
| +
|
| +namespace {
|
| +
|
| +class StubDelegate
|
| + : public SignedSettings::Delegate<
|
| + const enterprise_management::PolicyFetchResponse&> {
|
| + public:
|
| + StubDelegate() : policy_fetcher_(NULL) {}
|
| + virtual ~StubDelegate() {}
|
| +
|
| + void set_fetcher(SignedSettings* fetcher) { policy_fetcher_ = fetcher; }
|
| + SignedSettings* fetcher() { return policy_fetcher_.get(); }
|
| +
|
| + // Implementation of SignedSettings::Delegate
|
| + virtual void OnSettingsOpCompleted(
|
| + SignedSettings::ReturnCode code,
|
| + const enterprise_management::PolicyFetchResponse& value) {
|
| + VLOG(1) << "Done Fetching Policy";
|
| + delete this;
|
| + }
|
| +
|
| + private:
|
| + scoped_refptr<SignedSettings> policy_fetcher_;
|
| + DISALLOW_COPY_AND_ASSIGN(StubDelegate);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +SessionManagerObserver::SessionManagerObserver() {
|
| +}
|
| +
|
| +SessionManagerObserver::~SessionManagerObserver() {
|
| +}
|
| +
|
| +void SessionManagerObserver::OwnerKeySet(bool success) {
|
| + VLOG(1) << "Owner key generation: " << (success ? "success" : "fail");
|
| + int result =
|
| + chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_SUCCEEDED;
|
| + if (!success)
|
| + result = chrome::NOTIFICATION_OWNER_KEY_FETCH_ATTEMPT_FAILED;
|
| +
|
| + // Whether we exported the public key or not, send a notification
|
| + // indicating that we're done with this attempt.
|
| + NotificationService::current()->Notify(result,
|
| + NotificationService::AllSources(),
|
| + NotificationService::NoDetails());
|
| +
|
| + // We stored some settings in transient storage before owner was assigned.
|
| + // Now owner is assigned and key is generated and we should persist
|
| + // those settings into signed storage.
|
| + if (g_browser_process && g_browser_process->local_state()) {
|
| + SignedSettingsTempStorage::Finalize(g_browser_process->local_state());
|
| + }
|
| +}
|
| +
|
| +void SessionManagerObserver::PropertyChangeComplete(bool success) {
|
| + if (success) {
|
| + StubDelegate* stub = new StubDelegate(); // Manages its own lifetime.
|
| + stub->set_fetcher(SignedSettings::CreateRetrievePolicyOp(stub));
|
| + stub->fetcher()->Execute();
|
| + }
|
| +}
|
| +
|
| +} // namespace chromeos
|
|
|