diff --git a/chrome/browser/extensions/extension_navigation_observer.cc b/chrome/browser/extensions/extension_navigation_observer.cc
new file mode 100644
index 0000000..8c33d7af
--- /dev/null
+++ b/chrome/browser/extensions/extension_navigation_observer.cc
@@ -0,0 +1,106 @@
+// Copyright (c) 2011 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/extension_navigation_observer.h"
+
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/profiles/profile.h"
+#include "content/browser/tab_contents/navigation_controller.h"
+#include "content/browser/tab_contents/navigation_entry.h"
+#include "content/common/notification_service.h"
+
+ExtensionNavigationObserver::ExtensionNavigationObserver(Profile* profile)
+    : profile_(profile) {
+  RegisterForNotifications();
+}
+
+ExtensionNavigationObserver::~ExtensionNavigationObserver() {}
+
+void ExtensionNavigationObserver::Observe(int type,
+                                          const NotificationSource& source,
+                                          const NotificationDetails& details) {
+  if (type != content::NOTIFICATION_NAV_ENTRY_COMMITTED) {
+    NOTREACHED();
+    return;
+  }
+
+  NavigationController* controller = Source<NavigationController>(source).ptr();
+  if (!profile_->IsSameProfile(
+          Profile::FromBrowserContext(controller->browser_context())))
+    return;
+
+  PromptToEnableExtensionIfNecessary(controller);
+}
+
+void ExtensionNavigationObserver::RegisterForNotifications() {
+  registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED,
+                 NotificationService::AllSources());
+}
+
+void ExtensionNavigationObserver::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->GetActiveEntry();
+  if (!nav_entry)
+    return;
+
+  ExtensionService* extension_service = profile_->GetExtensionService();
+  const Extension* extension =
+      extension_service->GetDisabledExtensionByWebExtent(nav_entry->url());
+  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 = extension_service->extension_prefs();
+  if (extension_prefs->DidExtensionEscalatePermissions(extension->id())) {
+    // Keep track of the extension id and nav controller we're prompting for.
+    // These must be reset in InstallUIProceed and InstallUIAbort.
+    in_progress_prompt_extension_id_ = extension->id();
+    in_progress_prompt_navigation_controller_ = nav_controller;
+
+    extension_install_ui_.reset(new ExtensionInstallUI(profile_));
+    extension_install_ui_->ConfirmReEnable(this, extension);
+  }
+}
+
+void ExtensionNavigationObserver::InstallUIProceed() {
+  ExtensionService* extension_service = profile_->GetExtensionService();
+  const Extension* extension = extension_service->GetExtensionById(
+      in_progress_prompt_extension_id_, true);
+  NavigationController* nav_controller =
+      in_progress_prompt_navigation_controller_;
+  CHECK(extension);
+  CHECK(nav_controller);
+
+  in_progress_prompt_extension_id_ = "";
+  in_progress_prompt_navigation_controller_ = NULL;
+  extension_install_ui_.reset();
+
+  // Grant permissions, re-enable the extension, and then reload the tab.
+  extension_service->GrantPermissionsAndEnableExtension(extension);
+  nav_controller->Reload(true);
+}
+
+void ExtensionNavigationObserver::InstallUIAbort(bool user_initiated) {
+  ExtensionService* extension_service = profile_->GetExtensionService();
+  const Extension* extension = extension_service->GetExtensionById(
+      in_progress_prompt_extension_id_, true);
+
+  in_progress_prompt_extension_id_ = "";
+  in_progress_prompt_navigation_controller_ = NULL;
+  extension_install_ui_.reset();
+
+  std::string histogram_name = user_initiated ?
+      "Extensions.Permissions_ReEnableCancel" :
+      "Extensions.Permissions_ReEnableAbort";
+  ExtensionService::RecordPermissionMessagesHistogram(
+      extension, histogram_name.c_str());
+}
diff --git a/chrome/browser/extensions/extension_navigation_observer.h b/chrome/browser/extensions/extension_navigation_observer.h
new file mode 100644
index 0000000..385e4a4
--- /dev/null
+++ b/chrome/browser/extensions/extension_navigation_observer.h
@@ -0,0 +1,61 @@
+// Copyright (c) 2011 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.
+
+#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_NAVIGATION_OBSERVER_H_
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_NAVIGATION_OBSERVER_H_
+#pragma once
+
+#include <set>
+#include <string>
+
+#include "base/memory/scoped_ptr.h"
+#include "chrome/browser/extensions/extension_install_ui.h"
+#include "content/common/notification_registrar.h"
+
+class Profile;
+class NavigationController;
+
+// The ExtensionNavigationObserver listens to navigation notifications. If the
+// user navigates into an extension that has been disabled due to a permission
+// increase, it prompts the user to accept the new permissions and re-enables
+// the extension.
+class ExtensionNavigationObserver : public ExtensionInstallUI::Delegate,
+                                    public NotificationObserver {
+ public:
+  explicit ExtensionNavigationObserver(Profile* profile);
+  virtual ~ExtensionNavigationObserver();
+
+  // NotificationObserver
+  virtual void Observe(int type,
+                       const NotificationSource& source,
+                       const NotificationDetails& details) OVERRIDE;
+ private:
+  // Registers for the NOTIFICATION_NAV_ENTRY_COMMITTED notification.
+  void RegisterForNotifications();
+
+  // Checks if |nav_controller| has entered an extension's web extent. If it
+  // has and the extension is disabled due to a permissions increase, this
+  // prompts the user to accept the new permissions and enables the extension.
+  void PromptToEnableExtensionIfNecessary(NavigationController* nav_controller);
+
+  // ExtensionInstallUI::Delegate callbacks used for the permissions prompt.
+  virtual void InstallUIProceed() OVERRIDE;
+  virtual void InstallUIAbort(bool user_initiated) OVERRIDE;
+
+  NotificationRegistrar registrar_;
+
+  Profile* profile_;
+
+  // The UI used to confirm enabling extensions.
+  scoped_ptr<ExtensionInstallUI> extension_install_ui_;
+
+  // The data we keep track of when prompting to enable extensions.
+  std::string in_progress_prompt_extension_id_;
+  NavigationController* in_progress_prompt_navigation_controller_;
+
+  // The extension ids we've already prompted the user about.
+  std::set<std::string> prompted_extensions_;
+};
+
+#endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_NAVIGATION_OBSERVER_H_
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index d3818a6..473c283 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -2579,6 +2579,15 @@
   return NULL;
 }
 
