| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "extensions/browser/api/system_display/system_display_api.h" | 5 #include "extensions/browser/api/system_display/system_display_api.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| 11 #include "extensions/browser/api/system_display/display_info_provider.h" | 11 #include "extensions/browser/api/system_display/display_info_provider.h" |
| 12 #include "extensions/common/api/system_display.h" | 12 #include "extensions/common/api/system_display.h" |
| 13 | 13 |
| 14 #if defined(OS_CHROMEOS) | 14 #if defined(OS_CHROMEOS) |
| 15 #include "extensions/common/manifest_handlers/kiosk_mode_info.h" | 15 #include "extensions/common/manifest_handlers/kiosk_mode_info.h" |
| 16 #endif | 16 #endif |
| 17 | 17 |
| 18 namespace extensions { | 18 namespace extensions { |
| 19 | 19 |
| 20 using api::system_display::DisplayUnitInfo; | 20 using api::system_display::DisplayUnitInfo; |
| 21 | 21 |
| 22 namespace SetDisplayProperties = api::system_display::SetDisplayProperties; | 22 namespace SetDisplayProperties = api::system_display::SetDisplayProperties; |
| 23 | 23 |
| 24 bool SystemDisplayFunction::CheckValidExtension() { |
| 25 if (extension() && !KioskModeInfo::IsKioskEnabled(extension())) { |
| 26 SetError("The extension needs to be kiosk enabled to use the function."); |
| 27 return false; |
| 28 } |
| 29 return true; |
| 30 } |
| 31 |
| 24 bool SystemDisplayGetInfoFunction::RunSync() { | 32 bool SystemDisplayGetInfoFunction::RunSync() { |
| 25 DisplayUnitInfoList all_displays_info = | 33 DisplayUnitInfoList all_displays_info = |
| 26 DisplayInfoProvider::Get()->GetAllDisplaysInfo(); | 34 DisplayInfoProvider::Get()->GetAllDisplaysInfo(); |
| 27 results_ = api::system_display::GetInfo::Results::Create(all_displays_info); | 35 results_ = api::system_display::GetInfo::Results::Create(all_displays_info); |
| 28 return true; | 36 return true; |
| 29 } | 37 } |
| 30 | 38 |
| 31 bool SystemDisplaySetDisplayPropertiesFunction::RunSync() { | 39 bool SystemDisplaySetDisplayPropertiesFunction::RunSync() { |
| 32 #if !defined(OS_CHROMEOS) | 40 #if !defined(OS_CHROMEOS) |
| 33 SetError("Function available only on ChromeOS."); | 41 SetError("Function available only on ChromeOS."); |
| 34 return false; | 42 return false; |
| 35 #else | 43 #else |
| 36 if (extension() && !KioskModeInfo::IsKioskEnabled(extension())) { | 44 if (!CheckValidExtension()) |
| 37 SetError("The extension needs to be kiosk enabled to use the function."); | |
| 38 return false; | 45 return false; |
| 39 } | |
| 40 std::string error; | 46 std::string error; |
| 41 std::unique_ptr<SetDisplayProperties::Params> params( | 47 std::unique_ptr<SetDisplayProperties::Params> params( |
| 42 SetDisplayProperties::Params::Create(*args_)); | 48 SetDisplayProperties::Params::Create(*args_)); |
| 43 bool result = | 49 bool result = |
| 44 DisplayInfoProvider::Get()->SetInfo(params->id, params->info, &error); | 50 DisplayInfoProvider::Get()->SetInfo(params->id, params->info, &error); |
| 45 if (!result) | 51 if (!result) |
| 46 SetError(error); | 52 SetError(error); |
| 47 return result; | 53 return result; |
| 48 #endif | 54 #endif |
| 49 } | 55 } |
| 50 | 56 |
| 51 bool SystemDisplayEnableUnifiedDesktopFunction::RunSync() { | 57 bool SystemDisplayEnableUnifiedDesktopFunction::RunSync() { |
| 52 #if !defined(OS_CHROMEOS) | 58 #if !defined(OS_CHROMEOS) |
| 53 SetError("Function available only on ChromeOS."); | 59 SetError("Function available only on ChromeOS."); |
| 54 return false; | 60 return false; |
| 55 #else | 61 #else |
| 62 if (!CheckValidExtension()) |
| 63 return false; |
| 56 std::unique_ptr<api::system_display::EnableUnifiedDesktop::Params> params( | 64 std::unique_ptr<api::system_display::EnableUnifiedDesktop::Params> params( |
| 57 api::system_display::EnableUnifiedDesktop::Params::Create(*args_)); | 65 api::system_display::EnableUnifiedDesktop::Params::Create(*args_)); |
| 58 DisplayInfoProvider::Get()->EnableUnifiedDesktop(params->enabled); | 66 DisplayInfoProvider::Get()->EnableUnifiedDesktop(params->enabled); |
| 59 return true; | 67 return true; |
| 60 #endif | 68 #endif |
| 61 } | 69 } |
| 62 | 70 |
| 71 bool SystemDisplayOverscanCalibrationStartFunction::RunSync() { |
| 72 #if !defined(OS_CHROMEOS) |
| 73 SetError("Function available only on ChromeOS."); |
| 74 return false; |
| 75 #else |
| 76 if (!CheckValidExtension()) |
| 77 return false; |
| 78 std::unique_ptr<api::system_display::OverscanCalibrationStart::Params> params( |
| 79 api::system_display::OverscanCalibrationStart::Params::Create(*args_)); |
| 80 if (!DisplayInfoProvider::Get()->OverscanCalibrationStart(params->id)) { |
| 81 SetError("Invalid display ID: " + params->id); |
| 82 return false; |
| 83 } |
| 84 return true; |
| 85 #endif |
| 86 } |
| 87 |
| 88 bool SystemDisplayOverscanCalibrationAdjustFunction::RunSync() { |
| 89 #if !defined(OS_CHROMEOS) |
| 90 SetError("Function available only on ChromeOS."); |
| 91 return false; |
| 92 #else |
| 93 if (!CheckValidExtension()) |
| 94 return false; |
| 95 std::unique_ptr<api::system_display::OverscanCalibrationAdjust::Params> |
| 96 params(api::system_display::OverscanCalibrationAdjust::Params::Create( |
| 97 *args_)); |
| 98 if (!params) { |
| 99 SetError("Invalid parameters"); |
| 100 return false; |
| 101 } |
| 102 if (!DisplayInfoProvider::Get()->OverscanCalibrationAdjust(params->id, |
| 103 params->delta)) { |
| 104 SetError("Calibration not started for display ID: " + params->id); |
| 105 return false; |
| 106 } |
| 107 return true; |
| 108 #endif |
| 109 } |
| 110 |
| 111 bool SystemDisplayOverscanCalibrationResetFunction::RunSync() { |
| 112 #if !defined(OS_CHROMEOS) |
| 113 SetError("Function available only on ChromeOS."); |
| 114 return false; |
| 115 #else |
| 116 if (!CheckValidExtension()) |
| 117 return false; |
| 118 std::unique_ptr<api::system_display::OverscanCalibrationReset::Params> params( |
| 119 api::system_display::OverscanCalibrationReset::Params::Create(*args_)); |
| 120 if (!DisplayInfoProvider::Get()->OverscanCalibrationReset(params->id)) { |
| 121 SetError("Calibration not started for display ID: " + params->id); |
| 122 return false; |
| 123 } |
| 124 return true; |
| 125 #endif |
| 126 } |
| 127 |
| 128 bool SystemDisplayOverscanCalibrationCompleteFunction::RunSync() { |
| 129 #if !defined(OS_CHROMEOS) |
| 130 SetError("Function available only on ChromeOS."); |
| 131 return false; |
| 132 #else |
| 133 if (!CheckValidExtension()) |
| 134 return false; |
| 135 std::unique_ptr<api::system_display::OverscanCalibrationComplete::Params> |
| 136 params(api::system_display::OverscanCalibrationComplete::Params::Create( |
| 137 *args_)); |
| 138 if (!DisplayInfoProvider::Get()->OverscanCalibrationComplete(params->id)) { |
| 139 SetError("Calibration not started for display ID: " + params->id); |
| 140 return false; |
| 141 } |
| 142 return true; |
| 143 #endif |
| 144 } |
| 145 |
| 63 } // namespace extensions | 146 } // namespace extensions |
| OLD | NEW |