Index: chrome/browser/ui/browser_commands.cc |
diff --git a/chrome/browser/ui/browser_commands.cc b/chrome/browser/ui/browser_commands.cc |
index be8f17a9cf9c28427c18133f551a5cb3401ab2f3..6491547f06b47791d82a4cfd1ae711f0beadf336 100644 |
--- a/chrome/browser/ui/browser_commands.cc |
+++ b/chrome/browser/ui/browser_commands.cc |
@@ -84,6 +84,17 @@ using content::SSLStatus; |
using content::UserMetricsAction; |
using content::WebContents; |
+// TODO(avi): Kill this when TabContents goes away. |
+class BrowserCommandsTabContentsCreator { |
+ public: |
+ static TabContents* CreateTabContents(content::WebContents* contents) { |
+ return TabContents::Factory::CreateTabContents(contents); |
+ } |
+ static TabContents* CloneTabContents(TabContents* contents) { |
+ return TabContents::Factory::CloneTabContents(contents); |
+ } |
+}; |
+ |
namespace chrome { |
namespace { |
@@ -93,7 +104,8 @@ WebContents* GetOrCloneTabForDisposition(Browser* browser, |
switch (disposition) { |
case NEW_FOREGROUND_TAB: |
case NEW_BACKGROUND_TAB: { |
- current_tab = current_tab->Clone(); |
+ current_tab = |
+ BrowserCommandsTabContentsCreator::CloneTabContents(current_tab); |
browser->tab_strip_model()->AddTabContents( |
current_tab, -1, content::PAGE_TRANSITION_LINK, |
disposition == NEW_FOREGROUND_TAB ? TabStripModel::ADD_ACTIVE : |
@@ -101,7 +113,8 @@ WebContents* GetOrCloneTabForDisposition(Browser* browser, |
break; |
} |
case NEW_WINDOW: { |
- current_tab = current_tab->Clone(); |
+ current_tab = |
+ BrowserCommandsTabContentsCreator::CloneTabContents(current_tab); |
Browser* b = new Browser(Browser::CreateParams(browser->profile())); |
b->tab_strip_model()->AddTabContents( |
current_tab, -1, content::PAGE_TRANSITION_LINK, |
@@ -490,7 +503,8 @@ bool CanDuplicateTab(const Browser* browser) { |
void DuplicateTabAt(Browser* browser, int index) { |
TabContents* contents = GetTabContentsAt(browser, index); |
CHECK(contents); |
- TabContents* contents_dupe = contents->Clone(); |
+ TabContents* contents_dupe = |
+ BrowserCommandsTabContentsCreator::CloneTabContents(contents); |
bool pinned = false; |
if (browser->CanSupportWindowFeature(Browser::FEATURE_TABSTRIP)) { |
@@ -895,7 +909,8 @@ void ViewSource(Browser* browser, |
// Note that Clone does not copy the pending or transient entries, so the |
// active entry in view_source_contents will be the last committed entry. |
- TabContents* view_source_contents = contents->Clone(); |
+ TabContents* view_source_contents = |
+ BrowserCommandsTabContentsCreator::CloneTabContents(contents); |
view_source_contents->web_contents()->GetController().PruneAllButActive(); |
NavigationEntry* active_entry = |
view_source_contents->web_contents()->GetController().GetActiveEntry(); |
@@ -979,8 +994,10 @@ void ConvertTabToAppWindow(Browser* browser, |
Browser::CreateParams::CreateForApp( |
Browser::TYPE_POPUP, app_name, gfx::Rect(), browser->profile())); |
TabContents* tab_contents = TabContents::FromWebContents(contents); |
- if (!tab_contents) |
- tab_contents = new TabContents(contents); |
+ if (!tab_contents) { |
+ tab_contents = |
+ BrowserCommandsTabContentsCreator::CreateTabContents(contents); |
+ } |
app_browser->tab_strip_model()->AppendTabContents(tab_contents, true); |
contents->GetMutableRendererPrefs()->can_accept_load_drops = false; |