| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/extensions/api/inline_install_private/inline_install_pr
ivate_api.h" | 5 #include "chrome/browser/extensions/api/inline_install_private/inline_install_pr
ivate_api.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ptr_util.h" |
| 8 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 9 #include "chrome/browser/extensions/webstore_install_with_prompt.h" | 10 #include "chrome/browser/extensions/webstore_install_with_prompt.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
| 11 #include "chrome/common/extensions/api/inline_install_private.h" | 12 #include "chrome/common/extensions/api/inline_install_private.h" |
| 12 #include "chrome/common/extensions/api/webstore/webstore_api_constants.h" | 13 #include "chrome/common/extensions/api/webstore/webstore_api_constants.h" |
| 13 #include "components/crx_file/id_util.h" | 14 #include "components/crx_file/id_util.h" |
| 14 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
| 15 #include "extensions/browser/extension_registry.h" | 16 #include "extensions/browser/extension_registry.h" |
| 16 | 17 |
| 17 namespace extensions { | 18 namespace extensions { |
| 18 | 19 |
| 19 namespace { | 20 namespace { |
| 20 | 21 |
| 21 class Installer : public WebstoreInstallWithPrompt { | 22 class Installer : public WebstoreInstallWithPrompt { |
| 22 public: | 23 public: |
| 23 Installer(const std::string& id, | 24 Installer(const std::string& id, |
| 24 const GURL& requestor_url, | 25 const GURL& requestor_url, |
| 25 Profile* profile, | 26 Profile* profile, |
| 26 const Callback& callback); | 27 const Callback& callback); |
| 27 protected: | 28 protected: |
| 28 friend class base::RefCountedThreadSafe<Installer>; | 29 friend class base::RefCountedThreadSafe<Installer>; |
| 29 ~Installer() override; | 30 ~Installer() override; |
| 30 | 31 |
| 31 // Needed so that we send the right referrer value in requests to the | 32 // Needed so that we send the right referrer value in requests to the |
| 32 // webstore. | 33 // webstore. |
| 33 const GURL& GetRequestorURL() const override { return requestor_url_; } | 34 const GURL& GetRequestorURL() const override { return requestor_url_; } |
| 34 | 35 |
| 35 scoped_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt() | 36 std::unique_ptr<ExtensionInstallPrompt::Prompt> CreateInstallPrompt() |
| 36 const override; | 37 const override; |
| 37 | 38 |
| 38 void OnManifestParsed() override; | 39 void OnManifestParsed() override; |
| 39 | 40 |
| 40 GURL requestor_url_; | 41 GURL requestor_url_; |
| 41 }; | 42 }; |
| 42 | 43 |
| 43 Installer::Installer(const std::string& id, | 44 Installer::Installer(const std::string& id, |
| 44 const GURL& requestor_url, | 45 const GURL& requestor_url, |
| 45 Profile* profile, | 46 Profile* profile, |
| 46 const Callback& callback) : | 47 const Callback& callback) : |
| 47 WebstoreInstallWithPrompt(id, profile, callback), | 48 WebstoreInstallWithPrompt(id, profile, callback), |
| 48 requestor_url_(requestor_url) { | 49 requestor_url_(requestor_url) { |
| 49 set_show_post_install_ui(false); | 50 set_show_post_install_ui(false); |
| 50 } | 51 } |
| 51 | 52 |
| 52 Installer::~Installer() { | 53 Installer::~Installer() { |
| 53 } | 54 } |
| 54 | 55 |
| 55 scoped_ptr<ExtensionInstallPrompt::Prompt> Installer::CreateInstallPrompt() | 56 std::unique_ptr<ExtensionInstallPrompt::Prompt> Installer::CreateInstallPrompt() |
| 56 const { | 57 const { |
| 57 scoped_ptr<ExtensionInstallPrompt::Prompt> prompt( | 58 std::unique_ptr<ExtensionInstallPrompt::Prompt> prompt( |
| 58 new ExtensionInstallPrompt::Prompt( | 59 new ExtensionInstallPrompt::Prompt( |
| 59 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT)); | 60 ExtensionInstallPrompt::INLINE_INSTALL_PROMPT)); |
| 60 prompt->SetWebstoreData(localized_user_count(), | 61 prompt->SetWebstoreData(localized_user_count(), |
| 61 show_user_count(), | 62 show_user_count(), |
| 62 average_rating(), | 63 average_rating(), |
| 63 rating_count()); | 64 rating_count()); |
| 64 return prompt; | 65 return prompt; |
| 65 } | 66 } |
| 66 | 67 |
| 67 | 68 |
| 68 void Installer::OnManifestParsed() { | 69 void Installer::OnManifestParsed() { |
| 69 if (manifest() == nullptr) { | 70 if (manifest() == nullptr) { |
| 70 CompleteInstall(webstore_install::INVALID_MANIFEST, std::string()); | 71 CompleteInstall(webstore_install::INVALID_MANIFEST, std::string()); |
| 71 return; | 72 return; |
| 72 } | 73 } |
| 73 | 74 |
| 74 Manifest parsed_manifest(Manifest::INTERNAL, | 75 Manifest parsed_manifest(Manifest::INTERNAL, |
| 75 make_scoped_ptr(manifest()->DeepCopy())); | 76 base::WrapUnique(manifest()->DeepCopy())); |
| 76 | 77 |
| 77 std::string manifest_error; | 78 std::string manifest_error; |
| 78 std::vector<InstallWarning> warnings; | 79 std::vector<InstallWarning> warnings; |
| 79 | 80 |
| 80 if (!parsed_manifest.is_platform_app()) { | 81 if (!parsed_manifest.is_platform_app()) { |
| 81 CompleteInstall(webstore_install::NOT_PERMITTED, std::string()); | 82 CompleteInstall(webstore_install::NOT_PERMITTED, std::string()); |
| 82 return; | 83 return; |
| 83 } | 84 } |
| 84 | 85 |
| 85 ProceedWithInstallPrompt(); | 86 ProceedWithInstallPrompt(); |
| 86 } | 87 } |
| 87 | 88 |
| 88 | 89 |
| 89 } // namespace | 90 } // namespace |
| 90 | 91 |
| 91 InlineInstallPrivateInstallFunction:: | 92 InlineInstallPrivateInstallFunction:: |
| 92 InlineInstallPrivateInstallFunction() { | 93 InlineInstallPrivateInstallFunction() { |
| 93 } | 94 } |
| 94 | 95 |
| 95 InlineInstallPrivateInstallFunction:: | 96 InlineInstallPrivateInstallFunction:: |
| 96 ~InlineInstallPrivateInstallFunction() { | 97 ~InlineInstallPrivateInstallFunction() { |
| 97 } | 98 } |
| 98 | 99 |
| 99 ExtensionFunction::ResponseAction | 100 ExtensionFunction::ResponseAction |
| 100 InlineInstallPrivateInstallFunction::Run() { | 101 InlineInstallPrivateInstallFunction::Run() { |
| 101 typedef api::inline_install_private::Install::Params Params; | 102 typedef api::inline_install_private::Install::Params Params; |
| 102 scoped_ptr<Params> params(Params::Create(*args_)); | 103 std::unique_ptr<Params> params(Params::Create(*args_)); |
| 103 | 104 |
| 104 if (!user_gesture()) | 105 if (!user_gesture()) |
| 105 return RespondNow(CreateResponse("Must be called with a user gesture", | 106 return RespondNow(CreateResponse("Must be called with a user gesture", |
| 106 webstore_install::NOT_PERMITTED)); | 107 webstore_install::NOT_PERMITTED)); |
| 107 | 108 |
| 108 content::WebContents* web_contents = GetAssociatedWebContents(); | 109 content::WebContents* web_contents = GetAssociatedWebContents(); |
| 109 if (!web_contents) | 110 if (!web_contents) |
| 110 return RespondNow(CreateResponse("Must be called from a foreground page", | 111 return RespondNow(CreateResponse("Must be called from a foreground page", |
| 111 webstore_install::NOT_PERMITTED)); | 112 webstore_install::NOT_PERMITTED)); |
| 112 | 113 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 138 | 139 |
| 139 ExtensionFunction::ResponseValue | 140 ExtensionFunction::ResponseValue |
| 140 InlineInstallPrivateInstallFunction::CreateResponse( | 141 InlineInstallPrivateInstallFunction::CreateResponse( |
| 141 const std::string& error, webstore_install::Result result) { | 142 const std::string& error, webstore_install::Result result) { |
| 142 return ArgumentList(api::inline_install_private::Install::Results::Create( | 143 return ArgumentList(api::inline_install_private::Install::Results::Create( |
| 143 error, | 144 error, |
| 144 api::webstore::kInstallResultCodes[result])); | 145 api::webstore::kInstallResultCodes[result])); |
| 145 } | 146 } |
| 146 | 147 |
| 147 } // namespace extensions | 148 } // namespace extensions |
| OLD | NEW |