Remove GetActiveEntry usage from chrome/browser/extensions.

Using GetActiveEntry can lead to subtle bugs, including security ones. See the bug entry for more details.

BUG=273710

Review URL: https://chromiumcodereview.appspot.com/23222004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218076 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/active_tab_permission_granter.cc b/chrome/browser/extensions/active_tab_permission_granter.cc
index 312a6c3..a62b181 100644
--- a/chrome/browser/extensions/active_tab_permission_granter.cc
+++ b/chrome/browser/extensions/active_tab_permission_granter.cc
@@ -116,7 +116,7 @@
 }
 
 int32 ActiveTabPermissionGranter::GetPageID() {
-  return web_contents()->GetController().GetActiveEntry()->GetPageID();
+  return web_contents()->GetController().GetVisibleEntry()->GetPageID();
 }
 
 }  // namespace extensions
diff --git a/chrome/browser/extensions/api/debugger/debugger_api.cc b/chrome/browser/extensions/api/debugger/debugger_api.cc
index f29ea9ac..fd06dda 100644
--- a/chrome/browser/extensions/api/debugger/debugger_api.cc
+++ b/chrome/browser/extensions/api/debugger/debugger_api.cc
@@ -717,7 +717,7 @@
     dictionary->SetString(kTargetTitleField, web_contents->GetTitle());
 
     content::NavigationController& controller = web_contents->GetController();
-    content::NavigationEntry* entry = controller.GetActiveEntry();
+    content::NavigationEntry* entry = controller.GetVisibleEntry();
     if (entry != NULL && entry->GetURL().is_valid()) {
       dictionary->SetString(kTargetFaviconUrlField,
                             entry->GetFavicon().url.spec());
diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
index e528f9b..4fda0e8b 100644
--- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc
+++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
@@ -746,7 +746,7 @@
   }
 
   // Make sure the URL hasn't changed.
