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

Unified Diff: services/ui/display/platform_screen_impl_ozone.cc

Issue 2317073003: Rename PlatformScreen implementations. (Closed)
Patch Set: Fix tests. Created 4 years, 3 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/display/platform_screen_impl_ozone.h ('k') | services/ui/display/platform_screen_ozone.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/display/platform_screen_impl_ozone.cc
diff --git a/services/ui/display/platform_screen_impl_ozone.cc b/services/ui/display/platform_screen_impl_ozone.cc
deleted file mode 100644
index 1d99227188905998e8921627833c81cfa6502bb7..0000000000000000000000000000000000000000
--- a/services/ui/display/platform_screen_impl_ozone.cc
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2016 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 "services/ui/display/platform_screen_impl_ozone.h"
-
-#include <memory>
-
-#include "base/command_line.h"
-#include "base/memory/ptr_util.h"
-#include "base/sys_info.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "third_party/skia/include/core/SkColor.h"
-#include "ui/display/types/display_constants.h"
-#include "ui/display/types/display_snapshot.h"
-#include "ui/display/types/native_display_delegate.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/ozone/public/ozone_platform.h"
-
-namespace display {
-namespace {
-
-// Needed for DisplayConfigurator::ForceInitialConfigure.
-const SkColor kChromeOsBootColor = SkColorSetRGB(0xfe, 0xfe, 0xfe);
-
-} // namespace
-
-// static
-std::unique_ptr<PlatformScreen> PlatformScreen::Create() {
- return base::MakeUnique<PlatformScreenImplOzone>();
-}
-
-PlatformScreenImplOzone::PlatformScreenImplOzone() {}
-
-PlatformScreenImplOzone::~PlatformScreenImplOzone() {
- display_configurator_.RemoveObserver(this);
-}
-
-void PlatformScreenImplOzone::Init(PlatformScreenDelegate* delegate) {
- DCHECK(delegate);
- delegate_ = delegate;
-
- // We want display configuration to happen even off device to keep the control
- // flow similar.
- display_configurator_.set_configure_display(true);
- display_configurator_.AddObserver(this);
- display_configurator_.Init(
- ui::OzonePlatform::GetInstance()->CreateNativeDisplayDelegate(), false);
-
- if (base::SysInfo::IsRunningOnChromeOS()) {
- display_configurator_.ForceInitialConfigure(kChromeOsBootColor);
- } else {
- if (base::CommandLine::ForCurrentProcess()->HasSwitch("multi-display")) {
- // This really doesn't work properly. Use at your own risk.
- display_configurator_.AddVirtualDisplay(gfx::Size(800, 800));
- display_configurator_.AddVirtualDisplay(gfx::Size(800, 800));
- } else {
- display_configurator_.AddVirtualDisplay(gfx::Size(1024, 768));
- }
- }
-}
-
-int64_t PlatformScreenImplOzone::GetPrimaryDisplayId() const {
- return primary_display_id_;
-}
-
-void PlatformScreenImplOzone::ProcessRemovedDisplays(
- const ui::DisplayConfigurator::DisplayStateList& snapshots) {
- std::vector<int64_t> current_ids;
- for (ui::DisplaySnapshot* snapshot : snapshots)
- current_ids.push_back(snapshot->display_id());
-
- // Find cached displays with no matching snapshot and mark as removed.
- for (DisplayInfo& display : cached_displays_) {
- if (std::find(current_ids.begin(), current_ids.end(), display.id) ==
- current_ids.end()) {
- display.removed = true;
- if (primary_display_id_ == display.id)
- primary_display_id_ = display::Display::kInvalidDisplayID;
- }
- }
-
- // If the primary display was removed find a new primary display id.
- if (primary_display_id_ == display::Display::kInvalidDisplayID) {
- for (const DisplayInfo& display : cached_displays_) {
- if (!display.removed) {
- primary_display_id_ = display.id;
- break;
- }
- }
- }
-}
-
-void PlatformScreenImplOzone::ProcessModifiedDisplays(
- const ui::DisplayConfigurator::DisplayStateList& snapshots) {
- for (ui::DisplaySnapshot* snapshot : snapshots) {
- auto iter = GetCachedDisplayIterator(snapshot->display_id());
- if (iter != cached_displays_.end()) {
- DisplayInfo& display_info = *iter;
- const ui::DisplayMode* current_mode = snapshot->current_mode();
- if (current_mode->size() != display_info.bounds.size()) {
- display_info.bounds.set_size(current_mode->size());
- display_info.modified = true;
- }
- }
- }
-}
-
-void PlatformScreenImplOzone::UpdateCachedDisplays() {
- // Walk through cached displays after processing the snapshots to find any
- // removed or modified displays. This ensures that we only send one update per
- // display to the delegate.
- next_display_origin_.SetPoint(0, 0);
- for (auto iter = cached_displays_.begin(); iter != cached_displays_.end();) {
- DisplayInfo& display_info = *iter;
- if (display_info.removed) {
- // Update delegate and remove from cache.
- delegate_->OnDisplayRemoved(display_info.id);
- iter = cached_displays_.erase(iter);
- } else {
- // Check if the display origin needs to be updated.
- if (next_display_origin_ != display_info.bounds.origin()) {
- display_info.bounds.set_origin(next_display_origin_);
- display_info.modified = true;
- }
- next_display_origin_.Offset(display_info.bounds.width(), 0);
-
- // Check if the window bounds have changed and update delegate.
- if (display_info.modified) {
- display_info.modified = false;
- delegate_->OnDisplayModified(display_info.id, display_info.bounds);
- }
- ++iter;
- }
- }
-}
-
-void PlatformScreenImplOzone::AddNewDisplays(
- const ui::DisplayConfigurator::DisplayStateList& snapshots) {
- for (ui::DisplaySnapshot* snapshot : snapshots) {
- const int64_t id = snapshot->display_id();
-
- // Check if display already exists and skip.
- if (GetCachedDisplayIterator(id) != cached_displays_.end())
- continue;
-
- const ui::DisplayMode* current_mode = snapshot->current_mode();
- gfx::Rect bounds(next_display_origin_, current_mode->size());
-
- // Move the origin so that next display is to the right of current display.
- next_display_origin_.Offset(current_mode->size().width(), 0);
-
- // If we have no primary display then this one should be it.
- if (primary_display_id_ == display::Display::kInvalidDisplayID)
- primary_display_id_ = id;
-
- cached_displays_.push_back(DisplayInfo(id, bounds));
- delegate_->OnDisplayAdded(this, id, bounds);
- }
-}
-
-PlatformScreenImplOzone::CachedDisplayIterator
-PlatformScreenImplOzone::GetCachedDisplayIterator(int64_t display_id) {
- return std::find_if(cached_displays_.begin(), cached_displays_.end(),
- [display_id](const DisplayInfo& display_info) {
- return display_info.id == display_id;
- });
-}
-
-void PlatformScreenImplOzone::OnDisplayModeChanged(
- const ui::DisplayConfigurator::DisplayStateList& displays) {
- ProcessRemovedDisplays(displays);
- ProcessModifiedDisplays(displays);
- UpdateCachedDisplays();
- AddNewDisplays(displays);
-}
-
-void PlatformScreenImplOzone::OnDisplayModeChangeFailed(
- const ui::DisplayConfigurator::DisplayStateList& displays,
- ui::MultipleDisplayState failed_new_state) {
- LOG(ERROR) << "OnDisplayModeChangeFailed from DisplayConfigurator";
-}
-
-} // namespace display
« no previous file with comments | « services/ui/display/platform_screen_impl_ozone.h ('k') | services/ui/display/platform_screen_ozone.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698