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

Unified Diff: chrome/browser/extensions/display_info_provider_chromeos.cc

Issue 2002773002: Add overscanCalibration methods to system_display.idl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix non-chromeos + tests Created 4 years, 7 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
Index: chrome/browser/extensions/display_info_provider_chromeos.cc
diff --git a/chrome/browser/extensions/display_info_provider_chromeos.cc b/chrome/browser/extensions/display_info_provider_chromeos.cc
index 486c0d73f25ea38afbc0751a852bac303489df96..3238b428668a6f70011de89a9151c71d8934101b 100644
--- a/chrome/browser/extensions/display_info_provider_chromeos.cc
+++ b/chrome/browser/extensions/display_info_provider_chromeos.cc
@@ -12,6 +12,7 @@
#include "ash/shell.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/browser/chromeos/display/display_preferences.h"
+#include "chrome/browser/chromeos/display/overscan_calibrator.h"
#include "extensions/common/api/system_display.h"
#include "ui/display/display.h"
#include "ui/display/manager/display_layout.h"
@@ -30,6 +31,15 @@ namespace {
// Maximum allowed bounds origin absolute value.
const int kMaxBoundsOrigin = 200 * 1000;
+// Gets the display with the provided string id.
+display::Display GetDisplay(const std::string& display_id_str) {
+ int64_t display_id;
+ if (!base::StringToInt64(display_id_str, &display_id))
+ return display::Display();
+ return ash::Shell::GetInstance()->display_manager()->GetDisplayForId(
+ display_id);
+}
+
// Checks if the given integer value is valid display rotation in degrees.
bool IsValidRotationValue(int rotation) {
return rotation == 0 || rotation == 90 || rotation == 180 || rotation == 270;
@@ -195,10 +205,8 @@ bool ValidateParamsForDisplay(const DisplayProperties& info,
// If mirroring source id is set, a display with the given id should exist,
// and if should not be the same as the target display's id.
if (info.mirroring_source_id && !info.mirroring_source_id->empty()) {
- int64_t mirroring_id;
- if (!base::StringToInt64(*info.mirroring_source_id, &mirroring_id) ||
- display_manager->GetDisplayForId(mirroring_id).id() ==
- display::Display::kInvalidDisplayID) {
+ int64_t mirroring_id = GetDisplay(*info.mirroring_source_id).id();
+ if (mirroring_id == display::Display::kInvalidDisplayID) {
*error = "Display " + *info.mirroring_source_id + " not found.";
return false;
}
@@ -311,17 +319,6 @@ bool ValidateParamsForDisplay(const DisplayProperties& info,
return true;
}
-// Gets the display with the provided string id.
-display::Display GetTargetDisplay(const std::string& display_id_str,
- ash::DisplayManager* manager) {
- int64_t display_id;
- if (!base::StringToInt64(display_id_str, &display_id)) {
- // This should return invalid display.
- return display::Display();
- }
- return manager->GetDisplayForId(display_id);
-}
-
extensions::api::system_display::DisplayMode GetDisplayMode(
ash::DisplayManager* display_manager,
const ash::DisplayInfo& display_info,
@@ -359,8 +356,7 @@ bool DisplayInfoProviderChromeOS::SetInfo(const std::string& display_id_str,
ash::DisplayConfigurationController* display_configuration_controller =
ash::Shell::GetInstance()->display_configuration_controller();
- const display::Display target =
- GetTargetDisplay(display_id_str, display_manager);
+ const display::Display target = GetDisplay(display_id_str);
if (target.id() == display::Display::kInvalidDisplayID) {
*error = "Display not found.";
@@ -482,6 +478,62 @@ DisplayUnitInfoList DisplayInfoProviderChromeOS::GetAllDisplaysInfo() {
return all_displays;
}
+bool DisplayInfoProviderChromeOS::OverscanCalibrationStart(
+ const std::string& id) {
+ VLOG(1) << "OverscanCalibrationStart: " << id;
+ const display::Display display = GetDisplay(id);
+ if (display.id() == display::Display::kInvalidDisplayID)
+ return false;
+ auto insets =
+ ash::Shell::GetInstance()->window_tree_host_manager()->GetOverscanInsets(
+ display.id());
+ overscan_calibrators_[id].reset(
+ new chromeos::OverscanCalibrator(display, insets));
+ return true;
+}
+
+bool DisplayInfoProviderChromeOS::OverscanCalibrationAdjust(
+ const std::string& id,
+ const api::system_display::Insets& delta) {
+ VLOG(1) << "OverscanCalibrationAdjust: " << id;
+ chromeos::OverscanCalibrator* calibrator = GetCalibrator(id);
+ if (!calibrator)
+ return false;
+ gfx::Insets insets = calibrator->insets();
+ insets += gfx::Insets(delta.top, delta.left, delta.bottom, delta.right);
+ calibrator->UpdateInsets(insets);
+ return true;
+}
+
+bool DisplayInfoProviderChromeOS::OverscanCalibrationReset(
+ const std::string& id) {
+ VLOG(1) << "OverscanCalibrationReset: " << id;
+ chromeos::OverscanCalibrator* calibrator = GetCalibrator(id);
+ if (!calibrator)
+ return false;
+ calibrator->Reset();
+ return true;
+}
+
+bool DisplayInfoProviderChromeOS::OverscanCalibrationComplete(
+ const std::string& id) {
+ VLOG(1) << "OverscanCalibrationComplete: " << id;
+ chromeos::OverscanCalibrator* calibrator = GetCalibrator(id);
+ if (!calibrator)
+ return false;
+ calibrator->Commit();
+ overscan_calibrators_[id].reset();
+ return true;
+}
+
+chromeos::OverscanCalibrator* DisplayInfoProviderChromeOS::GetCalibrator(
+ const std::string& id) {
+ auto iter = overscan_calibrators_.find(id);
+ if (iter == overscan_calibrators_.end())
+ return nullptr;
+ return iter->second.get();
+}
+
// static
DisplayInfoProvider* DisplayInfoProvider::Create() {
return new DisplayInfoProviderChromeOS();

Powered by Google App Engine
This is Rietveld 408576698