Index: chrome/browser/browser.cc |
=================================================================== |
--- chrome/browser/browser.cc (revision 5533) |
+++ chrome/browser/browser.cc (working copy) |
@@ -150,7 +150,8 @@ |
is_attempting_to_close_browser_(false), |
override_maximized_(false), |
method_factory_(this), |
- idle_task_(new BrowserIdleTimer) { |
+ idle_task_(new BrowserIdleTimer), |
+ parent_hwnd_(NULL) { |
tabstrip_model_.AddObserver(this); |
NotificationService::current()->AddObserver( |
@@ -231,6 +232,17 @@ |
return browser; |
} |
+// static |
+Browser* Browser::CreateForEmbedded(HWND parent_hwnd, |
+ gfx::Rect& rect, |
+ Profile* profile) { |
+ Browser* browser = new Browser(BrowserType::EMBEDDED, profile); |
+ browser->set_parent_hwnd(parent_hwnd); |
+ browser->set_override_bounds(rect); |
+ browser->CreateBrowserWindow(); |
+ return browser; |
+} |
+ |
void Browser::CreateBrowserWindow() { |
DCHECK(!window_); |
window_ = BrowserWindow::CreateBrowserWindow(this); |
@@ -314,8 +326,8 @@ |
} |
bool Browser::ShouldSaveWindowPlacement() const { |
- // We don't save window position for popups. |
- return type() != BrowserType::BROWSER; |
+ // We don't save window position for popups for embedded windows. |
+ return type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED; |
} |
void Browser::SaveWindowPlacement(const gfx::Rect& bounds, bool maximized) { |
@@ -697,7 +709,7 @@ |
void Browser::ConvertPopupToTabbedBrowser() { |
UserMetrics::RecordAction(L"ShowAsTab", profile_); |
- if (type() != BrowserType::BROWSER) { |
+ if (type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED) { |
NOTREACHED(); |
return; |
} |
@@ -1276,7 +1288,7 @@ |
Browser* browser = NULL; |
if (type_ == BrowserType::APPLICATION) { |
browser = Browser::CreateForApp(app_name_, profile_); |
- } else if (type_ == BrowserType::BROWSER) { |
+ } else if (type_ == BrowserType::BROWSER || type_ == BrowserType::EMBEDDED) { |
browser = Browser::CreateForPopup(profile_); |
} |
@@ -1668,7 +1680,7 @@ |
} |
void Browser::MoveContents(TabContents* source, const gfx::Rect& pos) { |
- if (type() != BrowserType::BROWSER) { |
+ if (type() != BrowserType::BROWSER && type() != BrowserType::EMBEDDED) { |
NOTREACHED() << "moving invalid browser type"; |
return; |
} |
@@ -1680,6 +1692,10 @@ |
return (type() == BrowserType::BROWSER); |
} |
+bool Browser::IsEmbedded(TabContents* source) { |
+ return (type() == BrowserType::EMBEDDED); |
+} |
+ |
void Browser::ToolbarSizeChanged(TabContents* source, bool is_animating) { |
if (source == GetSelectedTabContents() || source == NULL) { |
// This will refresh the shelf if needed. |