-  content::NavigationEntry* entry = contents->GetController().GetActiveEntry();
+  content::NavigationEntry* entry = contents->GetController().GetVisibleEntry();
   if (!entry || url != entry->GetURL().spec()) {
     error_ = extensions::ErrorUtils::FormatErrorMessage(
         extensions::kUrlNotActiveError, url);
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 09f86ab1..a321999 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -1631,7 +1631,7 @@
 
   if (web_contents->ShowingInterstitialPage()) {
     // This does as same as Browser::ReloadInternal.
-    NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
+    NavigationEntry* entry = web_contents->GetController().GetVisibleEntry();
     OpenURLParams params(entry->GetURL(), Referrer(), CURRENT_TAB,
                          content::PAGE_TRANSITION_RELOAD, false);
     GetCurrentBrowser()->OpenURL(params);
diff --git a/chrome/browser/extensions/browser_event_router.cc b/chrome/browser/extensions/browser_event_router.cc
index db82d6b..635781a 100644
--- a/chrome/browser/extensions/browser_event_router.cc
+++ b/chrome/browser/extensions/browser_event_router.cc
@@ -369,7 +369,7 @@
     if (!icon_url_changed || !*icon_url_changed)
       return;
     content::NavigationEntry* entry =
-        contents->GetController().GetActiveEntry();
+        contents->GetController().GetVisibleEntry();
     if (!entry || !entry->GetFavicon().valid)
       return;
     scoped_ptr<DictionaryValue> changed_properties(new DictionaryValue());
diff --git a/chrome/browser/extensions/extension_override_apitest.cc b/chrome/browser/extensions/extension_override_apitest.cc
index 79a0119c..e25602dd 100644
--- a/chrome/browser/extensions/extension_override_apitest.cc
+++ b/chrome/browser/extensions/extension_override_apitest.cc
@@ -55,8 +55,8 @@
     // will call chrome.test.notifyPass() .
     ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab/"));
     WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
-    ASSERT_TRUE(tab->GetController().GetActiveEntry());
-    EXPECT_TRUE(tab->GetController().GetActiveEntry()->GetURL().
+    ASSERT_TRUE(tab->GetController().GetVisibleEntry());
+    EXPECT_TRUE(tab->GetController().GetVisibleEntry()->GetURL().
                 SchemeIs(extensions::kExtensionScheme));
 
     ASSERT_TRUE(catcher.GetNextResult());
@@ -80,8 +80,8 @@
   Browser* otr_browser = ui_test_utils::OpenURLOffTheRecord(
       browser()->profile(), GURL("chrome://newtab/"));
   WebContents* tab = otr_browser->tab_strip_model()->GetActiveWebContents();
-  ASSERT_TRUE(tab->GetController().GetActiveEntry());
-  EXPECT_FALSE(tab->GetController().GetActiveEntry()->GetURL().
+  ASSERT_TRUE(tab->GetController().GetVisibleEntry());
+  EXPECT_FALSE(tab->GetController().GetVisibleEntry()->GetURL().
                SchemeIs(extensions::kExtensionScheme));
 }
 
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index 9a0c9f70..e1cdda0 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -155,7 +155,7 @@
   result->SetString(keys::kUrlKey, contents->GetURL().spec());
   result->SetString(keys::kTitleKey, contents->GetTitle());
   if (!is_loading) {
-    NavigationEntry* entry = contents->GetController().GetActiveEntry();
+    NavigationEntry* entry = contents->GetController().GetVisibleEntry();
     if (entry && entry->GetFavicon().valid)
       result->SetString(keys::kFaviconUrlKey, entry->GetFavicon().url.spec());
   }
diff --git a/chrome/browser/extensions/extension_url_rewrite_browsertest.cc b/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
index 0eb343f..0db2dcb 100644
--- a/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
+++ b/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
@@ -46,7 +46,7 @@
   }
 
   NavigationEntry* GetNavigationEntry() const {
-    return GetNavigationController()->GetActiveEntry();
+    return GetNavigationController()->GetVisibleEntry();
   }
 
   base::FilePath GetTestExtensionPath(const char* extension_name) const {
diff --git a/chrome/browser/extensions/navigation_observer.cc b/chrome/browser/extensions/navigation_observer.cc
index 3e3bde3..a4ef5c7 100644
--- a/chrome/browser/extensions/navigation_observer.cc
+++ b/chrome/browser/extensions/navigation_observer.cc
@@ -52,7 +52,7 @@
   if (!in_progress_prompt_extension_id_.empty())
     return;
 
-  NavigationEntry* nav_entry = nav_controller->GetActiveEntry();
+  NavigationEntry* nav_entry = nav_controller->GetVisibleEntry();
   if (!nav_entry)
     return;
 
diff --git a/chrome/browser/extensions/script_badge_controller.cc b/chrome/browser/extensions/script_badge_controller.cc
index 43aebb1..17cfd13 100644
--- a/chrome/browser/extensions/script_badge_controller.cc
+++ b/chrome/browser/extensions/script_badge_controller.cc
@@ -176,7 +176,7 @@
 
 int32 ScriptBadgeController::GetPageID() {
   content::NavigationEntry* nav_entry =
-      web_contents()->GetController().GetActiveEntry();
+      web_contents()->GetController().GetVisibleEntry();
   return nav_entry ? nav_entry->GetPageID() : -1;
 }
 
diff --git a/chrome/browser/extensions/script_badge_controller_unittest.cc b/chrome/browser/extensions/script_badge_controller_unittest.cc
index 01bfd60..585fe2a 100644
--- a/chrome/browser/extensions/script_badge_controller_unittest.cc
+++ b/chrome/browser/extensions/script_badge_controller_unittest.cc
@@ -154,7 +154,7 @@
   script_badge_controller_->OnScriptsExecuted(
       web_contents(),
       id_map,
-      web_contents()->GetController().GetActiveEntry()->GetPageID(),
+      web_contents()->GetController().GetVisibleEntry()->GetPageID(),
       GURL(std::string()));
   EXPECT_THAT(script_badge_controller_->GetCurrentActions(),
               testing::ElementsAre(GetScriptBadge(*extension.get())));
@@ -183,7 +183,7 @@
     script_badge_controller_->OnScriptsExecuted(
         web_contents(),
         id_map,
-        web_contents()->GetController().GetActiveEntry()->GetPageID(),
+        web_contents()->GetController().GetVisibleEntry()->GetPageID(),
         GURL(std::string()));
 
     EXPECT_THAT(script_badge_controller_->GetCurrentActions(),
diff --git a/chrome/browser/extensions/script_bubble_controller_unittest.cc b/chrome/browser/extensions/script_bubble_controller_unittest.cc
index cce310c..c53dac5 100644
--- a/chrome/browser/extensions/script_bubble_controller_unittest.cc
+++ b/chrome/browser/extensions/script_bubble_controller_unittest.cc
@@ -136,8 +136,8 @@
   script_bubble_controller_->OnScriptsExecuted(
       web_contents(),
       executing_scripts,
-      web_contents()->GetController().GetActiveEntry()->GetPageID(),
-      web_contents()->GetController().GetActiveEntry()->GetURL());
+      web_contents()->GetController().GetVisibleEntry()->GetPageID(),
+      web_contents()->GetController().GetVisibleEntry()->GetURL());
   EXPECT_EQ(1u, script_bubble_controller_->extensions_running_scripts().size());
   std::set<std::string> extension_ids;
   extension_ids.insert(extension1->id());
@@ -151,8 +151,8 @@
   script_bubble_controller_->OnScriptsExecuted(
       web_contents(),
       executing_scripts,
-      web_contents()->GetController().GetActiveEntry()->GetPageID(),
-      web_contents()->GetController().GetActiveEntry()->GetURL());
+      web_contents()->GetController().GetVisibleEntry()->GetPageID(),
+      web_contents()->GetController().GetVisibleEntry()->GetURL());
   EXPECT_EQ(2u, script_bubble_controller_->extensions_running_scripts().size());
   extension_ids.insert(extension2->id());
   EXPECT_TRUE(extension_ids ==
@@ -165,8 +165,8 @@
   script_bubble_controller_->OnScriptsExecuted(
       web_contents(),
       executing_scripts,
-      web_contents()->GetController().GetActiveEntry()->GetPageID(),
-      web_contents()->GetController().GetActiveEntry()->GetURL());
+      web_contents()->GetController().GetVisibleEntry()->GetPageID(),
+      web_contents()->GetController().GetVisibleEntry()->GetURL());
   EXPECT_EQ(2u, script_bubble_controller_->extensions_running_scripts().size());
 
   // Running tabs.executeScript from an already-seen extension does not affect
diff --git a/chrome/browser/extensions/webstore_installer.cc b/chrome/browser/extensions/webstore_installer.cc
index 651a28d..6bfd993d 100644
--- a/chrome/browser/extensions/webstore_installer.cc
+++ b/chrome/browser/extensions/webstore_installer.cc
@@ -434,9 +434,9 @@
       render_view_host_routing_id ,
       resource_context));
   params->set_file_path(file);
-  if (controller_->GetActiveEntry())
+  if (controller_->GetVisibleEntry())
     params->set_referrer(
-        content::Referrer(controller_->GetActiveEntry()->GetURL(),
+        content::Referrer(controller_->GetVisibleEntry()->GetURL(),
                           WebKit::WebReferrerPolicyDefault));
   params->set_callback(base::Bind(&WebstoreInstaller::OnDownloadStarted, this));
   download_manager->DownloadUrl(params.Pass());