Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Unified Diff: trunk/src/content/shell/browser/shell_views.cc

Issue 30413002: Revert 229507 "aura: Allow creating content_shell without views." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « trunk/src/content/shell/browser/shell_aura.cc ('k') | trunk/src/ui/events/events.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/content/shell/browser/shell_views.cc
===================================================================
--- trunk/src/content/shell/browser/shell_views.cc (revision 229520)
+++ trunk/src/content/shell/browser/shell_views.cc (working copy)
@@ -1,388 +0,0 @@
-// Copyright 2013 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 "content/shell/browser/shell.h"
-
-#include "base/command_line.h"
-#include "base/strings/utf_string_conversions.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/browser/web_contents_view.h"
-#include "ui/aura/env.h"
-#include "ui/aura/root_window.h"
-#include "ui/aura/window.h"
-#include "ui/base/accessibility/accessibility_types.h"
-#include "ui/base/clipboard/clipboard.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/events/event.h"
-#include "ui/gfx/screen.h"
-#include "ui/views/controls/button/label_button.h"
-#include "ui/views/controls/textfield/textfield.h"
-#include "ui/views/controls/textfield/textfield_controller.h"
-#include "ui/views/controls/webview/webview.h"
-#include "ui/views/layout/fill_layout.h"
-#include "ui/views/layout/grid_layout.h"
-#include "ui/views/test/desktop_test_views_delegate.h"
-#include "ui/views/view.h"
-#include "ui/views/widget/desktop_aura/desktop_screen.h"
-#include "ui/views/widget/widget.h"
-#include "ui/views/widget/widget_delegate.h"
-
-#if defined(OS_CHROMEOS)
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "ui/aura/test/test_screen.h"
-#include "ui/shell/minimal_shell.h"
-#endif
-
-#if defined(OS_WIN)
-#include <fcntl.h>
-#include <io.h>
-#endif
-
-namespace content {
-
-namespace {
-// ViewDelegate implementation for aura content shell
-class ShellViewsDelegateAura : public views::DesktopTestViewsDelegate {
- public:
- ShellViewsDelegateAura() : use_transparent_windows_(false) {
- }
-
- virtual ~ShellViewsDelegateAura() {
- }
-
- void SetUseTransparentWindows(bool transparent) {
- use_transparent_windows_ = transparent;
- }
-
- // Overridden from views::TestViewsDelegate:
- virtual bool UseTransparentWindows() const OVERRIDE {
- return use_transparent_windows_;
- }
-
- private:
- bool use_transparent_windows_;
-
- DISALLOW_COPY_AND_ASSIGN(ShellViewsDelegateAura);
-};
-
-// Maintain the UI controls and web view for content shell
-class ShellWindowDelegateView : public views::WidgetDelegateView,
- public views::TextfieldController,
- public views::ButtonListener {
- public:
- enum UIControl {
- BACK_BUTTON,
- FORWARD_BUTTON,
- STOP_BUTTON
- };
-
- ShellWindowDelegateView(Shell* shell)
- : shell_(shell),
- toolbar_view_(new View),
- contents_view_(new View) {
- }
- virtual ~ShellWindowDelegateView() {}
-
- // Update the state of UI controls
- void SetAddressBarURL(const GURL& url) {
- url_entry_->SetText(ASCIIToUTF16(url.spec()));
- }
- void SetWebContents(WebContents* web_contents) {
- contents_view_->SetLayoutManager(new views::FillLayout());
- web_view_ = new views::WebView(web_contents->GetBrowserContext());
- web_view_->SetWebContents(web_contents);
- web_contents->GetView()->Focus();
- contents_view_->AddChildView(web_view_);
- Layout();
- }
- void SetWindowTitle(const string16& title) { title_ = title; }
- void EnableUIControl(UIControl control, bool is_enabled) {
- if (control == BACK_BUTTON) {
- back_button_->SetState(is_enabled ? views::CustomButton::STATE_NORMAL
- : views::CustomButton::STATE_DISABLED);
- } else if (control == FORWARD_BUTTON) {
- forward_button_->SetState(is_enabled ? views::CustomButton::STATE_NORMAL
- : views::CustomButton::STATE_DISABLED);
- } else if (control == STOP_BUTTON) {
- stop_button_->SetState(is_enabled ? views::CustomButton::STATE_NORMAL
- : views::CustomButton::STATE_DISABLED);
- }
- }
-
- private:
- // Initialize the UI control contained in shell window
- void InitShellWindow() {
- set_background(views::Background::CreateStandardPanelBackground());
-
- views::GridLayout* layout = new views::GridLayout(this);
- SetLayoutManager(layout);
-
- views::ColumnSet* column_set = layout->AddColumnSet(0);
- column_set->AddPaddingColumn(0, 2);
- column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
- views::GridLayout::USE_PREF, 0, 0);
- column_set->AddPaddingColumn(0, 2);
-
- layout->AddPaddingRow(0, 2);
-
- // Add toolbar buttons and URL text field
- {
- layout->StartRow(0, 0);
- views::GridLayout* toolbar_layout = new views::GridLayout(toolbar_view_);
- toolbar_view_->SetLayoutManager(toolbar_layout);
-
- views::ColumnSet* toolbar_column_set =
- toolbar_layout->AddColumnSet(0);
- // Back button
- back_button_ = new views::LabelButton(this, ASCIIToUTF16("Back"));
- back_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
- gfx::Size back_button_size = back_button_->GetPreferredSize();
- toolbar_column_set->AddColumn(views::GridLayout::CENTER,
- views::GridLayout::CENTER, 0,
- views::GridLayout::FIXED,
- back_button_size.width(),
- back_button_size.width() / 2);
- // Forward button
- forward_button_ = new views::LabelButton(this, ASCIIToUTF16("Forward"));
- forward_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
- gfx::Size forward_button_size = forward_button_->GetPreferredSize();
- toolbar_column_set->AddColumn(views::GridLayout::CENTER,
- views::GridLayout::CENTER, 0,
- views::GridLayout::FIXED,
- forward_button_size.width(),
- forward_button_size.width() / 2);
- // Refresh button
- refresh_button_ = new views::LabelButton(this, ASCIIToUTF16("Refresh"));
- refresh_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
- gfx::Size refresh_button_size = refresh_button_->GetPreferredSize();
- toolbar_column_set->AddColumn(views::GridLayout::CENTER,
- views::GridLayout::CENTER, 0,
- views::GridLayout::FIXED,
- refresh_button_size.width(),
- refresh_button_size.width() / 2);
- // Stop button
- stop_button_ = new views::LabelButton(this, ASCIIToUTF16("Stop"));
- stop_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
- gfx::Size stop_button_size = stop_button_->GetPreferredSize();
- toolbar_column_set->AddColumn(views::GridLayout::CENTER,
- views::GridLayout::CENTER, 0,
- views::GridLayout::FIXED,
- stop_button_size.width(),
- stop_button_size.width() / 2);
- toolbar_column_set->AddPaddingColumn(0, 2);
- // URL entry
- url_entry_ = new views::Textfield();
- url_entry_->SetController(this);
- toolbar_column_set->AddColumn(views::GridLayout::FILL,
- views::GridLayout::FILL, 1,
- views::GridLayout::USE_PREF, 0, 0);
-
- // Fill up the first row
- toolbar_layout->StartRow(0, 0);
- toolbar_layout->AddView(back_button_);
- toolbar_layout->AddView(forward_button_);
- toolbar_layout->AddView(refresh_button_);
- toolbar_layout->AddView(stop_button_);
- toolbar_layout->AddView(url_entry_);
-
- layout->AddView(toolbar_view_);
- }
-
- layout->AddPaddingRow(0, 5);
-
- // Add web contents view as the second row
- {
- layout->StartRow(1, 0);
- layout->AddView(contents_view_);
- }
-
- layout->AddPaddingRow(0, 5);
- }
- // Overridden from TextfieldController
- virtual void ContentsChanged(views::Textfield* sender,
- const string16& new_contents) OVERRIDE {
- }
- virtual bool HandleKeyEvent(views::Textfield* sender,
- const ui::KeyEvent& key_event) OVERRIDE {
- if (sender == url_entry_ && key_event.key_code() == ui::VKEY_RETURN) {
- std::string text = UTF16ToUTF8(url_entry_->text());
- GURL url(text);
- if (!url.has_scheme()) {
- url = GURL(std::string("http://") + std::string(text));
- url_entry_->SetText(ASCIIToUTF16(url.spec()));
- }
- shell_->LoadURL(url);
- return true;
- }
- return false;
- }
-
- // Overridden from ButtonListener
- virtual void ButtonPressed(views::Button* sender,
- const ui::Event& event) OVERRIDE {
- if (sender == back_button_)
- shell_->GoBackOrForward(-1);
- else if (sender == forward_button_)
- shell_->GoBackOrForward(1);
- else if (sender == refresh_button_)
- shell_->Reload();
- else if (sender == stop_button_)
- shell_->Stop();
- }
-
- // Overridden from WidgetDelegateView
- virtual bool CanResize() const OVERRIDE { return true; }
- virtual bool CanMaximize() const OVERRIDE { return true; }
- virtual string16 GetWindowTitle() const OVERRIDE {
- return title_;
- }
- virtual void WindowClosing() OVERRIDE {
- if (shell_) {
- delete shell_;
- shell_ = NULL;
- }
- }
- virtual View* GetContentsView() OVERRIDE { return this; }
-
- // Overridden from View
- virtual void ViewHierarchyChanged(
- const ViewHierarchyChangedDetails& details) OVERRIDE {
- if (details.is_add && details.child == this) {
- InitShellWindow();
- }
- }
-
- private:
- // Hold a reference of Shell for deleting it when the window is closing
- Shell* shell_;
-
- // Window title
- string16 title_;
-
- // Toolbar view contains forward/backward/reload button and URL entry
- View* toolbar_view_;
- views::LabelButton* back_button_;
- views::LabelButton* forward_button_;
- views::LabelButton* refresh_button_;
- views::LabelButton* stop_button_;
- views::Textfield* url_entry_;
-
- // Contents view contains the web contents view
- View* contents_view_;
- views::WebView* web_view_;
-
- DISALLOW_COPY_AND_ASSIGN(ShellWindowDelegateView);
-};
-
-} // namespace
-
-#if defined(OS_CHROMEOS)
-shell::MinimalShell* Shell::minimal_shell_ = NULL;
-#endif
-views::ViewsDelegate* Shell::views_delegate_ = NULL;
-
-// static
-void Shell::PlatformInitialize(const gfx::Size& default_window_size) {
-#if defined(OS_WIN)
- _setmode(_fileno(stdout), _O_BINARY);
- _setmode(_fileno(stderr), _O_BINARY);
-#endif
-#if defined(OS_CHROMEOS)
- chromeos::DBusThreadManager::Initialize();
- gfx::Screen::SetScreenInstance(
- gfx::SCREEN_TYPE_NATIVE, aura::TestScreen::Create());
- minimal_shell_ = new shell::MinimalShell(default_window_size);
-#else
- gfx::Screen::SetScreenInstance(
- gfx::SCREEN_TYPE_NATIVE, views::CreateDesktopScreen());
-#endif
- views_delegate_ = new ShellViewsDelegateAura();
-}
-
-void Shell::PlatformExit() {
- std::vector<Shell*> windows = windows_;
- for (std::vector<Shell*>::iterator it = windows.begin();
- it != windows.end(); ++it) {
- (*it)->window_widget_->Close();
- }
-#if defined(OS_CHROMEOS)
- if (minimal_shell_)
- delete minimal_shell_;
-#endif
- if (views_delegate_)
- delete views_delegate_;
-#if defined(OS_CHROMEOS)
- chromeos::DBusThreadManager::Shutdown();
-#endif
- aura::Env::DeleteInstance();
-}
-
-void Shell::PlatformCleanUp() {
-}
-
-void Shell::PlatformEnableUIControl(UIControl control, bool is_enabled) {
- ShellWindowDelegateView* delegate_view =
- static_cast<ShellWindowDelegateView*>(window_widget_->widget_delegate());
- if (control == BACK_BUTTON) {
- delegate_view->EnableUIControl(ShellWindowDelegateView::BACK_BUTTON,
- is_enabled);
- } else if (control == FORWARD_BUTTON) {
- delegate_view->EnableUIControl(ShellWindowDelegateView::FORWARD_BUTTON,
- is_enabled);
- } else if (control == STOP_BUTTON) {
- delegate_view->EnableUIControl(ShellWindowDelegateView::STOP_BUTTON,
- is_enabled);
- }
-}
-
-void Shell::PlatformSetAddressBarURL(const GURL& url) {
- ShellWindowDelegateView* delegate_view =
- static_cast<ShellWindowDelegateView*>(window_widget_->widget_delegate());
- delegate_view->SetAddressBarURL(url);
-}
-
-void Shell::PlatformSetIsLoading(bool loading) {
-}
-
-void Shell::PlatformCreateWindow(int width, int height) {
-#if defined(OS_CHROMEOS)
- window_widget_ =
- views::Widget::CreateWindowWithContextAndBounds(
- new ShellWindowDelegateView(this),
- minimal_shell_->GetDefaultParent(NULL, NULL, gfx::Rect()),
- gfx::Rect(0, 0, width, height));
-#else
- window_widget_ =
- views::Widget::CreateWindowWithBounds(new ShellWindowDelegateView(this),
- gfx::Rect(0, 0, width, height));
-#endif
-
- window_ = window_widget_->GetNativeWindow();
- // Call ShowRootWindow on RootWindow created by MinimalShell without
- // which XWindow owned by RootWindow doesn't get mapped.
- window_->GetRootWindow()->ShowRootWindow();
- window_widget_->Show();
-}
-
-void Shell::PlatformSetContents() {
- ShellWindowDelegateView* delegate_view =
- static_cast<ShellWindowDelegateView*>(window_widget_->widget_delegate());
- delegate_view->SetWebContents(web_contents_.get());
-}
-
-void Shell::PlatformResizeSubViews() {
-}
-
-void Shell::Close() {
- window_widget_->CloseNow();
-}
-
-void Shell::PlatformSetTitle(const string16& title) {
- ShellWindowDelegateView* delegate_view =
- static_cast<ShellWindowDelegateView*>(window_widget_->widget_delegate());
- delegate_view->SetWindowTitle(title);
- window_widget_->UpdateWindowTitle();
-}
-
-} // namespace content
« no previous file with comments | « trunk/src/content/shell/browser/shell_aura.cc ('k') | trunk/src/ui/events/events.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698