Chromium Code Reviews| Index: chrome/browser/ui/extensions/shell_window.cc |
| diff --git a/chrome/browser/ui/extensions/shell_window.cc b/chrome/browser/ui/extensions/shell_window.cc |
| index 2c4e5a7a2777346692da0def1c592c7362d77924..e0e5ddb96f63997464ba98136053c48d27d181b8 100644 |
| --- a/chrome/browser/ui/extensions/shell_window.cc |
| +++ b/chrome/browser/ui/extensions/shell_window.cc |
| @@ -50,6 +50,10 @@ |
| namespace app_window = extensions::api::app_window; |
| +#if defined(USE_ASH) |
| +#include "chrome/browser/ui/ash/shell_panel_ash.h" |
| +#endif |
| + |
| using content::BrowserThread; |
| using content::ConsoleMessageLevel; |
| using content::RenderViewHost; |
| @@ -74,7 +78,8 @@ void SuspendRenderViewHost(RenderViewHost* rvh) { |
| } // namespace |
| ShellWindow::CreateParams::CreateParams() |
| - : frame(ShellWindow::CreateParams::FRAME_CHROME), |
| + : window_type(ShellWindow::WINDOW_TYPE_DEFAULT), |
| + frame(ShellWindow::CreateParams::FRAME_CHROME), |
| bounds(INT_MIN, INT_MIN, INT_MIN, INT_MIN), |
| restore_position(true), restore_size(true), |
| creator_process_id(0), hidden(false) { |
| @@ -86,19 +91,21 @@ ShellWindow::CreateParams::~CreateParams() { |
| ShellWindow* ShellWindow::Create(Profile* profile, |
| const extensions::Extension* extension, |
| const GURL& url, |
| - const ShellWindow::CreateParams& params) { |
| + const CreateParams& params) { |
| // This object will delete itself when the window is closed. |
| - ShellWindow* window = new ShellWindow(profile, extension); |
| + ShellWindow* window = new ShellWindow(params.window_type, profile, extension); |
| window->Init(url, params); |
| extensions::ShellWindowRegistry::Get(profile)->AddShellWindow(window); |
| return window; |
| } |
| -ShellWindow::ShellWindow(Profile* profile, |
| +ShellWindow::ShellWindow(WindowType window_type, |
| + Profile* profile, |
| const extensions::Extension* extension) |
| : profile_(profile), |
| extension_(extension), |
| web_contents_(NULL), |
| + window_type_(window_type), |
| ALLOW_THIS_IN_INITIALIZER_LIST( |
| extension_function_dispatcher_(profile, this)) { |
| } |
| @@ -151,11 +158,22 @@ void ShellWindow::Init(const GURL& url, |
| ShellWindow::CreateParams new_params = params; |
| new_params.bounds = bounds; |
| - native_window_.reset(NativeShellWindow::Create(this, new_params)); |
| + DCHECK(!native_window_.get()); |
| +#if defined(USE_ASH) |
| + if (params.window_type == WINDOW_TYPE_PANEL) |
| + native_window_.reset(new ShellPanelAsh(this, params)); |
| +#endif |
| + if (!native_window_.get()) |
| + native_window_.reset(NativeShellWindow::Create(this, new_params)); |
| + |
| SaveWindowPosition(); |
| - if (!params.hidden) |
| - GetBaseWindow()->Show(); |
| + if (!params.hidden) { |
| + if (params.window_type != WINDOW_TYPE_PANEL) |
|
jeremya
2012/11/15 01:09:25
Shouldn't this be == then?
stevenjb
2012/11/16 23:42:40
Yes. Done.
|
| + GetBaseWindow()->ShowInactive(); // Panels are not activated by default. |
| + else |
| + GetBaseWindow()->Show(); |
| + } |
| // If the new view is in the same process as the creator, block the created |
| // RVH from loading anything until the background page has had a chance to do |
| @@ -304,7 +322,8 @@ string16 ShellWindow::GetTitle() const { |
| // WebContents::GetTitle() will return the page's URL if there's no <title> |
| // specified. However, we'd prefer to show the name of the extension in that |
| // case, so we directly inspect the NavigationEntry's title. |
| - if (!web_contents()->GetController().GetActiveEntry() || |
| + if (!web_contents() || |
| + !web_contents()->GetController().GetActiveEntry() || |
| web_contents()->GetController().GetActiveEntry()->GetTitle().empty()) |
| return UTF8ToUTF16(extension()->name()); |
| string16 title = web_contents()->GetTitle(); |