summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/file_manager/app_installer.cc
diff options
context:
space:
mode:
authorsatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-06 06:17:32 +0000
committersatorux@chromium.org <satorux@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-06 06:17:32 +0000
commitfdb4739cb0e2b0581e91d032e929a2769f26fd6a (patch)
treefeea66ba6550f1d757c48ed8e93c44f320edd730 /chrome/browser/chromeos/file_manager/app_installer.cc
parent48dc4b493aa4b627ae60b45b7c5fb769874b4309 (diff)
downloadchromium_src-fdb4739cb0e2b0581e91d032e929a2769f26fd6a.zip
chromium_src-fdb4739cb0e2b0581e91d032e929a2769f26fd6a.tar.gz
chromium_src-fdb4739cb0e2b0581e91d032e929a2769f26fd6a.tar.bz2
file_manager: Rename file_manager::FileManagerInstaller to file_manager::AppInstaller
Revise the class comment along the way. BUG=284984 TEST=none R=yoshiki@chromium.org Review URL: https://codereview.chromium.org/61463003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@233234 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/file_manager/app_installer.cc')
-rw-r--r--chrome/browser/chromeos/file_manager/app_installer.cc113
1 files changed, 113 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/file_manager/app_installer.cc b/chrome/browser/chromeos/file_manager/app_installer.cc
new file mode 100644
index 0000000..b6580b8
--- /dev/null
+++ b/chrome/browser/chromeos/file_manager/app_installer.cc
@@ -0,0 +1,113 @@
+// Copyright 2013 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/file_manager/app_installer.h"
+
+#include "base/strings/stringprintf.h"
+#include "chrome/browser/profiles/profile.h"
+#include "content/public/browser/web_contents.h"
+
+namespace file_manager {
+
+namespace {
+const char kWebContentsDestroyedError[] = "WebContents is destroyed.";
+} // namespace
+
+class AppInstaller::WebContentsObserver
+ : public content::WebContentsObserver {
+
+ public:
+ explicit WebContentsObserver(
+ content::WebContents* web_contents,
+ AppInstaller* parent)
+ : content::WebContentsObserver(web_contents),
+ parent_(parent) {
+ }
+
+ protected:
+ // content::WebContentsObserver implementation.
+ virtual void WebContentsDestroyed(
+ content::WebContents* web_contents) OVERRIDE {
+ parent_->OnWebContentsDestroyed(web_contents);
+ }
+
+ private:
+ AppInstaller* parent_;
+
+ DISALLOW_IMPLICIT_CONSTRUCTORS(WebContentsObserver);
+};
+
+AppInstaller::AppInstaller(
+ content::WebContents* web_contents,
+ const std::string& webstore_item_id,
+ Profile* profile,
+ const Callback& callback)
+ : extensions::WebstoreStandaloneInstaller(
+ webstore_item_id,
+ profile,
+ callback),
+ callback_(callback),
+ web_contents_(web_contents),
+ web_contents_observer_(new WebContentsObserver(web_contents, this)) {
+}
+
+AppInstaller::~AppInstaller() {}
+
+bool AppInstaller::CheckRequestorAlive() const {
+ // The tab may have gone away - cancel installation in that case.
+ return web_contents_ != NULL;
+}
+
+const GURL& AppInstaller::GetRequestorURL() const {
+ return GURL::EmptyGURL();
+}
+
+scoped_ptr<ExtensionInstallPrompt::Prompt>
+AppInstaller::CreateInstallPrompt() const {
+ scoped_ptr<ExtensionInstallPrompt::Prompt> prompt(
+ new ExtensionInstallPrompt::Prompt(
+ ExtensionInstallPrompt::INLINE_INSTALL_PROMPT));
+
+ prompt->SetInlineInstallWebstoreData(localized_user_count(),
+ show_user_count(),
+ average_rating(),
+ rating_count());
+ return prompt.Pass();
+}
+
+bool AppInstaller::ShouldShowPostInstallUI() const {
+ return false;
+}
+
+bool AppInstaller::ShouldShowAppInstalledBubble() const {
+ return false;
+}
+
+content::WebContents* AppInstaller::GetWebContents() const {
+ return web_contents_;
+}
+
+bool AppInstaller::CheckInlineInstallPermitted(
+ const base::DictionaryValue& webstore_data,
+ std::string* error) const {
+ DCHECK(error != NULL);
+ DCHECK(error->empty());
+ return true;
+}
+
+bool AppInstaller::CheckRequestorPermitted(
+ const base::DictionaryValue& webstore_data,
+ std::string* error) const {
+ DCHECK(error != NULL);
+ DCHECK(error->empty());
+ return true;
+}
+
+void AppInstaller::OnWebContentsDestroyed(
+ content::WebContents* web_contents) {
+ callback_.Run(false, kWebContentsDestroyedError);
+ AbortInstall();
+}
+
+} // namespace file_manager