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

Side by Side Diff: chrome/browser/extensions/display_info_provider_chromeos.cc

Issue 2445583002: Relocate display_manager from ash to ui (Closed)
Patch Set: fix windows build Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/extensions/display_info_provider_chromeos.h" 5 #include "chrome/browser/extensions/display_info_provider_chromeos.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "ash/display/display_configuration_controller.h" 9 #include "ash/display/display_configuration_controller.h"
10 #include "ash/display/display_manager.h"
11 #include "ash/display/resolution_notification_controller.h" 10 #include "ash/display/resolution_notification_controller.h"
12 #include "ash/shell.h" 11 #include "ash/shell.h"
13 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
14 #include "chrome/browser/chromeos/display/display_preferences.h" 13 #include "chrome/browser/chromeos/display/display_preferences.h"
15 #include "chrome/browser/chromeos/display/overscan_calibrator.h" 14 #include "chrome/browser/chromeos/display/overscan_calibrator.h"
16 #include "extensions/common/api/system_display.h" 15 #include "extensions/common/api/system_display.h"
17 #include "ui/display/display.h" 16 #include "ui/display/display.h"
18 #include "ui/display/manager/display_layout.h" 17 #include "ui/display/manager/display_layout.h"
19 #include "ui/display/manager/display_layout_builder.h" 18 #include "ui/display/manager/display_layout_builder.h"
19 #include "ui/display/manager/display_manager.h"
20 #include "ui/gfx/geometry/point.h" 20 #include "ui/gfx/geometry/point.h"
21 #include "ui/gfx/geometry/rect.h" 21 #include "ui/gfx/geometry/rect.h"
22 22
23 namespace extensions { 23 namespace extensions {
24 24
25 namespace system_display = api::system_display; 25 namespace system_display = api::system_display;
26 26
27 namespace { 27 namespace {
28 28
29 // Maximum allowed bounds origin absolute value. 29 // Maximum allowed bounds origin absolute value.
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 ->display_configuration_controller() 221 ->display_configuration_controller()
222 ->SetDisplayLayout(std::move(layout), true /* user_action */); 222 ->SetDisplayLayout(std::move(layout), true /* user_action */);
223 } 223 }
224 224
225 // Validates that parameters passed to the SetInfo function are valid for the 225 // Validates that parameters passed to the SetInfo function are valid for the
226 // desired display and the current display manager state. 226 // desired display and the current display manager state.
227 // Returns whether the parameters are valid. On failure |error| is set to the 227 // Returns whether the parameters are valid. On failure |error| is set to the
228 // error message. 228 // error message.
229 bool ValidateParamsForDisplay(const system_display::DisplayProperties& info, 229 bool ValidateParamsForDisplay(const system_display::DisplayProperties& info,
230 const display::Display& display, 230 const display::Display& display,
231 ash::DisplayManager* display_manager, 231 display::DisplayManager* display_manager,
232 int64_t primary_display_id, 232 int64_t primary_display_id,
233 std::string* error) { 233 std::string* error) {
234 int64_t id = display.id(); 234 int64_t id = display.id();
235 bool is_primary = 235 bool is_primary =
236 id == primary_display_id || (info.is_primary && *info.is_primary); 236 id == primary_display_id || (info.is_primary && *info.is_primary);
237 237
238 // If mirroring source id is set, a display with the given id should exist, 238 // If mirroring source id is set, a display with the given id should exist,
239 // and if should not be the same as the target display's id. 239 // and if should not be the same as the target display's id.
240 if (info.mirroring_source_id && !info.mirroring_source_id->empty()) { 240 if (info.mirroring_source_id && !info.mirroring_source_id->empty()) {
241 int64_t mirroring_id = GetDisplay(*info.mirroring_source_id).id(); 241 int64_t mirroring_id = GetDisplay(*info.mirroring_source_id).id();
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 ash::Shell::GetInstance() 347 ash::Shell::GetInstance()
348 ->resolution_notification_controller() 348 ->resolution_notification_controller()
349 ->PrepareNotification(id, current_mode, new_mode, 349 ->PrepareNotification(id, current_mode, new_mode,
350 base::Bind(&chromeos::StoreDisplayPrefs)); 350 base::Bind(&chromeos::StoreDisplayPrefs));
351 } 351 }
352 } 352 }
353 return true; 353 return true;
354 } 354 }
355 355
356 system_display::DisplayMode GetDisplayMode( 356 system_display::DisplayMode GetDisplayMode(
357 ash::DisplayManager* display_manager, 357 display::DisplayManager* display_manager,
358 const display::ManagedDisplayInfo& display_info, 358 const display::ManagedDisplayInfo& display_info,
359 const scoped_refptr<display::ManagedDisplayMode>& display_mode) { 359 const scoped_refptr<display::ManagedDisplayMode>& display_mode) {
360 system_display::DisplayMode result; 360 system_display::DisplayMode result;
361 361
362 bool is_internal = display::Display::HasInternalDisplay() && 362 bool is_internal = display::Display::HasInternalDisplay() &&
363 display::Display::InternalDisplayId() == display_info.id(); 363 display::Display::InternalDisplayId() == display_info.id();
364 gfx::Size size_dip = display_mode->GetSizeInDIP(is_internal); 364 gfx::Size size_dip = display_mode->GetSizeInDIP(is_internal);
365 result.width = size_dip.width(); 365 result.width = size_dip.width();
366 result.height = size_dip.height(); 366 result.height = size_dip.height();
367 result.width_in_native_pixels = display_mode->size().width(); 367 result.width_in_native_pixels = display_mode->size().width();
368 result.height_in_native_pixels = display_mode->size().height(); 368 result.height_in_native_pixels = display_mode->size().height();
369 result.ui_scale = display_mode->ui_scale(); 369 result.ui_scale = display_mode->ui_scale();
370 result.device_scale_factor = display_mode->device_scale_factor(); 370 result.device_scale_factor = display_mode->device_scale_factor();
371 result.is_native = display_mode->native(); 371 result.is_native = display_mode->native();
372 result.is_selected = display_mode->IsEquivalent( 372 result.is_selected = display_mode->IsEquivalent(
373 display_manager->GetActiveModeForDisplayId(display_info.id())); 373 display_manager->GetActiveModeForDisplayId(display_info.id()));
374 return result; 374 return result;
375 } 375 }
376 376
377 } // namespace 377 } // namespace
378 378
379 DisplayInfoProviderChromeOS::DisplayInfoProviderChromeOS() {} 379 DisplayInfoProviderChromeOS::DisplayInfoProviderChromeOS() {}
380 380
381 DisplayInfoProviderChromeOS::~DisplayInfoProviderChromeOS() {} 381 DisplayInfoProviderChromeOS::~DisplayInfoProviderChromeOS() {}
382 382
383 bool DisplayInfoProviderChromeOS::SetInfo( 383 bool DisplayInfoProviderChromeOS::SetInfo(
384 const std::string& display_id_str, 384 const std::string& display_id_str,
385 const system_display::DisplayProperties& info, 385 const system_display::DisplayProperties& info,
386 std::string* error) { 386 std::string* error) {
387 ash::DisplayManager* display_manager = 387 display::DisplayManager* display_manager =
388 ash::Shell::GetInstance()->display_manager(); 388 ash::Shell::GetInstance()->display_manager();
389 ash::DisplayConfigurationController* display_configuration_controller = 389 ash::DisplayConfigurationController* display_configuration_controller =
390 ash::Shell::GetInstance()->display_configuration_controller(); 390 ash::Shell::GetInstance()->display_configuration_controller();
391 391
392 const display::Display target = GetDisplay(display_id_str); 392 const display::Display target = GetDisplay(display_id_str);
393 393
394 if (target.id() == display::Display::kInvalidDisplayID) { 394 if (target.id() == display::Display::kInvalidDisplayID) {
395 *error = "Display not found."; 395 *error = "Display not found.";
396 return false; 396 return false;
397 } 397 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 new_bounds_origin.y() - target.bounds().y()); 445 new_bounds_origin.y() - target.bounds().y());
446 UpdateDisplayLayout(primary.bounds(), primary.id(), target_bounds, 446 UpdateDisplayLayout(primary.bounds(), primary.id(), target_bounds,
447 target.id()); 447 target.id());
448 } 448 }
449 449
450 return true; 450 return true;
451 } 451 }
452 452
453 bool DisplayInfoProviderChromeOS::SetDisplayLayout( 453 bool DisplayInfoProviderChromeOS::SetDisplayLayout(
454 const DisplayLayoutList& layouts) { 454 const DisplayLayoutList& layouts) {
455 ash::DisplayManager* display_manager = 455 display::DisplayManager* display_manager =
456 ash::Shell::GetInstance()->display_manager(); 456 ash::Shell::GetInstance()->display_manager();
457 display::DisplayLayoutBuilder builder( 457 display::DisplayLayoutBuilder builder(
458 display_manager->GetCurrentDisplayLayout()); 458 display_manager->GetCurrentDisplayLayout());
459 459
460 bool have_root = false; 460 bool have_root = false;
461 builder.ClearPlacements(); 461 builder.ClearPlacements();
462 for (const system_display::DisplayLayout& layout : layouts) { 462 for (const system_display::DisplayLayout& layout : layouts) {
463 display::Display display = GetDisplay(layout.id); 463 display::Display display = GetDisplay(layout.id);
464 if (display.id() == display::Display::kInvalidDisplayID) { 464 if (display.id() == display::Display::kInvalidDisplayID) {
465 LOG(ERROR) << "Invalid layout: display id not found: " << layout.id; 465 LOG(ERROR) << "Invalid layout: display id not found: " << layout.id;
(...skipping 21 matching lines...) Expand all
487 } 487 }
488 ash::Shell::GetInstance() 488 ash::Shell::GetInstance()
489 ->display_configuration_controller() 489 ->display_configuration_controller()
490 ->SetDisplayLayout(std::move(layout), true /* user_action */); 490 ->SetDisplayLayout(std::move(layout), true /* user_action */);
491 return true; 491 return true;
492 } 492 }
493 493
494 void DisplayInfoProviderChromeOS::UpdateDisplayUnitInfoForPlatform( 494 void DisplayInfoProviderChromeOS::UpdateDisplayUnitInfoForPlatform(
495 const display::Display& display, 495 const display::Display& display,
496 system_display::DisplayUnitInfo* unit) { 496 system_display::DisplayUnitInfo* unit) {
497 ash::DisplayManager* display_manager = 497 display::DisplayManager* display_manager =
498 ash::Shell::GetInstance()->display_manager(); 498 ash::Shell::GetInstance()->display_manager();
499 unit->name = display_manager->GetDisplayNameForId(display.id()); 499 unit->name = display_manager->GetDisplayNameForId(display.id());
500 if (display_manager->IsInMirrorMode()) { 500 if (display_manager->IsInMirrorMode()) {
501 unit->mirroring_source_id = 501 unit->mirroring_source_id =
502 base::Int64ToString(display_manager->mirroring_display_id()); 502 base::Int64ToString(display_manager->mirroring_display_id());
503 } 503 }
504 504
505 const display::ManagedDisplayInfo& display_info = 505 const display::ManagedDisplayInfo& display_info =
506 display_manager->GetDisplayInfo(display.id()); 506 display_manager->GetDisplayInfo(display.id());
507 const float device_dpi = display_info.device_dpi(); 507 const float device_dpi = display_info.device_dpi();
(...skipping 16 matching lines...) Expand all
524 } 524 }
525 } 525 }
526 526
527 void DisplayInfoProviderChromeOS::EnableUnifiedDesktop(bool enable) { 527 void DisplayInfoProviderChromeOS::EnableUnifiedDesktop(bool enable) {
528 ash::Shell::GetInstance()->display_manager()->SetUnifiedDesktopEnabled( 528 ash::Shell::GetInstance()->display_manager()->SetUnifiedDesktopEnabled(
529 enable); 529 enable);
530 } 530 }
531 531
532 DisplayInfoProvider::DisplayUnitInfoList 532 DisplayInfoProvider::DisplayUnitInfoList
533 DisplayInfoProviderChromeOS::GetAllDisplaysInfo() { 533 DisplayInfoProviderChromeOS::GetAllDisplaysInfo() {
534 ash::DisplayManager* display_manager = 534 display::DisplayManager* display_manager =
535 ash::Shell::GetInstance()->display_manager(); 535 ash::Shell::GetInstance()->display_manager();
536 if (!display_manager->IsInUnifiedMode()) 536 if (!display_manager->IsInUnifiedMode())
537 return DisplayInfoProvider::GetAllDisplaysInfo(); 537 return DisplayInfoProvider::GetAllDisplaysInfo();
538 538
539 std::vector<display::Display> displays = 539 std::vector<display::Display> displays =
540 display_manager->software_mirroring_display_list(); 540 display_manager->software_mirroring_display_list();
541 CHECK_GT(displays.size(), 0u); 541 CHECK_GT(displays.size(), 0u);
542 542
543 // Use first display as primary. 543 // Use first display as primary.
544 int64_t primary_id = displays[0].id(); 544 int64_t primary_id = displays[0].id();
545 DisplayUnitInfoList all_displays; 545 DisplayUnitInfoList all_displays;
546 for (const display::Display& display : displays) { 546 for (const display::Display& display : displays) {
547 system_display::DisplayUnitInfo unit = 547 system_display::DisplayUnitInfo unit =
548 CreateDisplayUnitInfo(display, primary_id); 548 CreateDisplayUnitInfo(display, primary_id);
549 UpdateDisplayUnitInfoForPlatform(display, &unit); 549 UpdateDisplayUnitInfoForPlatform(display, &unit);
550 all_displays.push_back(std::move(unit)); 550 all_displays.push_back(std::move(unit));
551 } 551 }
552 return all_displays; 552 return all_displays;
553 } 553 }
554 554
555 DisplayInfoProvider::DisplayLayoutList 555 DisplayInfoProvider::DisplayLayoutList
556 DisplayInfoProviderChromeOS::GetDisplayLayout() { 556 DisplayInfoProviderChromeOS::GetDisplayLayout() {
557 ash::DisplayManager* display_manager = 557 display::DisplayManager* display_manager =
558 ash::Shell::GetInstance()->display_manager(); 558 ash::Shell::GetInstance()->display_manager();
559 559
560 if (display_manager->num_connected_displays() < 2) 560 if (display_manager->num_connected_displays() < 2)
561 return DisplayInfoProvider::DisplayLayoutList(); 561 return DisplayInfoProvider::DisplayLayoutList();
562 562
563 display::Screen* screen = display::Screen::GetScreen(); 563 display::Screen* screen = display::Screen::GetScreen();
564 std::vector<display::Display> displays = screen->GetAllDisplays(); 564 std::vector<display::Display> displays = screen->GetAllDisplays();
565 565
566 DisplayLayoutList result; 566 DisplayLayoutList result;
567 for (const display::Display& display : displays) { 567 for (const display::Display& display : displays) {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 return nullptr; 635 return nullptr;
636 return iter->second.get(); 636 return iter->second.get();
637 } 637 }
638 638
639 // static 639 // static
640 DisplayInfoProvider* DisplayInfoProvider::Create() { 640 DisplayInfoProvider* DisplayInfoProvider::Create() {
641 return new DisplayInfoProviderChromeOS(); 641 return new DisplayInfoProviderChromeOS();
642 } 642 }
643 643
644 } // namespace extensions 644 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/preferences.cc ('k') | chrome/browser/extensions/display_info_provider_chromeos_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698