Chromium Code Reviews| Index: chrome/browser/extensions/navigation_observer.cc |
| diff --git a/chrome/browser/extensions/navigation_observer.cc b/chrome/browser/extensions/navigation_observer.cc |
| deleted file mode 100644 |
| index 3d08f167c48fa4c00e721010d3611d87e59280f1..0000000000000000000000000000000000000000 |
| --- a/chrome/browser/extensions/navigation_observer.cc |
| +++ /dev/null |
| @@ -1,143 +0,0 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| -// Use of this source code is governed by a BSD-style license that can be |
| -// found in the LICENSE file. |
| - |
| -#include "chrome/browser/extensions/navigation_observer.h" |
| - |
| -#include "base/memory/ptr_util.h" |
| -#include "chrome/browser/extensions/extension_service.h" |
| -#include "chrome/browser/profiles/profile.h" |
| -#include "content/public/browser/navigation_controller.h" |
| -#include "content/public/browser/navigation_entry.h" |
| -#include "content/public/browser/notification_service.h" |
| -#include "content/public/browser/notification_types.h" |
| -#include "extensions/browser/extension_prefs.h" |
| -#include "extensions/browser/extension_registry.h" |
| -#include "extensions/browser/extension_system.h" |
| - |
| -using content::NavigationController; |
| -using content::NavigationEntry; |
| - |
| -namespace extensions { |
| - |
| -NavigationObserver::NavigationObserver(Profile* profile) |
| - : profile_(profile), |
| - extension_registry_observer_(this), |
| - weak_factory_(this) { |
| - RegisterForNotifications(); |
| - extension_registry_observer_.Add(ExtensionRegistry::Get(profile)); |
| -} |
| - |
| -NavigationObserver::~NavigationObserver() {} |
| - |
| -void NavigationObserver::Observe(int type, |
| - const content::NotificationSource& source, |
| - const content::NotificationDetails& details) { |
| - DCHECK_EQ(content::NOTIFICATION_NAV_ENTRY_COMMITTED, type); |
| - |
| - NavigationController* controller = |
| - content::Source<NavigationController>(source).ptr(); |
| - if (!profile_->IsSameProfile( |
| - Profile::FromBrowserContext(controller->GetBrowserContext()))) |
| - return; |
| - |
| - PromptToEnableExtensionIfNecessary(controller); |
| -} |
| - |
| -void NavigationObserver::RegisterForNotifications() { |
| - registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| - content::NotificationService::AllSources()); |
| -} |
| - |
| -void NavigationObserver::PromptToEnableExtensionIfNecessary( |
| - NavigationController* nav_controller) { |
| - // Bail out if we're already running a prompt. |
| - if (!in_progress_prompt_extension_id_.empty()) |
| - return; |
| - |
| - NavigationEntry* nav_entry = nav_controller->GetVisibleEntry(); |
| - if (!nav_entry) |
| - return; |
| - |
| - ExtensionRegistry* registry = extensions::ExtensionRegistry::Get(profile_); |
| - const Extension* extension = |
| - registry->disabled_extensions().GetExtensionOrAppByURL( |
| - nav_entry->GetURL()); |
| - if (!extension) |
| - return; |
| - |
| - // Try not to repeatedly prompt the user about the same extension. |
| - if (prompted_extensions_.find(extension->id()) != prompted_extensions_.end()) |
| - return; |
| - prompted_extensions_.insert(extension->id()); |
| - |
| - ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(profile_); |
| - if (extension_prefs->DidExtensionEscalatePermissions(extension->id())) { |
|
lazyboy
2017/01/11 00:33:30
So the re-enable prompt we were thinking of probab
Devlin
2017/01/12 17:25:44
Ah, you're quite right. Let's keep it for chrome-
|
| - // Keep track of the extension id and nav controller we're prompting for. |
| - // These must be reset in OnInstallPromptDone. |
| - in_progress_prompt_extension_id_ = extension->id(); |
| - in_progress_prompt_navigation_controller_ = nav_controller; |
| - |
| - extension_install_prompt_.reset( |
| - new ExtensionInstallPrompt(nav_controller->GetWebContents())); |
| - ExtensionInstallPrompt::PromptType type = |
| - ExtensionInstallPrompt::GetReEnablePromptTypeForExtension(profile_, |
| - extension); |
| - extension_install_prompt_->ShowDialog( |
| - base::Bind(&NavigationObserver::OnInstallPromptDone, |
| - weak_factory_.GetWeakPtr()), |
| - extension, nullptr, |
| - base::MakeUnique<ExtensionInstallPrompt::Prompt>(type), |
| - ExtensionInstallPrompt::GetDefaultShowDialogCallback()); |
| - } |
| -} |
| - |
| -void NavigationObserver::OnInstallPromptDone( |
| - ExtensionInstallPrompt::Result result) { |
| - // The extension was already uninstalled. |
| - if (in_progress_prompt_extension_id_.empty()) |
| - return; |
| - |
| - ExtensionService* extension_service = |
| - extensions::ExtensionSystem::Get(profile_)->extension_service(); |
| - const Extension* extension = extension_service->GetExtensionById( |
| - in_progress_prompt_extension_id_, true); |
| - CHECK(extension); |
| - |
| - if (result == ExtensionInstallPrompt::Result::ACCEPTED) { |
| - NavigationController* nav_controller = |
| - in_progress_prompt_navigation_controller_; |
| - CHECK(nav_controller); |
| - |
| - // Grant permissions, re-enable the extension, and then reload the tab. |
| - extension_service->GrantPermissionsAndEnableExtension(extension); |
| - nav_controller->Reload(content::ReloadType::NORMAL, true); |
| - } else { |
| - std::string histogram_name = |
| - result == ExtensionInstallPrompt::Result::USER_CANCELED |
| - ? "ReEnableCancel" |
| - : "ReEnableAbort"; |
| - ExtensionService::RecordPermissionMessagesHistogram(extension, |
| - histogram_name.c_str()); |
| - } |
| - |
| - in_progress_prompt_extension_id_ = std::string(); |
| - in_progress_prompt_navigation_controller_ = nullptr; |
| - extension_install_prompt_.reset(); |
| -} |
| - |
| -void NavigationObserver::OnExtensionUninstalled( |
| - content::BrowserContext* browser_context, |
| - const Extension* extension, |
| - UninstallReason reason) { |
| - if (in_progress_prompt_extension_id_.empty() || |
| - in_progress_prompt_extension_id_ != extension->id()) { |
| - return; |
| - } |
| - |
| - in_progress_prompt_extension_id_ = std::string(); |
| - in_progress_prompt_navigation_controller_ = nullptr; |
| - extension_install_prompt_.reset(); |
| -} |
| - |
| -} // namespace extensions |