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