| Index: chrome/browser/extensions/extension_tabs_module.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_tabs_module.cc (revision 66453)
|
| +++ chrome/browser/extensions/extension_tabs_module.cc (working copy)
|
| @@ -23,6 +23,7 @@
|
| #include "chrome/browser/tab_contents/navigation_entry.h"
|
| #include "chrome/browser/tab_contents/tab_contents_view.h"
|
| #include "chrome/browser/tab_contents/tab_contents.h"
|
| +#include "chrome/browser/tab_contents_wrapper.h"
|
| #include "chrome/browser/tabs/tab_strip_model.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_navigator.h"
|
| @@ -55,7 +56,7 @@
|
| bool include_incognito,
|
| Browser** browser,
|
| TabStripModel** tab_strip,
|
| - TabContents** contents,
|
| + TabContentsWrapper** contents,
|
| int* tab_index, std::string* error_message);
|
|
|
| // Takes |url_string| and returns a GURL which is either valid and absolute
|
| @@ -104,7 +105,7 @@
|
| TabStripModel* tab_strip = browser->tabstrip_model();
|
| for (int i = 0; i < tab_strip->count(); ++i) {
|
| tab_list->Append(ExtensionTabUtil::CreateTabValue(
|
| - tab_strip->GetTabContentsAt(i), tab_strip, i));
|
| + tab_strip->GetTabContentsAt(i)->tab_contents(), tab_strip, i));
|
| }
|
|
|
| return tab_list;
|
| @@ -174,7 +175,7 @@
|
| for (BrowserList::const_iterator it = BrowserList::begin();
|
| it != BrowserList::end(); ++it) {
|
| TabStripModel* tab_strip = (*it)->tabstrip_model();
|
| - int index = tab_strip->GetIndexOfTabContents(tab_contents);
|
| + int index = tab_strip->GetWrapperIndex(tab_contents);
|
| if (index != -1) {
|
| *tab_strip_model = tab_strip;
|
| *tab_index = index;
|
| @@ -185,16 +186,17 @@
|
| return false;
|
| }
|
|
|
| -bool ExtensionTabUtil::GetDefaultTab(Browser* browser, TabContents** contents,
|
| +bool ExtensionTabUtil::GetDefaultTab(Browser* browser,
|
| + TabContentsWrapper** contents,
|
| int* tab_id) {
|
| DCHECK(browser);
|
| DCHECK(contents);
|
| DCHECK(tab_id);
|
|
|
| - *contents = browser->tabstrip_model()->GetSelectedTabContents();
|
| + *contents = browser->GetSelectedTabContentsWrapper();
|
| if (*contents) {
|
| if (tab_id)
|
| - *tab_id = ExtensionTabUtil::GetTabId(*contents);
|
| + *tab_id = ExtensionTabUtil::GetTabId((*contents)->tab_contents());
|
| return true;
|
| }
|
|
|
| @@ -205,22 +207,20 @@
|
| bool include_incognito,
|
| Browser** browser,
|
| TabStripModel** tab_strip,
|
| - TabContents** contents,
|
| + TabContentsWrapper** contents,
|
| int* tab_index) {
|
| - Browser* target_browser;
|
| - TabStripModel* target_tab_strip;
|
| - TabContents* target_contents;
|
| Profile* incognito_profile =
|
| include_incognito && profile->HasOffTheRecordProfile() ?
|
| profile->GetOffTheRecordProfile() : NULL;
|
| for (BrowserList::const_iterator iter = BrowserList::begin();
|
| iter != BrowserList::end(); ++iter) {
|
| - target_browser = *iter;
|
| + Browser* target_browser = *iter;
|
| if (target_browser->profile() == profile ||
|
| target_browser->profile() == incognito_profile) {
|
| - target_tab_strip = target_browser->tabstrip_model();
|
| + TabStripModel* target_tab_strip = target_browser->tabstrip_model();
|
| for (int i = 0; i < target_tab_strip->count(); ++i) {
|
| - target_contents = target_tab_strip->GetTabContentsAt(i);
|
| + TabContentsWrapper* target_contents =
|
| + target_tab_strip->GetTabContentsAt(i);
|
| if (target_contents->controller().session_id().id() == tab_id) {
|
| if (browser)
|
| *browser = target_browser;
|
| @@ -542,12 +542,13 @@
|
| return false;
|
|
|
| TabStripModel* tab_strip = browser->tabstrip_model();
|
| - TabContents* contents = tab_strip->GetSelectedTabContents();
|
| + TabContentsWrapper* contents = tab_strip->GetSelectedTabContents();
|
| if (!contents) {
|
| error_ = keys::kNoSelectedTabError;
|
| return false;
|
| }
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(contents, tab_strip,
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents->tab_contents(),
|
| + tab_strip,
|
| tab_strip->selected_index()));
|
| return true;
|
| }
|
| @@ -664,7 +665,7 @@
|
| // Return data about the newly created tab.
|
| if (has_callback()) {
|
| result_.reset(ExtensionTabUtil::CreateTabValue(
|
| - params.target_contents,
|
| + params.target_contents->tab_contents(),
|
| params.browser->tabstrip_model(),
|
| params.browser->tabstrip_model()->GetIndexOfTabContents(
|
| params.target_contents)));
|
| @@ -678,13 +679,14 @@
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &tab_id));
|
|
|
| TabStripModel* tab_strip = NULL;
|
| - TabContents* contents = NULL;
|
| + TabContentsWrapper* contents = NULL;
|
| int tab_index = -1;
|
| if (!GetTabById(tab_id, profile(), include_incognito(),
|
| NULL, &tab_strip, &contents, &tab_index, &error_))
|
| return false;
|
|
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(contents, tab_strip,
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents->tab_contents(),
|
| + tab_strip,
|
| tab_index));
|
| return true;
|
| }
|
| @@ -706,7 +708,7 @@
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &update_props));
|
|
|
| TabStripModel* tab_strip = NULL;
|
| - TabContents* contents = NULL;
|
| + TabContentsWrapper* contents = NULL;
|
| int tab_index = -1;
|
| if (!GetTabById(tab_id, profile(), include_incognito(),
|
| NULL, &tab_strip, &contents, &tab_index, &error_))
|
| @@ -738,7 +740,7 @@
|
| const std::vector<URLPattern> host_permissions =
|
| extension->host_permissions();
|
| if (!Extension::CanExecuteScriptOnPage(
|
| - contents->GetURL(),
|
| + contents->tab_contents()->GetURL(),
|
| extension->CanExecuteScriptEverywhere(),
|
| &host_permissions,
|
| NULL,
|
| @@ -756,7 +758,7 @@
|
| // The URL of a tab contents never actually changes to a JavaScript URL, so
|
| // this check only makes sense in other cases.
|
| if (!url.SchemeIs(chrome::kJavaScriptScheme))
|
| - DCHECK_EQ(url.spec(), contents->GetURL().spec());
|
| + DCHECK_EQ(url.spec(), contents->tab_contents()->GetURL().spec());
|
| }
|
|
|
| bool selected = false;
|
| @@ -771,7 +773,7 @@
|
| tab_strip->SelectTabContentsAt(tab_index, false);
|
| DCHECK_EQ(contents, tab_strip->GetSelectedTabContents());
|
| }
|
| - contents->Focus();
|
| + contents->tab_contents()->Focus();
|
| }
|
| }
|
|
|
| @@ -786,7 +788,8 @@
|
| }
|
|
|
| if (has_callback())
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(contents, tab_strip,
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents->tab_contents(),
|
| + tab_strip,
|
| tab_index));
|
|
|
| return true;
|
| @@ -805,7 +808,7 @@
|
|
|
| Browser* source_browser = NULL;
|
| TabStripModel* source_tab_strip = NULL;
|
| - TabContents* contents = NULL;
|
| + TabContentsWrapper* contents = NULL;
|
| int tab_index = -1;
|
| if (!GetTabById(tab_id, profile(), include_incognito(),
|
| &source_browser, &source_tab_strip, &contents,
|
| @@ -852,7 +855,7 @@
|
| TabStripModel::ADD_NONE);
|
|
|
| if (has_callback())
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(contents,
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents->tab_contents(),
|
| target_tab_strip, new_index));
|
|
|
| return true;
|
| @@ -869,7 +872,8 @@
|
| source_tab_strip->MoveTabContentsAt(tab_index, new_index, false);
|
|
|
| if (has_callback())
|
| - result_.reset(ExtensionTabUtil::CreateTabValue(contents, source_tab_strip,
|
| + result_.reset(ExtensionTabUtil::CreateTabValue(contents->tab_contents(),
|
| + source_tab_strip,
|
| new_index));
|
| return true;
|
| }
|
| @@ -880,7 +884,7 @@
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &tab_id));
|
|
|
| Browser* browser = NULL;
|
| - TabContents* contents = NULL;
|
| + TabContentsWrapper* contents = NULL;
|
| if (!GetTabById(tab_id, profile(), include_incognito(),
|
| &browser, NULL, &contents, NULL, &error_))
|
| return false;
|
| @@ -1059,7 +1063,7 @@
|
| bool DetectTabLanguageFunction::RunImpl() {
|
| int tab_id = 0;
|
| Browser* browser = NULL;
|
| - TabContents* contents = NULL;
|
| + TabContentsWrapper* contents = NULL;
|
|
|
| // If |tab_id| is specified, look for it. Otherwise default to selected tab
|
| // in the current window.
|
| @@ -1088,18 +1092,18 @@
|
|
|
| AddRef(); // Balanced in GotLanguage()
|
|
|
| - if (!contents->language_state().original_language().empty()) {
|
| + if (!contents->tab_contents()->language_state().original_language().empty()) {
|
| // Delay the callback invocation until after the current JS call has
|
| // returned.
|
| MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod(
|
| this, &DetectTabLanguageFunction::GotLanguage,
|
| - contents->language_state().original_language()));
|
| + contents->tab_contents()->language_state().original_language()));
|
| return true;
|
| }
|
| // The tab contents does not know its language yet. Let's wait until it
|
| // receives it, or until the tab is closed/navigates to some other page.
|
| registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED,
|
| - Source<TabContents>(contents));
|
| + Source<TabContents>(contents->tab_contents()));
|
| registrar_.Add(this, NotificationType::TAB_CLOSING,
|
| Source<NavigationController>(&(contents->controller())));
|
| registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED,
|
| @@ -1156,7 +1160,7 @@
|
| bool include_incognito,
|
| Browser** browser,
|
| TabStripModel** tab_strip,
|
| - TabContents** contents,
|
| + TabContentsWrapper** contents,
|
| int* tab_index,
|
| std::string* error_message) {
|
| if (ExtensionTabUtil::GetTabById(tab_id, profile, include_incognito,
|
|
|