+const Extension* ExtensionService::GetDisabledExtensionByWebExtent(
+    const GURL& url) {
+  for (size_t i = 0; i < disabled_extensions_.size(); ++i) {
+    if (disabled_extensions_[i]->web_extent().MatchesURL(url))
+      return disabled_extensions_[i];
+  }
+  return NULL;
+}
+
 bool ExtensionService::ExtensionBindingsAllowed(const GURL& url) {
   // Allow bindings for all packaged extensions.
   // Note that GetExtensionByURL may return an Extension for hosted apps
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 276406c..5e791ba 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -356,10 +356,12 @@
   // Lookup an extension by |url|.
   const Extension* GetExtensionByURL(const GURL& url);
 
-  // If there is an extension for the specified url it is returned. Otherwise
-  // returns the extension whose web extent contains |url|.
+  // Returns the extension whose web extent contains |url|.
   const Extension* GetExtensionByWebExtent(const GURL& url);
 
+  // Returns the disabled extension whose web extent contains |url|.
+  const Extension* GetDisabledExtensionByWebExtent(const GURL& url);
+
   // Returns an extension that contains any URL that overlaps with the given
   // extent, if one exists.
   const Extension* GetExtensionByOverlappingWebExtent(
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
index 61b8453..83e45dfd 100644
--- a/chrome/browser/profiles/profile_impl.cc
+++ b/chrome/browser/profiles/profile_impl.cc
@@ -32,6 +32,7 @@
 #include "chrome/browser/extensions/extension_event_router.h"
 #include "chrome/browser/extensions/extension_info_map.h"
 #include "chrome/browser/extensions/extension_message_service.h"
+#include "chrome/browser/extensions/extension_navigation_observer.h"
 #include "chrome/browser/extensions/extension_pref_store.h"
 #include "chrome/browser/extensions/extension_process_manager.h"
 #include "chrome/browser/extensions/extension_service.h"
@@ -482,6 +483,7 @@
   extension_process_manager_.reset(ExtensionProcessManager::Create(this));
   extension_event_router_.reset(new ExtensionEventRouter(this));
   extension_message_service_ = new ExtensionMessageService(this);
+  extension_navigation_observer_.reset(new ExtensionNavigationObserver(this));
 
   ExtensionErrorReporter::Init(true);  // allow noisy errors.
 
diff --git a/chrome/browser/profiles/profile_impl.h b/chrome/browser/profiles/profile_impl.h
index 71aa59b..df45efb 100644
--- a/chrome/browser/profiles/profile_impl.h
+++ b/chrome/browser/profiles/profile_impl.h
@@ -19,6 +19,7 @@
 #include "content/common/notification_registrar.h"
 
 class ChromeDownloadManagerDelegate;
+class ExtensionNavigationObserver;
 class ExtensionPrefs;
 class ExtensionPrefValueMap;
 class ExtensionSettings;
@@ -201,6 +202,7 @@
   scoped_ptr<ExtensionProcessManager> extension_process_manager_;
   scoped_refptr<ExtensionMessageService> extension_message_service_;
   scoped_ptr<ExtensionEventRouter> extension_event_router_;
+  scoped_ptr<ExtensionNavigationObserver> extension_navigation_observer_;
   scoped_refptr<ExtensionSpecialStoragePolicy>
       extension_special_storage_policy_;
   scoped_ptr<SSLHostState> ssl_host_state_;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 44b5433..a5747646 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1030,6 +1030,8 @@
         'browser/extensions/extension_metrics_module.h',
         'browser/extensions/extension_module.cc',
         'browser/extensions/extension_module.h',
+        'browser/extensions/extension_navigation_observer.cc',
+        'browser/extensions/extension_navigation_observer.h',
         'browser/extensions/extension_omnibox_api.cc',
         'browser/extensions/extension_omnibox_api.h',
         'browser/extensions/extension_page_actions_module.cc',
