diff options
author | Kristian Monsen <kristianm@google.com> | 2011-05-11 20:53:37 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2011-05-16 13:54:48 +0100 |
commit | 21d179b334e59e9a3bfcaed4c4430bef1bc5759d (patch) | |
tree | 64e2bb6da27af6a5c93ca34f6051584aafbfcb9e /chrome/browser/chromeos/enterprise_extension_observer.cc | |
parent | 0c63f00edd6ed0482fd5cbcea937ca088baf7858 (diff) | |
download | external_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.zip external_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.tar.gz external_chromium-21d179b334e59e9a3bfcaed4c4430bef1bc5759d.tar.bz2 |
Merge Chromium at 10.0.621.0: Initial merge by git.
Change-Id: I070cc91c608dfa4a968a5a54c173260765ac8097
Diffstat (limited to 'chrome/browser/chromeos/enterprise_extension_observer.cc')
-rw-r--r-- | chrome/browser/chromeos/enterprise_extension_observer.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/enterprise_extension_observer.cc b/chrome/browser/chromeos/enterprise_extension_observer.cc new file mode 100644 index 0000000..9fb6132 --- /dev/null +++ b/chrome/browser/chromeos/enterprise_extension_observer.cc @@ -0,0 +1,65 @@ +// Copyright (c) 2010 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/enterprise_extension_observer.h" + +#include "base/file_util.h" +#include "chrome/browser/browser_thread.h" +#include "chrome/browser/chromeos/cros/cros_library.h" +#include "chrome/browser/chromeos/cros/login_library.h" +#include "chrome/browser/profiles/profile.h" + +namespace chromeos { + +EnterpriseExtensionObserver::EnterpriseExtensionObserver(Profile* profile) + : profile_(profile) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + registrar_.Add(this, + NotificationType::EXTENSION_INSTALLED, + Source<Profile>(profile_)); +} + +void EnterpriseExtensionObserver::Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(type == NotificationType::EXTENSION_INSTALLED); + if (Source<Profile>(source).ptr() != profile_) { + return; + } + Extension* extension = Details<Extension>(details).ptr(); + if (extension->location() != Extension::EXTERNAL_POLICY_DOWNLOAD) { + return; + } + BrowserThread::PostTask( + BrowserThread::FILE, + FROM_HERE, + NewRunnableFunction( + &EnterpriseExtensionObserver::CheckExtensionAndNotifyEntd, + extension->path())); +} + +// static +void EnterpriseExtensionObserver::CheckExtensionAndNotifyEntd( + const FilePath& path) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); + if (file_util::PathExists( + path.Append(FILE_PATH_LITERAL("isa-cros-policy")))) { + BrowserThread::PostTask( + BrowserThread::UI, + FROM_HERE, + NewRunnableFunction(&EnterpriseExtensionObserver::NotifyEntd)); + } +} + +// static +void EnterpriseExtensionObserver::NotifyEntd() { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (CrosLibrary::Get()->EnsureLoaded()) { + CrosLibrary::Get()->GetLoginLibrary()->RestartEntd(); + return; + } +} + +} // namespace chromeos |