summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser.cc
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 16:08:29 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-04 16:08:29 +0000
commitf298901fdf7b438d12b776407026eec114e3682b (patch)
treeb0931bef4c62eca2a6b674d7f692d25694628edf /chrome/browser/browser.cc
parent3bd19b38ccaedafc2dd6dd8359b7a2083e7fdae7 (diff)
downloadchromium_src-f298901fdf7b438d12b776407026eec114e3682b.zip
chromium_src-f298901fdf7b438d12b776407026eec114e3682b.tar.gz
chromium_src-f298901fdf7b438d12b776407026eec114e3682b.tar.bz2
Step 1 in Implementing/Prototyping App Panels.
In this first step we 1) Create a new Browser::Type::TYPE_APP_PANEL which is observed in various places 2) Create an AppPanelBrowserFrame which is created in BrowserFrameWin when the TYPE_APP_PANEL is observed. AppPanelBrowserFrame draws itself per glen's mocks and will ultimately behave substantially different from regular browser windows. 3) Create a temporary command switch called --app-launch-as-panel which can be used until we implement actual app launching. Note that there is still work to be done "bit-twiddling" to match glen's mocks and to implement the "inactive" look for these windows. Steps 2 through N may include: different sizing behavior (based either on the content size or an api call), different min/maximize behavior, docking to the os taskbar, auto order & placement of app panels. A screen capture of the current implementation is attached to the bug. BUG=32361 Review URL: http://codereview.chromium.org/553143 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser.cc')
-rw-r--r--chrome/browser/browser.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 65f2b9e..193b6ad 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -252,8 +252,9 @@ Browser* Browser::CreateForPopup(Profile* profile) {
// static
Browser* Browser::CreateForApp(const std::wstring& app_name,
- Profile* profile) {
- Browser* browser = new Browser(TYPE_APP, profile);
+ Profile* profile,
+ bool is_panel) {
+ Browser* browser = new Browser(is_panel ? TYPE_APP_PANEL : TYPE_APP, profile);
browser->app_name_ = app_name;
browser->CreateBrowserWindow();
return browser;
@@ -365,11 +366,12 @@ void Browser::OpenURLOffTheRecord(Profile* profile, const GURL& url) {
}
// static
-void Browser::OpenApplicationWindow(Profile* profile, const GURL& url) {
+void Browser::OpenApplicationWindow(Profile* profile, const GURL& url,
+ bool as_panel) {
std::wstring app_name = web_app::GenerateApplicationNameFromURL(url);
RegisterAppPrefs(app_name);
- Browser* browser = Browser::CreateForApp(app_name, profile);
+ Browser* browser = Browser::CreateForApp(app_name, profile, as_panel);
browser->AddTabWithURL(url, GURL(), PageTransition::START_PAGE, true, -1,
false, NULL);
@@ -1729,7 +1731,8 @@ void Browser::DuplicateContentsAt(int index) {
Browser* browser = NULL;
if (type_ & TYPE_APP) {
DCHECK((type_ & TYPE_POPUP) == 0);
- browser = Browser::CreateForApp(app_name_, profile_);
+ DCHECK(type_ != TYPE_APP_PANEL);
+ browser = Browser::CreateForApp(app_name_, profile_, false);
} else if (type_ == TYPE_POPUP) {
browser = Browser::CreateForPopup(profile_);
}
@@ -2176,7 +2179,7 @@ void Browser::ConvertContentsToApplication(TabContents* contents) {
RegisterAppPrefs(app_name);
DetachContents(contents);
- Browser* browser = Browser::CreateForApp(app_name, profile_);
+ Browser* browser = Browser::CreateForApp(app_name, profile_, false);
browser->tabstrip_model()->AppendTabContents(contents, true);
TabContents* tab_contents = browser->GetSelectedTabContents();
tab_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;