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

Unified Diff: services/ui/ws/platform_display_default.cc

Issue 2736943003: Start to decouple display::Display from ws::PlatformDisplay. (Closed)
Patch Set: Fix comments. Created 3 years, 9 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 | « services/ui/ws/platform_display_default.h ('k') | services/ui/ws/platform_display_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/ws/platform_display_default.cc
diff --git a/services/ui/ws/platform_display_default.cc b/services/ui/ws/platform_display_default.cc
index fcf12c853046d4579c6ae26f006745c4f0c2dd8e..43fed49ee090ad7ddb617469dd9123fafc337aa7 100644
--- a/services/ui/ws/platform_display_default.cc
+++ b/services/ui/ws/platform_display_default.cc
@@ -8,7 +8,6 @@
#include "gpu/ipc/client/gpu_channel_host.h"
#include "services/ui/display/screen_manager.h"
#include "services/ui/ws/display_client_compositor_frame_sink.h"
-#include "services/ui/ws/platform_display_init_params.h"
#include "services/ui/ws/server_window.h"
#include "ui/base/cursor/image_cursors.h"
#include "ui/display/display.h"
@@ -31,15 +30,15 @@ namespace ui {
namespace ws {
PlatformDisplayDefault::PlatformDisplayDefault(
- const PlatformDisplayInitParams& init_params)
- : display_id_(init_params.display_id),
+ ServerWindow* root_window,
+ const display::ViewportMetrics& metrics)
+ : root_window_(root_window),
#if !defined(OS_ANDROID)
image_cursors_(new ImageCursors),
#endif
- metrics_(init_params.metrics),
+ metrics_(metrics),
widget_(gfx::kNullAcceleratedWidget),
- root_window_(init_params.root_window),
- init_device_scale_factor_(init_params.metrics.device_scale_factor) {
+ init_device_scale_factor_(metrics.device_scale_factor) {
}
PlatformDisplayDefault::~PlatformDisplayDefault() {
@@ -56,11 +55,9 @@ PlatformDisplayDefault::~PlatformDisplayDefault() {
void PlatformDisplayDefault::Init(PlatformDisplayDelegate* delegate) {
delegate_ = delegate;
- DCHECK(!metrics_.pixel_size.IsEmpty());
+ const gfx::Rect& bounds = metrics_.bounds_in_pixels;
+ DCHECK(!bounds.size().IsEmpty());
- // TODO(kylechar): The origin here isn't right if any displays have
- // scale_factor other than 1.0 but will prevent windows from being stacked.
- gfx::Rect bounds(metrics_.bounds.origin(), metrics_.pixel_size);
#if defined(OS_WIN)
platform_window_ = base::MakeUnique<ui::WinWindow>(this, bounds);
#elif defined(USE_X11) && !defined(OS_CHROMEOS)
@@ -82,10 +79,6 @@ void PlatformDisplayDefault::Init(PlatformDisplayDelegate* delegate) {
#endif
}
-int64_t PlatformDisplayDefault::GetId() const {
- return display_id_;
-}
-
void PlatformDisplayDefault::SetViewportSize(const gfx::Size& size) {
platform_window_->SetBounds(gfx::Rect(size));
}
@@ -128,10 +121,6 @@ void PlatformDisplayDefault::SetImeVisibility(bool visible) {
ime->SetImeVisibility(visible);
}
-gfx::Rect PlatformDisplayDefault::GetBounds() const {
- return metrics_.bounds;
-}
-
FrameGenerator* PlatformDisplayDefault::GetFrameGenerator() {
return frame_generator_.get();
}
@@ -142,8 +131,8 @@ bool PlatformDisplayDefault::UpdateViewportMetrics(
return false;
gfx::Rect bounds = platform_window_->GetBounds();
- if (bounds.size() != metrics.pixel_size) {
- bounds.set_size(metrics.pixel_size);
+ if (bounds.size() != metrics.bounds_in_pixels.size()) {
+ bounds.set_size(metrics.bounds_in_pixels.size());
platform_window_->SetBounds(bounds);
}
@@ -153,29 +142,26 @@ bool PlatformDisplayDefault::UpdateViewportMetrics(
return true;
}
-const display::ViewportMetrics& PlatformDisplayDefault::GetViewportMetrics()
- const {
- return metrics_;
-}
-
gfx::AcceleratedWidget PlatformDisplayDefault::GetAcceleratedWidget() const {
return widget_;
}
void PlatformDisplayDefault::UpdateEventRootLocation(ui::LocatedEvent* event) {
+ // TODO(riajiang): This is broken for HDPI because it mixes PPs and DIPs. See
+ // http://crbug.com/701036 for details.
+ const display::Display& display = delegate_->GetDisplay();
gfx::Point location = event->location();
- location.Offset(metrics_.bounds.x(), metrics_.bounds.y());
+ location.Offset(display.bounds().x(), display.bounds().y());
event->set_root_location(location);
}
void PlatformDisplayDefault::OnBoundsChanged(const gfx::Rect& new_bounds) {
// We only care if the window size has changed.
- if (new_bounds.size() == metrics_.pixel_size)
+ if (new_bounds.size() == metrics_.bounds_in_pixels.size())
return;
- // TODO(kylechar): Maybe do something here. For CrOS we don't need to support
- // PlatformWindow initiated resizes. For other platforms we need to do
- // something but that isn't fully flushed out.
+ // TODO(tonikitoo): Handle the bounds changing in external window mode. The
+ // window should be resized by the WS and it shouldn't involve ScreenManager.
}
void PlatformDisplayDefault::OnDamageRect(const gfx::Rect& damaged_region) {
@@ -228,7 +214,10 @@ void PlatformDisplayDefault::DispatchEvent(ui::Event* event) {
}
void PlatformDisplayDefault::OnCloseRequest() {
- display::ScreenManager::GetInstance()->RequestCloseDisplay(GetId());
+ // TODO(tonikitoo): Handle a close request in external window mode. The window
+ // should be closed by the WS and it shouldn't involve ScreenManager.
+ const int64_t display_id = delegate_->GetDisplay().id();
+ display::ScreenManager::GetInstance()->RequestCloseDisplay(display_id);
}
void PlatformDisplayDefault::OnClosed() {}
« no previous file with comments | « services/ui/ws/platform_display_default.h ('k') | services/ui/ws/platform_display_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698