summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/crx_installer.cc
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-26 21:50:23 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-26 21:50:23 +0000
commitbb461530cb42d050c91bacc9ec1a6a48100c6be7 (patch)
tree8b88b90958fdd1d2dcdc666b4414a93ca833c97e /chrome/browser/extensions/crx_installer.cc
parent11740d25bd6ac9c9da9ceb99ba1ba59d3caabeeb (diff)
downloadchromium_src-bb461530cb42d050c91bacc9ec1a6a48100c6be7.zip
chromium_src-bb461530cb42d050c91bacc9ec1a6a48100c6be7.tar.gz
chromium_src-bb461530cb42d050c91bacc9ec1a6a48100c6be7.tar.bz2
Revert "Revert "Finish wiring up chrome.app.install().""
This reverts commit 89f4de523e9c916950f72c264cdefed662849124. TBR=aa@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67474 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/crx_installer.cc')
-rw-r--r--chrome/browser/extensions/crx_installer.cc34
1 files changed, 29 insertions, 5 deletions
diff --git a/chrome/browser/extensions/crx_installer.cc b/chrome/browser/extensions/crx_installer.cc
index d90bbbd..3a9a3df 100644
--- a/chrome/browser/extensions/crx_installer.cc
+++ b/chrome/browser/extensions/crx_installer.cc
@@ -14,6 +14,7 @@
#include "base/singleton.h"
#include "base/stl_util-inl.h"
#include "base/stringprintf.h"
+#include "base/time.h"
#include "base/task.h"
#include "base/thread_restrictions.h"
#include "base/utf_string_conversions.h"
@@ -21,6 +22,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/browser/extensions/convert_user_script.h"
+#include "chrome/browser/extensions/convert_web_app.h"
#include "chrome/browser/extensions/extensions_service.h"
#include "chrome/browser/extensions/extension_error_reporter.h"
#include "chrome/browser/profile.h"
@@ -75,11 +77,11 @@ bool CrxInstaller::ClearWhitelistedInstallId(const std::string& id) {
return false;
}
-CrxInstaller::CrxInstaller(const FilePath& install_directory,
- ExtensionsService* frontend,
+CrxInstaller::CrxInstaller(ExtensionsService* frontend,
ExtensionInstallUI* client)
- : install_directory_(install_directory),
+ : install_directory_(frontend->install_directory()),
install_source_(Extension::INTERNAL),
+ extensions_enabled_(frontend->extensions_enabled()),
delete_source_(false),
allow_privilege_increase_(false),
is_gallery_install_(false),
@@ -88,7 +90,6 @@ CrxInstaller::CrxInstaller(const FilePath& install_directory,
client_(client),
apps_require_extension_mime_type_(false),
allow_silent_install_(false) {
- extensions_enabled_ = frontend_->extensions_enabled();
}
CrxInstaller::~CrxInstaller() {
@@ -160,6 +161,29 @@ void CrxInstaller::ConvertUserScriptOnFileThread() {
OnUnpackSuccess(extension->path(), extension->path(), extension);
}
+void CrxInstaller::InstallWebApp(const WebApplicationInfo& web_app) {
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ NewRunnableMethod(this, &CrxInstaller::ConvertWebAppOnFileThread,
+ web_app));
+}
+
+void CrxInstaller::ConvertWebAppOnFileThread(
+ const WebApplicationInfo& web_app) {
+ std::string error;
+ scoped_refptr<Extension> extension(
+ ConvertWebAppToExtension(web_app, base::Time::Now()));
+ if (!extension) {
+ // Validation should have stopped any potential errors before getting here.
+ NOTREACHED() << "Could not convert web app to extension.";
+ return;
+ }
+
+ // TODO(aa): conversion data gets lost here :(
+
+ OnUnpackSuccess(extension->path(), extension->path(), extension);
+}
+
bool CrxInstaller::AllowInstall(const Extension* extension,
std::string* error) {
DCHECK(error);
@@ -362,7 +386,7 @@ void CrxInstaller::CompleteInstall() {
std::string error;
extension_ = extension_file_util::LoadExtension(
version_dir, install_source_, true, &error);
- DCHECK(error.empty());
+ CHECK(error.empty()) << error;
ReportSuccessFromFileThread();
}