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 3 // found in the LICENSE file. 4 5 #include "extensions/browser/api/system_display/system_display_api.h" 6 7 #include <string> 8 9 #include "extensions/browser/api/system_display/display_info_provider.h" 10 #include "extensions/common/api/system_display.h" 11 12 #if defined(OS_CHROMEOS) 13 #include "base/memory/scoped_ptr.h" 14 #include "extensions/common/manifest_handlers/kiosk_mode_info.h" 15 #include "ui/gfx/screen.h" 16 #endif 17 18 namespace extensions { 19 20 using core_api::system_display::DisplayUnitInfo; 21 22 namespace SetDisplayProperties = core_api::system_display::SetDisplayProperties; 23 24 typedef std::vector<linked_ptr<core_api::system_display::DisplayUnitInfo> > 25 DisplayInfo; 26 27 bool SystemDisplayGetInfoFunction::RunSync() { 28 DisplayInfo all_displays_info = 29 DisplayInfoProvider::Get()->GetAllDisplaysInfo(); 30 results_ = 31 core_api::system_display::GetInfo::Results::Create(all_displays_info); 32 return true; 33 } 34 35 bool SystemDisplaySetDisplayPropertiesFunction::RunSync() { 36 #if !defined(OS_CHROMEOS) 37 SetError("Function available only on ChromeOS."); 38 return false; 39 #else 40 if (!KioskModeInfo::IsKioskEnabled(extension())) { 41 SetError("The extension needs to be kiosk enabled to use the function."); 42 return false; 43 } 44 std::string error; 45 scoped_ptr<SetDisplayProperties::Params> params( 46 SetDisplayProperties::Params::Create(*args_)); 47 bool success = 48 DisplayInfoProvider::Get()->SetInfo(params->id, params->info, &error); 49 if (!success) 50 SetError(error); 51 return true; 52 #endif 53 } 54 55 } // namespace extensions 56