summaryrefslogtreecommitdiffstats
path: root/chrome/browser/tab_contents
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/tab_contents')
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index 3f61ddb..ebc370b 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -1230,10 +1230,14 @@ void TabContents::OnCloseStarted() {
}
TabContents* TabContents::CloneAndMakePhantom() {
- DCHECK(app_extension_); // Should only be invoked on apps.
-
TabNavigation tab_nav;
- tab_nav.set_url(app_extension_->app_launch_url());
+
+ NavigationEntry* entry = controller().GetActiveEntry();
+ if (app_extension_)
+ tab_nav.set_url(app_extension_->app_launch_url());
+ else if (entry)
+ tab_nav.SetFromNavigationEntry(*entry);
+
std::vector<TabNavigation> navigations;
navigations.push_back(tab_nav);
@@ -1242,6 +1246,9 @@ TabContents* TabContents::CloneAndMakePhantom() {
new_contents->SetAppExtension(app_extension_);
new_contents->controller().RestoreFromState(navigations, 0, false);
+ if (!app_extension_ && entry)
+ new_contents->controller().GetActiveEntry()->favicon() = entry->favicon();
+
return new_contents;
}