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 |