Index: chrome/browser/ui/views/aura/panel_view_aura.cc |
diff --git a/chrome/browser/ui/views/aura/panel_view_aura.cc b/chrome/browser/ui/views/aura/panel_view_aura.cc |
deleted file mode 100644 |
index df56f8cb3ff89816586a256a4600a4c9e964e1af..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/aura/panel_view_aura.cc |
+++ /dev/null |
@@ -1,411 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/views/aura/panel_view_aura.h" |
- |
-#include "ash/wm/panel_frame_view.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/extensions/extension_function_dispatcher.h" |
-#include "chrome/browser/extensions/extension_tab_util.h" |
-#include "chrome/browser/extensions/extension_tabs_module_constants.h" |
-#include "chrome/browser/extensions/extension_window_controller.h" |
-#include "chrome/browser/extensions/extension_window_list.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_list.h" |
-#include "chrome/common/chrome_view_type.h" |
-#include "chrome/common/extensions/extension_messages.h" |
-#include "content/public/browser/site_instance.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/browser/web_contents_delegate.h" |
-#include "content/public/browser/web_contents_observer.h" |
-#include "googleurl/src/gurl.h" |
-#include "ipc/ipc_message.h" |
-#include "ipc/ipc_message_macros.h" |
-#include "ui/aura/window.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace { |
-const int kMinWidth = 100; |
-const int kMinHeight = 100; |
-const int kDefaultWidth = 200; |
-const int kDefaultHeight = 300; |
-} |
- |
-namespace internal { |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// PanelHost |
- |
-class PanelHost : public content::WebContentsDelegate, |
- public content::WebContentsObserver, |
- public ExtensionFunctionDispatcher::Delegate { |
- public: |
- PanelHost(PanelViewAura* panel_view, Profile* profile); |
- virtual ~PanelHost(); |
- |
- void Init(const GURL& url); |
- |
- content::WebContents* web_contents() const { return web_contents_.get(); } |
- Profile* profile() const { return profile_; } |
- |
- // ExtensionFunctionDispatcher::Delegate overrides. |
- virtual Browser* GetBrowser() OVERRIDE; |
- virtual content::WebContents* GetAssociatedWebContents() const OVERRIDE; |
- |
- // content::WebContentsDelegate implementation: |
- virtual void CloseContents(content::WebContents* source) OVERRIDE; |
- virtual void HandleMouseDown() OVERRIDE; |
- virtual void UpdatePreferredSize(content::WebContents* source, |
- const gfx::Size& pref_size) OVERRIDE; |
- virtual void AddNewContents(content::WebContents* source, |
- content::WebContents* new_contents, |
- WindowOpenDisposition disposition, |
- const gfx::Rect& initial_pos, |
- bool user_gesture) OVERRIDE; |
- |
- // content::WebContentsObserver implementation: |
- virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE; |
- virtual void RenderViewReady() OVERRIDE; |
- virtual void RenderViewGone(base::TerminationStatus status) OVERRIDE; |
- virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
- |
- protected: |
- // Message handlers |
- void OnRequest(const ExtensionHostMsg_Request_Params& params); |
- |
- private: |
- PanelViewAura* panel_view_; |
- Profile* profile_; |
- ExtensionFunctionDispatcher extension_function_dispatcher_; |
- scoped_ptr<content::WebContents> web_contents_; |
- // Site instance to be used for opening new links. |
- scoped_refptr<content::SiteInstance> site_instance_; |
-}; |
- |
-PanelHost::PanelHost(PanelViewAura* panel_view, Profile* profile) |
- : panel_view_(panel_view), |
- profile_(profile), |
- ALLOW_THIS_IN_INITIALIZER_LIST( |
- extension_function_dispatcher_(profile, this)) { |
-} |
- |
-PanelHost::~PanelHost() { |
-} |
- |
-void PanelHost::Init(const GURL& url) { |
- site_instance_ = content::SiteInstance::CreateForURL(profile_, url); |
- |
- web_contents_.reset(content::WebContents::Create( |
- profile_, site_instance_.get(), MSG_ROUTING_NONE, NULL, NULL)); |
- web_contents_->SetViewType(chrome::VIEW_TYPE_PANEL); |
- web_contents_->SetDelegate(this); |
- Observe(web_contents_.get()); |
- |
- web_contents_->GetController().LoadURL( |
- url, content::Referrer(), content::PAGE_TRANSITION_LINK, std::string()); |
-} |
- |
-Browser* PanelHost::GetBrowser() { |
- return NULL; |
-} |
- |
-content::WebContents* PanelHost::GetAssociatedWebContents() const { |
- return web_contents_.get(); |
-} |
- |
-void PanelHost::CloseContents(content::WebContents* source) { |
- panel_view_->CloseView(); |
-} |
- |
-void PanelHost::HandleMouseDown() { |
-} |
- |
-void PanelHost::UpdatePreferredSize(content::WebContents* source, |
- const gfx::Size& pref_size) { |
- panel_view_->SetContentPreferredSize(pref_size); |
-} |
- |
-// This handles launching a new page from within the panel. |
-// TODO(stevenjb): Determine whether or not this is the desired/expected |
-// behavior for panels. |
-void PanelHost::AddNewContents(content::WebContents* source, |
- content::WebContents* new_contents, |
- WindowOpenDisposition disposition, |
- const gfx::Rect& initial_pos, |
- bool user_gesture) { |
- Browser* browser = BrowserList::GetLastActiveWithProfile( |
- Profile::FromBrowserContext(new_contents->GetBrowserContext())); |
- if (!browser) |
- return; |
- browser->AddWebContents(new_contents, disposition, initial_pos, user_gesture); |
-} |
- |
-void PanelHost::RenderViewCreated(RenderViewHost* render_view_host) { |
-} |
- |
-void PanelHost::RenderViewReady() { |
-} |
- |
-void PanelHost::RenderViewGone(base::TerminationStatus status) { |
- CloseContents(web_contents_.get()); |
-} |
- |
-bool PanelHost::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(PanelHost, message) |
- IPC_MESSAGE_HANDLER(ExtensionHostMsg_Request, OnRequest) |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void PanelHost::OnRequest(const ExtensionHostMsg_Request_Params& params) { |
- extension_function_dispatcher_.Dispatch(params, |
- web_contents_->GetRenderViewHost()); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// PanelExtensionWindowController |
- |
-class PanelExtensionWindowController : public ExtensionWindowController { |
- public: |
- PanelExtensionWindowController(PanelViewAura* panel_view, |
- PanelHost* panel_host); |
- |
- // Overriden from ExtensionWindowController: |
- virtual const SessionID& GetSessionId() const OVERRIDE; |
- virtual base::DictionaryValue* CreateWindowValue() const OVERRIDE; |
- virtual base::DictionaryValue* CreateWindowValueWithTabs() const OVERRIDE; |
- virtual bool CanClose( |
- ExtensionWindowController::Reason* reason) const OVERRIDE; |
- virtual void SetFullscreenMode(bool is_fullscreen, |
- const GURL& extension_url) const OVERRIDE; |
- |
- private: |
- PanelViewAura* panel_view_; |
- PanelHost* panel_host_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PanelExtensionWindowController); |
-}; |
- |
-PanelExtensionWindowController::PanelExtensionWindowController( |
- PanelViewAura* panel_view, |
- PanelHost* panel_host) |
- : ExtensionWindowController(panel_view, panel_host->profile()), |
- panel_view_(panel_view), |
- panel_host_(panel_host) { |
-} |
- |
-const SessionID& PanelExtensionWindowController::GetSessionId() const { |
- return panel_view_->session_id(); |
-} |
- |
-namespace keys = extension_tabs_module_constants; |
- |
-base::DictionaryValue* |
-PanelExtensionWindowController::CreateWindowValue() const { |
- DictionaryValue* result = ExtensionWindowController::CreateWindowValue(); |
- |
- result->SetString(keys::kWindowTypeKey, keys::kWindowTypeValuePanel); |
- std::string window_state = window()->IsMinimized() ? |
- keys::kShowStateValueMinimized : keys::kShowStateValueNormal; |
- result->SetString(keys::kShowStateKey, window_state); |
- |
- return result; |
-} |
- |
-base::DictionaryValue* |
-PanelExtensionWindowController::CreateWindowValueWithTabs() const { |
- DictionaryValue* result = CreateWindowValue(); |
- |
- // TODO(stevenjb): Implement tab interface for Aura panels. |
- // Currently there is no mechanism to get a tab id without an associated |
- // TabContentsWrapper. We will need to either add a TabContentsWrapper for |
- // panels, or add another mechanism for tracking tabs. crbug.com/115532. |
- |
- return result; |
-} |
- |
-bool PanelExtensionWindowController::CanClose( |
- ExtensionWindowController::Reason* reason) const { |
- return true; |
-} |
- |
-void PanelExtensionWindowController::SetFullscreenMode( |
- bool is_fullscreen, const GURL& extension_url) const { |
-} |
- |
-} // namespace internal |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// PanelViewAura |
- |
-PanelViewAura::PanelViewAura(const std::string& title) |
- : title_(title), |
- preferred_size_(kMinWidth, kMinHeight), |
- widget_(NULL) { |
-} |
- |
-PanelViewAura::~PanelViewAura() { |
-} |
- |
-views::Widget* PanelViewAura::Init(Profile* profile, |
- const GURL& url, |
- const gfx::Rect& bounds) { |
- widget_ = new views::Widget; |
- views::Widget::InitParams params(views::Widget::InitParams::TYPE_PANEL); |
- params.delegate = this; |
- |
- params.bounds = bounds; |
- if (params.bounds.width() == 0) |
- params.bounds.set_width(kDefaultWidth); |
- else if (params.bounds.width() < kMinWidth) |
- params.bounds.set_width(kMinWidth); |
- |
- if (params.bounds.height() == 0) |
- params.bounds.set_height(kDefaultHeight); |
- else if (params.bounds.height() < kMinHeight) |
- params.bounds.set_height(kMinHeight); |
- |
- widget_->Init(params); |
- widget_->GetNativeView()->SetName(title_); |
- |
- host_.reset(new internal::PanelHost(this, profile)); |
- host_->Init(url); |
- |
- Attach(host_->web_contents()->GetNativeView()); |
- |
- // Add the browser to the list of windows available to the extension API. |
- extension_window_controller_.reset( |
- new internal::PanelExtensionWindowController(this, host_.get())); |
- |
- // Show the window, but don't activate it by default. |
- widget_->ShowInactive(); |
- |
- return widget_; |
-} |
- |
-content::WebContents* PanelViewAura::WebContents() { |
- return host_->web_contents(); |
-} |
- |
-void PanelViewAura::CloseView() { |
- widget_->CloseNow(); |
-} |
- |
-void PanelViewAura::SetContentPreferredSize(const gfx::Size& size) { |
- if (size.width() > kMinWidth) |
- preferred_size_.set_width(size.width()); |
- if (size.height() > kMinHeight) |
- preferred_size_.set_height(size.height()); |
-} |
- |
-// views::View implementation: |
- |
-gfx::Size PanelViewAura::GetPreferredSize() { |
- return preferred_size_; |
-} |
- |
-// views::WidgetDelegate implementation: |
- |
-bool PanelViewAura::CanResize() const { |
- // TODO(stevenjb): Can/should panels be able to prevent resizing? |
- return true; |
-} |
- |
-string16 PanelViewAura::GetWindowTitle() const { |
- return UTF8ToUTF16(title_); |
-} |
- |
-views::View* PanelViewAura::GetContentsView() { |
- return this; |
-} |
- |
-views::View* PanelViewAura::GetInitiallyFocusedView() { |
- return this; |
-} |
- |
-bool PanelViewAura::ShouldShowWindowTitle() const { |
- return true; |
-} |
- |
-views::Widget* PanelViewAura::GetWidget() { |
- return View::GetWidget(); |
-} |
- |
-const views::Widget* PanelViewAura::GetWidget() const { |
- return View::GetWidget(); |
-} |
- |
-views::NonClientFrameView* PanelViewAura::CreateNonClientFrameView() { |
- return new ash::PanelFrameView(); |
-} |
- |
-// BaseWindow implementation: |
- |
-bool PanelViewAura::IsActive() const { |
- return GetWidget()->IsActive(); |
-} |
- |
-bool PanelViewAura::IsMaximized() const { |
- return GetWidget()->IsMaximized(); |
-} |
- |
-bool PanelViewAura::IsMinimized() const { |
- return GetWidget()->IsMinimized(); |
-} |
- |
-gfx::Rect PanelViewAura::GetRestoredBounds() const { |
- return GetWidget()->GetRestoredBounds(); |
-} |
- |
-gfx::Rect PanelViewAura::GetBounds() const { |
- return GetWidget()->GetWindowScreenBounds(); |
-} |
- |
-void PanelViewAura::Show() { |
- GetWidget()->Show(); |
-} |
- |
-void PanelViewAura::ShowInactive() { |
- GetWidget()->ShowInactive(); |
-} |
- |
-void PanelViewAura::Close() { |
- GetWidget()->Close(); |
-} |
- |
-void PanelViewAura::Activate() { |
- GetWidget()->Activate(); |
-} |
- |
-void PanelViewAura::Deactivate() { |
- GetWidget()->Deactivate(); |
-} |
- |
-void PanelViewAura::Maximize() { |
- // Maximize is not implemented for panels. |
-} |
- |
-void PanelViewAura::Minimize() { |
- // TODO(stevenjb): Implement this properly. |
- GetWidget()->Minimize(); |
- NOTIMPLEMENTED(); |
-} |
- |
-void PanelViewAura::Restore() { |
- // TODO(stevenjb): Implement this properly. |
- GetWidget()->Restore(); |
- NOTIMPLEMENTED(); |
-} |
- |
-void PanelViewAura::SetBounds(const gfx::Rect& bounds) { |
- GetWidget()->SetBounds(bounds); |
-} |
- |
-void PanelViewAura::FlashFrame(bool flash) { |
- // TODO(stevenjb): Implement |
- NOTIMPLEMENTED(); |
-} |