| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "mandoline/ui/desktop_ui/browser_window.h" | 5 #include "mandoline/ui/desktop_ui/browser_window.h" | 
| 6 | 6 | 
| 7 #include <stdint.h> | 7 #include <stdint.h> | 
| 8 | 8 | 
| 9 #include <utility> | 9 #include <utility> | 
| 10 | 10 | 
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" | 
| 12 #include "base/macros.h" | 12 #include "base/macros.h" | 
| 13 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" | 
| 14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" | 
| 15 #include "base/time/time.h" | 15 #include "base/time/time.h" | 
| 16 #include "base/trace_event/trace_event.h" | 16 #include "base/trace_event/trace_event.h" | 
| 17 #include "components/mus/public/cpp/event_matcher.h" | 17 #include "components/mus/public/cpp/event_matcher.h" | 
| 18 #include "components/mus/public/cpp/scoped_window_ptr.h" | 18 #include "components/mus/public/cpp/scoped_window_ptr.h" | 
| 19 #include "components/mus/public/cpp/window_tree_host_factory.h" | 19 #include "components/mus/public/cpp/window_tree_host_factory.h" | 
| 20 #include "mandoline/ui/desktop_ui/browser_commands.h" | 20 #include "mandoline/ui/desktop_ui/browser_commands.h" | 
| 21 #include "mandoline/ui/desktop_ui/browser_manager.h" | 21 #include "mandoline/ui/desktop_ui/browser_manager.h" | 
| 22 #include "mandoline/ui/desktop_ui/find_bar_view.h" | 22 #include "mandoline/ui/desktop_ui/find_bar_view.h" | 
| 23 #include "mandoline/ui/desktop_ui/public/interfaces/omnibox.mojom.h" | 23 #include "mandoline/ui/desktop_ui/public/interfaces/omnibox.mojom.h" | 
| 24 #include "mandoline/ui/desktop_ui/toolbar_view.h" | 24 #include "mandoline/ui/desktop_ui/toolbar_view.h" | 
| 25 #include "mojo/common/common_type_converters.h" | 25 #include "mojo/common/common_type_converters.h" | 
| 26 #include "mojo/converters/geometry/geometry_type_converters.h" | 26 #include "mojo/converters/geometry/geometry_type_converters.h" | 
| 27 #include "mojo/services/tracing/public/cpp/switches.h" | 27 #include "mojo/services/tracing/public/cpp/switches.h" | 
| 28 #include "mojo/services/tracing/public/interfaces/tracing.mojom.h" | 28 #include "mojo/services/tracing/public/interfaces/tracing.mojom.h" | 
|  | 29 #include "mojo/shell/public/cpp/shell.h" | 
| 29 #include "ui/gfx/canvas.h" | 30 #include "ui/gfx/canvas.h" | 
| 30 #include "ui/mojo/init/ui_init.h" | 31 #include "ui/mojo/init/ui_init.h" | 
| 31 #include "ui/views/background.h" | 32 #include "ui/views/background.h" | 
| 32 #include "ui/views/controls/button/label_button.h" | 33 #include "ui/views/controls/button/label_button.h" | 
| 33 #include "ui/views/layout/layout_manager.h" | 34 #include "ui/views/layout/layout_manager.h" | 
| 34 #include "ui/views/mus/aura_init.h" | 35 #include "ui/views/mus/aura_init.h" | 
| 35 #include "ui/views/mus/display_converter.h" | 36 #include "ui/views/mus/display_converter.h" | 
| 36 #include "ui/views/mus/native_widget_mus.h" | 37 #include "ui/views/mus/native_widget_mus.h" | 
| 37 #include "ui/views/widget/widget_delegate.h" | 38 #include "ui/views/widget/widget_delegate.h" | 
| 38 | 39 | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 97   } | 98   } | 
| 98 | 99 | 
| 99   BrowserWindow* window_; | 100   BrowserWindow* window_; | 
| 100 | 101 | 
| 101   DISALLOW_COPY_AND_ASSIGN(LayoutManagerImpl); | 102   DISALLOW_COPY_AND_ASSIGN(LayoutManagerImpl); | 
| 102 }; | 103 }; | 
| 103 | 104 | 
| 104 //////////////////////////////////////////////////////////////////////////////// | 105 //////////////////////////////////////////////////////////////////////////////// | 
| 105 // BrowserWindow, public: | 106 // BrowserWindow, public: | 
| 106 | 107 | 
| 107 BrowserWindow::BrowserWindow(mojo::ApplicationImpl* app, | 108 BrowserWindow::BrowserWindow(mojo::Shell* shell, | 
| 108                              mus::mojom::WindowTreeHostFactory* host_factory, | 109                              mus::mojom::WindowTreeHostFactory* host_factory, | 
| 109                              BrowserManager* manager) | 110                              BrowserManager* manager) | 
| 110     : app_(app), | 111     : shell_(shell), | 
| 111       window_manager_client_(nullptr), | 112       window_manager_client_(nullptr), | 
| 112       manager_(manager), | 113       manager_(manager), | 
| 113       toolbar_view_(nullptr), | 114       toolbar_view_(nullptr), | 
| 114       progress_bar_(nullptr), | 115       progress_bar_(nullptr), | 
| 115       find_bar_view_(nullptr), | 116       find_bar_view_(nullptr), | 
| 116       root_(nullptr), | 117       root_(nullptr), | 
| 117       content_(nullptr), | 118       content_(nullptr), | 
| 118       omnibox_view_(nullptr), | 119       omnibox_view_(nullptr), | 
| 119       find_active_(0), | 120       find_active_(0), | 
| 120       find_count_(0), | 121       find_count_(0), | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 143 void BrowserWindow::Close() { | 144 void BrowserWindow::Close() { | 
| 144   if (root_) | 145   if (root_) | 
| 145     mus::ScopedWindowPtr::DeleteWindowOrWindowManager(root_); | 146     mus::ScopedWindowPtr::DeleteWindowOrWindowManager(root_); | 
| 146   else | 147   else | 
| 147     delete this; | 148     delete this; | 
| 148 } | 149 } | 
| 149 | 150 | 
| 150 void BrowserWindow::ShowOmnibox() { | 151 void BrowserWindow::ShowOmnibox() { | 
| 151   TRACE_EVENT0("desktop_ui", "BrowserWindow::ShowOmnibox"); | 152   TRACE_EVENT0("desktop_ui", "BrowserWindow::ShowOmnibox"); | 
| 152   if (!omnibox_.get()) { | 153   if (!omnibox_.get()) { | 
| 153     omnibox_connection_ = app_->ConnectToApplication("mojo:omnibox"); | 154     omnibox_connection_ = shell_->ConnectToApplication("mojo:omnibox"); | 
| 154     omnibox_connection_->AddService<ViewEmbedder>(this); | 155     omnibox_connection_->AddService<ViewEmbedder>(this); | 
| 155     omnibox_connection_->ConnectToService(&omnibox_); | 156     omnibox_connection_->ConnectToService(&omnibox_); | 
| 156     omnibox_connection_->SetRemoteServiceProviderConnectionErrorHandler( | 157     omnibox_connection_->SetRemoteServiceProviderConnectionErrorHandler( | 
| 157       [this]() { | 158       [this]() { | 
| 158         // This will cause the connection to be re-established the next time | 159         // This will cause the connection to be re-established the next time | 
| 159         // we come through this codepath. | 160         // we come through this codepath. | 
| 160         omnibox_.reset(); | 161         omnibox_.reset(); | 
| 161     }); | 162     }); | 
| 162   } | 163   } | 
| 163   omnibox_->ShowForURL(mojo::String::From(current_url_.spec())); | 164   omnibox_->ShowForURL(mojo::String::From(current_url_.spec())); | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 205 | 206 | 
| 206   content_ = root_->connection()->NewWindow(); | 207   content_ = root_->connection()->NewWindow(); | 
| 207   Init(root_); | 208   Init(root_); | 
| 208 | 209 | 
| 209   host_->SetSize(mojo::Size::From(gfx::Size(1280, 800))); | 210   host_->SetSize(mojo::Size::From(gfx::Size(1280, 800))); | 
| 210 | 211 | 
| 211   root_->AddChild(content_); | 212   root_->AddChild(content_); | 
| 212   window_manager_client_->AddActivationParent(root_); | 213   window_manager_client_->AddActivationParent(root_); | 
| 213   content_->SetVisible(true); | 214   content_->SetVisible(true); | 
| 214 | 215 | 
| 215   web_view_.Init(app_, content_); | 216   web_view_.Init(shell_, content_); | 
| 216 | 217 | 
| 217   const base::Callback<void(bool)> add_accelerator_callback = | 218   const base::Callback<void(bool)> add_accelerator_callback = | 
| 218       base::Bind(&OnAcceleratorAdded); | 219       base::Bind(&OnAcceleratorAdded); | 
| 219   DCHECK(window_manager_client_); | 220   DCHECK(window_manager_client_); | 
| 220   window_manager_client_->AddAccelerator( | 221   window_manager_client_->AddAccelerator( | 
| 221       static_cast<uint32_t>(BrowserCommand::CLOSE), | 222       static_cast<uint32_t>(BrowserCommand::CLOSE), | 
| 222       mus::CreateKeyMatcher(mus::mojom::KeyboardCode::W, | 223       mus::CreateKeyMatcher(mus::mojom::KeyboardCode::W, | 
| 223                             mus::mojom::kEventFlagControlDown), | 224                             mus::mojom::kEventFlagControlDown), | 
| 224       add_accelerator_callback); | 225       add_accelerator_callback); | 
| 225   window_manager_client_->AddAccelerator( | 226   window_manager_client_->AddAccelerator( | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 254   // Record the time spent opening initial tabs, used for performance testing. | 255   // Record the time spent opening initial tabs, used for performance testing. | 
| 255   const base::TimeDelta open_tabs_delta = | 256   const base::TimeDelta open_tabs_delta = | 
| 256       base::TimeTicks::Now() - display_ticks; | 257       base::TimeTicks::Now() - display_ticks; | 
| 257 | 258 | 
| 258   // Record the browser startup time metrics, used for performance testing. | 259   // Record the browser startup time metrics, used for performance testing. | 
| 259   static bool recorded_browser_startup_metrics = false; | 260   static bool recorded_browser_startup_metrics = false; | 
| 260   if (!recorded_browser_startup_metrics && | 261   if (!recorded_browser_startup_metrics && | 
| 261       base::CommandLine::ForCurrentProcess()->HasSwitch( | 262       base::CommandLine::ForCurrentProcess()->HasSwitch( | 
| 262           tracing::kEnableStatsCollectionBindings)) { | 263           tracing::kEnableStatsCollectionBindings)) { | 
| 263     tracing::StartupPerformanceDataCollectorPtr collector; | 264     tracing::StartupPerformanceDataCollectorPtr collector; | 
| 264     app_->ConnectToService("mojo:tracing", &collector); | 265     shell_->ConnectToService("mojo:tracing", &collector); | 
| 265     collector->SetBrowserWindowDisplayTicks(display_ticks.ToInternalValue()); | 266     collector->SetBrowserWindowDisplayTicks(display_ticks.ToInternalValue()); | 
| 266     collector->SetBrowserOpenTabsTimeDelta(open_tabs_delta.ToInternalValue()); | 267     collector->SetBrowserOpenTabsTimeDelta(open_tabs_delta.ToInternalValue()); | 
| 267     collector->SetBrowserMessageLoopStartTicks( | 268     collector->SetBrowserMessageLoopStartTicks( | 
| 268         manager_->startup_ticks().ToInternalValue()); | 269         manager_->startup_ticks().ToInternalValue()); | 
| 269     recorded_browser_startup_metrics = true; | 270     recorded_browser_startup_metrics = true; | 
| 270   } | 271   } | 
| 271 } | 272 } | 
| 272 | 273 | 
| 273 void BrowserWindow::OnConnectionLost(mus::WindowTreeConnection* connection) { | 274 void BrowserWindow::OnConnectionLost(mus::WindowTreeConnection* connection) { | 
| 274   root_ = nullptr; | 275   root_ = nullptr; | 
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 408   web_view_.web_view()->StopFinding(); | 409   web_view_.web_view()->StopFinding(); | 
| 409 } | 410 } | 
| 410 | 411 | 
| 411 //////////////////////////////////////////////////////////////////////////////// | 412 //////////////////////////////////////////////////////////////////////////////// | 
| 412 // BrowserWindow, private: | 413 // BrowserWindow, private: | 
| 413 | 414 | 
| 414 void BrowserWindow::Init(mus::Window* root) { | 415 void BrowserWindow::Init(mus::Window* root) { | 
| 415   DCHECK_GT(root->viewport_metrics().device_pixel_ratio, 0); | 416   DCHECK_GT(root->viewport_metrics().device_pixel_ratio, 0); | 
| 416   if (!aura_init_) { | 417   if (!aura_init_) { | 
| 417     ui_init_.reset(new ui::mojo::UIInit(views::GetDisplaysFromWindow(root))); | 418     ui_init_.reset(new ui::mojo::UIInit(views::GetDisplaysFromWindow(root))); | 
| 418     aura_init_.reset(new views::AuraInit(app_, "mandoline_ui.pak")); | 419     aura_init_.reset(new views::AuraInit(shell_, "mandoline_ui.pak")); | 
| 419   } | 420   } | 
| 420 | 421 | 
| 421   root_ = root; | 422   root_ = root; | 
| 422   omnibox_view_ = root_->connection()->NewWindow(); | 423   omnibox_view_ = root_->connection()->NewWindow(); | 
| 423   root_->AddChild(omnibox_view_); | 424   root_->AddChild(omnibox_view_); | 
| 424 | 425 | 
| 425   views::WidgetDelegateView* widget_delegate = new views::WidgetDelegateView; | 426   views::WidgetDelegateView* widget_delegate = new views::WidgetDelegateView; | 
| 426   widget_delegate->GetContentsView()->set_background( | 427   widget_delegate->GetContentsView()->set_background( | 
| 427     views::Background::CreateSolidBackground(0xFFDDDDDD)); | 428     views::Background::CreateSolidBackground(0xFFDDDDDD)); | 
| 428   toolbar_view_ = new ToolbarView(this); | 429   toolbar_view_ = new ToolbarView(this); | 
| 429   progress_bar_ = new ProgressView; | 430   progress_bar_ = new ProgressView; | 
| 430   widget_delegate->GetContentsView()->AddChildView(toolbar_view_); | 431   widget_delegate->GetContentsView()->AddChildView(toolbar_view_); | 
| 431   widget_delegate->GetContentsView()->AddChildView(progress_bar_); | 432   widget_delegate->GetContentsView()->AddChildView(progress_bar_); | 
| 432   widget_delegate->GetContentsView()->SetLayoutManager( | 433   widget_delegate->GetContentsView()->SetLayoutManager( | 
| 433       new LayoutManagerImpl(this)); | 434       new LayoutManagerImpl(this)); | 
| 434 | 435 | 
| 435   find_bar_view_ = new FindBarView(this); | 436   find_bar_view_ = new FindBarView(this); | 
| 436   widget_delegate->GetContentsView()->AddChildView(find_bar_view_); | 437   widget_delegate->GetContentsView()->AddChildView(find_bar_view_); | 
| 437 | 438 | 
| 438   views::Widget* widget = new views::Widget; | 439   views::Widget* widget = new views::Widget; | 
| 439   views::Widget::InitParams params( | 440   views::Widget::InitParams params( | 
| 440       views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); | 441       views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); | 
| 441   params.native_widget = new views::NativeWidgetMus( | 442   params.native_widget = new views::NativeWidgetMus( | 
| 442       widget, app_->shell(), root, mus::mojom::SurfaceType::DEFAULT); | 443       widget, shell_, root, mus::mojom::SurfaceType::DEFAULT); | 
| 443   params.delegate = widget_delegate; | 444   params.delegate = widget_delegate; | 
| 444   params.bounds = root_->bounds(); | 445   params.bounds = root_->bounds(); | 
| 445   widget->Init(params); | 446   widget->Init(params); | 
| 446   widget->Show(); | 447   widget->Show(); | 
| 447   root_->SetFocus(); | 448   root_->SetFocus(); | 
| 448 } | 449 } | 
| 449 | 450 | 
| 450 void BrowserWindow::EmbedOmnibox() { | 451 void BrowserWindow::EmbedOmnibox() { | 
| 451   mus::mojom::WindowTreeClientPtr view_tree_client; | 452   mus::mojom::WindowTreeClientPtr view_tree_client; | 
| 452   omnibox_->GetWindowTreeClient(GetProxy(&view_tree_client)); | 453   omnibox_->GetWindowTreeClient(GetProxy(&view_tree_client)); | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 482   content_bounds.set_width(DIPSToPixels(progress_bar_bounds.width())); | 483   content_bounds.set_width(DIPSToPixels(progress_bar_bounds.width())); | 
| 483   content_bounds.set_height(host->bounds().height() - content_bounds.y() - | 484   content_bounds.set_height(host->bounds().height() - content_bounds.y() - | 
| 484                             DIPSToPixels(10)); | 485                             DIPSToPixels(10)); | 
| 485   content_->SetBounds(content_bounds); | 486   content_->SetBounds(content_bounds); | 
| 486 | 487 | 
| 487   // The omnibox view bounds are in physical pixels. | 488   // The omnibox view bounds are in physical pixels. | 
| 488   omnibox_view_->SetBounds(bounds_in_physical_pixels); | 489   omnibox_view_->SetBounds(bounds_in_physical_pixels); | 
| 489 } | 490 } | 
| 490 | 491 | 
| 491 }  // namespace mandoline | 492 }  // namespace mandoline | 
| OLD | NEW | 
|---|