| 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_navigation_observer.h" | 5 #include "chrome/browser/extensions/extension_navigation_observer.h" |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/extension_service.h" | 7 #include "chrome/browser/extensions/extension_service.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "content/public/browser/navigation_controller.h" | 9 #include "content/public/browser/navigation_controller.h" |
| 10 #include "content/public/browser/navigation_entry.h" | 10 #include "content/public/browser/navigation_entry.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 NavigationController* nav_controller) { | 48 NavigationController* nav_controller) { |
| 49 // Bail out if we're already running a prompt. | 49 // Bail out if we're already running a prompt. |
| 50 if (!in_progress_prompt_extension_id_.empty()) | 50 if (!in_progress_prompt_extension_id_.empty()) |
| 51 return; | 51 return; |
| 52 | 52 |
| 53 NavigationEntry* nav_entry = nav_controller->GetActiveEntry(); | 53 NavigationEntry* nav_entry = nav_controller->GetActiveEntry(); |
| 54 if (!nav_entry) | 54 if (!nav_entry) |
| 55 return; | 55 return; |
| 56 | 56 |
| 57 ExtensionService* extension_service = profile_->GetExtensionService(); | 57 ExtensionService* extension_service = profile_->GetExtensionService(); |
| 58 const Extension* extension = | 58 const extensions::Extension* extension = |
| 59 extension_service->disabled_extensions()-> | 59 extension_service->disabled_extensions()-> |
| 60 GetExtensionOrAppByURL(ExtensionURLInfo(nav_entry->GetURL())); | 60 GetExtensionOrAppByURL(ExtensionURLInfo(nav_entry->GetURL())); |
| 61 if (!extension) | 61 if (!extension) |
| 62 return; | 62 return; |
| 63 | 63 |
| 64 // Try not to repeatedly prompt the user about the same extension. | 64 // Try not to repeatedly prompt the user about the same extension. |
| 65 if (prompted_extensions_.find(extension->id()) != prompted_extensions_.end()) | 65 if (prompted_extensions_.find(extension->id()) != prompted_extensions_.end()) |
| 66 return; | 66 return; |
| 67 prompted_extensions_.insert(extension->id()); | 67 prompted_extensions_.insert(extension->id()); |
| 68 | 68 |
| 69 ExtensionPrefs* extension_prefs = extension_service->extension_prefs(); | 69 ExtensionPrefs* extension_prefs = extension_service->extension_prefs(); |
| 70 if (extension_prefs->DidExtensionEscalatePermissions(extension->id())) { | 70 if (extension_prefs->DidExtensionEscalatePermissions(extension->id())) { |
| 71 // Keep track of the extension id and nav controller we're prompting for. | 71 // Keep track of the extension id and nav controller we're prompting for. |
| 72 // These must be reset in InstallUIProceed and InstallUIAbort. | 72 // These must be reset in InstallUIProceed and InstallUIAbort. |
| 73 in_progress_prompt_extension_id_ = extension->id(); | 73 in_progress_prompt_extension_id_ = extension->id(); |
| 74 in_progress_prompt_navigation_controller_ = nav_controller; | 74 in_progress_prompt_navigation_controller_ = nav_controller; |
| 75 | 75 |
| 76 extension_install_ui_.reset(new ExtensionInstallUI(profile_)); | 76 extension_install_ui_.reset(new ExtensionInstallUI(profile_)); |
| 77 extension_install_ui_->ConfirmReEnable(this, extension); | 77 extension_install_ui_->ConfirmReEnable(this, extension); |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 | 80 |
| 81 void ExtensionNavigationObserver::InstallUIProceed() { | 81 void ExtensionNavigationObserver::InstallUIProceed() { |
| 82 ExtensionService* extension_service = profile_->GetExtensionService(); | 82 ExtensionService* extension_service = profile_->GetExtensionService(); |
| 83 const Extension* extension = extension_service->GetExtensionById( | 83 const extensions::Extension* extension = extension_service->GetExtensionById( |
| 84 in_progress_prompt_extension_id_, true); | 84 in_progress_prompt_extension_id_, true); |
| 85 NavigationController* nav_controller = | 85 NavigationController* nav_controller = |
| 86 in_progress_prompt_navigation_controller_; | 86 in_progress_prompt_navigation_controller_; |
| 87 CHECK(extension); | 87 CHECK(extension); |
| 88 CHECK(nav_controller); | 88 CHECK(nav_controller); |
| 89 | 89 |
| 90 in_progress_prompt_extension_id_ = ""; | 90 in_progress_prompt_extension_id_ = ""; |
| 91 in_progress_prompt_navigation_controller_ = NULL; | 91 in_progress_prompt_navigation_controller_ = NULL; |
| 92 extension_install_ui_.reset(); | 92 extension_install_ui_.reset(); |
| 93 | 93 |
| 94 // Grant permissions, re-enable the extension, and then reload the tab. | 94 // Grant permissions, re-enable the extension, and then reload the tab. |
| 95 extension_service->GrantPermissionsAndEnableExtension(extension); | 95 extension_service->GrantPermissionsAndEnableExtension(extension); |
| 96 nav_controller->Reload(true); | 96 nav_controller->Reload(true); |
| 97 } | 97 } |
| 98 | 98 |
| 99 void ExtensionNavigationObserver::InstallUIAbort(bool user_initiated) { | 99 void ExtensionNavigationObserver::InstallUIAbort(bool user_initiated) { |
| 100 ExtensionService* extension_service = profile_->GetExtensionService(); | 100 ExtensionService* extension_service = profile_->GetExtensionService(); |
| 101 const Extension* extension = extension_service->GetExtensionById( | 101 const extensions::Extension* extension = extension_service->GetExtensionById( |
| 102 in_progress_prompt_extension_id_, true); | 102 in_progress_prompt_extension_id_, true); |
| 103 | 103 |
| 104 in_progress_prompt_extension_id_ = ""; | 104 in_progress_prompt_extension_id_ = ""; |
| 105 in_progress_prompt_navigation_controller_ = NULL; | 105 in_progress_prompt_navigation_controller_ = NULL; |
| 106 extension_install_ui_.reset(); | 106 extension_install_ui_.reset(); |
| 107 | 107 |
| 108 std::string histogram_name = user_initiated ? | 108 std::string histogram_name = user_initiated ? |
| 109 "Extensions.Permissions_ReEnableCancel" : | 109 "Extensions.Permissions_ReEnableCancel" : |
| 110 "Extensions.Permissions_ReEnableAbort"; | 110 "Extensions.Permissions_ReEnableAbort"; |
| 111 ExtensionService::RecordPermissionMessagesHistogram( | 111 ExtensionService::RecordPermissionMessagesHistogram( |
| 112 extension, histogram_name.c_str()); | 112 extension, histogram_name.c_str()); |
| 113 } | 113 } |
| OLD | NEW |