| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extension_install_prompt.h" | 5 #include "chrome/browser/extensions/extension_install_prompt.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| 11 #include "base/prefs/pref_service.h" | 11 #include "base/prefs/pref_service.h" |
| 12 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
| 14 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 16 #include "chrome/browser/extensions/bundle_installer.h" | 16 #include "chrome/browser/extensions/bundle_installer.h" |
| 17 #include "chrome/browser/extensions/extension_install_prompt_show_params.h" |
| 17 #include "chrome/browser/extensions/extension_util.h" | 18 #include "chrome/browser/extensions/extension_util.h" |
| 18 #include "chrome/browser/extensions/permissions_updater.h" | 19 #include "chrome/browser/extensions/permissions_updater.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/browser/ui/extensions/extension_install_ui_factory.h" | 21 #include "chrome/browser/ui/extensions/extension_install_ui_factory.h" |
| 21 #include "chrome/common/chrome_switches.h" | 22 #include "chrome/common/chrome_switches.h" |
| 22 #include "chrome/grit/chromium_strings.h" | 23 #include "chrome/grit/chromium_strings.h" |
| 23 #include "chrome/grit/generated_resources.h" | 24 #include "chrome/grit/generated_resources.h" |
| 24 #include "content/public/browser/web_contents.h" | 25 #include "content/public/browser/web_contents.h" |
| 25 #include "extensions/browser/extension_prefs.h" | 26 #include "extensions/browser/extension_prefs.h" |
| 26 #include "extensions/browser/extension_util.h" | 27 #include "extensions/browser/extension_util.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 NOTREACHED(); | 169 NOTREACHED(); |
| 169 return false; | 170 return false; |
| 170 } | 171 } |
| 171 | 172 |
| 172 Profile* ProfileForWebContents(content::WebContents* web_contents) { | 173 Profile* ProfileForWebContents(content::WebContents* web_contents) { |
| 173 if (!web_contents) | 174 if (!web_contents) |
| 174 return NULL; | 175 return NULL; |
| 175 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); | 176 return Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
| 176 } | 177 } |
| 177 | 178 |
| 178 gfx::NativeWindow NativeWindowForWebContents(content::WebContents* contents) { | |
| 179 if (!contents) | |
| 180 return NULL; | |
| 181 | |
| 182 return contents->GetTopLevelNativeWindow(); | |
| 183 } | |
| 184 | |
| 185 } // namespace | 179 } // namespace |
| 186 | 180 |
| 187 ExtensionInstallPrompt::Prompt::InstallPromptPermissions:: | 181 ExtensionInstallPrompt::Prompt::InstallPromptPermissions:: |
| 188 InstallPromptPermissions() { | 182 InstallPromptPermissions() { |
| 189 } | 183 } |
| 190 ExtensionInstallPrompt::Prompt::InstallPromptPermissions:: | 184 ExtensionInstallPrompt::Prompt::InstallPromptPermissions:: |
| 191 ~InstallPromptPermissions() { | 185 ~InstallPromptPermissions() { |
| 192 } | 186 } |
| 193 | 187 |
| 194 // static | 188 // static |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 605 PermissionsType permissions_type) const { | 599 PermissionsType permissions_type) const { |
| 606 DCHECK_NE(ALL_PERMISSIONS, permissions_type); | 600 DCHECK_NE(ALL_PERMISSIONS, permissions_type); |
| 607 return permissions_type == REGULAR_PERMISSIONS ? prompt_permissions_ | 601 return permissions_type == REGULAR_PERMISSIONS ? prompt_permissions_ |
| 608 : withheld_prompt_permissions_; | 602 : withheld_prompt_permissions_; |
| 609 } | 603 } |
| 610 | 604 |
| 611 bool ExtensionInstallPrompt::Prompt::ShouldDisplayRevokeFilesButton() const { | 605 bool ExtensionInstallPrompt::Prompt::ShouldDisplayRevokeFilesButton() const { |
| 612 return !retained_files_.empty(); | 606 return !retained_files_.empty(); |
| 613 } | 607 } |
| 614 | 608 |
| 615 ExtensionInstallPrompt::ShowParams::ShowParams(content::WebContents* contents) | |
| 616 : profile(ProfileForWebContents(contents)), | |
| 617 parent_web_contents(contents), | |
| 618 parent_window(NativeWindowForWebContents(contents)) { | |
| 619 } | |
| 620 | |
| 621 ExtensionInstallPrompt::ShowParams::ShowParams(Profile* profile, | |
| 622 gfx::NativeWindow window) | |
| 623 : profile(profile), | |
| 624 parent_web_contents(NULL), | |
| 625 parent_window(window) { | |
| 626 } | |
| 627 | |
| 628 // static | 609 // static |
| 629 scoped_refptr<Extension> | 610 scoped_refptr<Extension> |
| 630 ExtensionInstallPrompt::GetLocalizedExtensionForDisplay( | 611 ExtensionInstallPrompt::GetLocalizedExtensionForDisplay( |
| 631 const base::DictionaryValue* manifest, | 612 const base::DictionaryValue* manifest, |
| 632 int flags, | 613 int flags, |
| 633 const std::string& id, | 614 const std::string& id, |
| 634 const std::string& localized_name, | 615 const std::string& localized_name, |
| 635 const std::string& localized_description, | 616 const std::string& localized_description, |
| 636 std::string* error) { | 617 std::string* error) { |
| 637 scoped_ptr<base::DictionaryValue> localized_manifest; | 618 scoped_ptr<base::DictionaryValue> localized_manifest; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 656 error); | 637 error); |
| 657 } | 638 } |
| 658 | 639 |
| 659 ExtensionInstallPrompt::ExtensionInstallPrompt(content::WebContents* contents) | 640 ExtensionInstallPrompt::ExtensionInstallPrompt(content::WebContents* contents) |
| 660 : profile_(ProfileForWebContents(contents)), | 641 : profile_(ProfileForWebContents(contents)), |
| 661 ui_loop_(base::MessageLoop::current()), | 642 ui_loop_(base::MessageLoop::current()), |
| 662 extension_(NULL), | 643 extension_(NULL), |
| 663 bundle_(NULL), | 644 bundle_(NULL), |
| 664 install_ui_(extensions::CreateExtensionInstallUI( | 645 install_ui_(extensions::CreateExtensionInstallUI( |
| 665 ProfileForWebContents(contents))), | 646 ProfileForWebContents(contents))), |
| 666 show_params_(contents), | 647 show_params_(new ExtensionInstallPromptShowParams(contents)), |
| 667 delegate_(NULL) { | 648 delegate_(NULL) { |
| 668 } | 649 } |
| 669 | 650 |
| 670 ExtensionInstallPrompt::ExtensionInstallPrompt(Profile* profile, | 651 ExtensionInstallPrompt::ExtensionInstallPrompt(Profile* profile, |
| 671 gfx::NativeWindow native_window) | 652 gfx::NativeWindow native_window) |
| 672 : profile_(profile), | 653 : profile_(profile), |
| 673 ui_loop_(base::MessageLoop::current()), | 654 ui_loop_(base::MessageLoop::current()), |
| 674 extension_(NULL), | 655 extension_(NULL), |
| 675 bundle_(NULL), | 656 bundle_(NULL), |
| 676 install_ui_(extensions::CreateExtensionInstallUI(profile)), | 657 install_ui_(extensions::CreateExtensionInstallUI(profile)), |
| 677 show_params_(profile, native_window), | 658 show_params_( |
| 659 new ExtensionInstallPromptShowParams(profile, native_window)), |
| 678 delegate_(NULL) { | 660 delegate_(NULL) { |
| 679 } | 661 } |
| 680 | 662 |
| 681 ExtensionInstallPrompt::~ExtensionInstallPrompt() { | 663 ExtensionInstallPrompt::~ExtensionInstallPrompt() { |
| 682 } | 664 } |
| 683 | 665 |
| 684 void ExtensionInstallPrompt::ConfirmBundleInstall( | 666 void ExtensionInstallPrompt::ConfirmBundleInstall( |
| 685 extensions::BundleInstaller* bundle, | 667 extensions::BundleInstaller* bundle, |
| 686 const PermissionSet* permissions) { | 668 const PermissionSet* permissions) { |
| 687 DCHECK(ui_loop_ == base::MessageLoop::current()); | 669 DCHECK(ui_loop_ == base::MessageLoop::current()); |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 break; | 919 break; |
| 938 } | 920 } |
| 939 default: | 921 default: |
| 940 NOTREACHED() << "Unknown message"; | 922 NOTREACHED() << "Unknown message"; |
| 941 return; | 923 return; |
| 942 } | 924 } |
| 943 | 925 |
| 944 if (AutoConfirmPrompt(delegate_)) | 926 if (AutoConfirmPrompt(delegate_)) |
| 945 return; | 927 return; |
| 946 | 928 |
| 929 if (show_params_->WasParentDestroyed()) { |
| 930 delegate_->InstallUIAbort(false); |
| 931 return; |
| 932 } |
| 933 |
| 947 if (show_dialog_callback_.is_null()) | 934 if (show_dialog_callback_.is_null()) |
| 948 GetDefaultShowDialogCallback().Run(show_params_, delegate_, prompt_); | 935 GetDefaultShowDialogCallback().Run(show_params_.get(), delegate_, prompt_); |
| 949 else | 936 else |
| 950 show_dialog_callback_.Run(show_params_, delegate_, prompt_); | 937 show_dialog_callback_.Run(show_params_.get(), delegate_, prompt_); |
| 951 } | 938 } |
| OLD | NEW |