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 18namespace extensions { 19 20using core_api::system_display::DisplayUnitInfo; 21 22namespace SetDisplayProperties = core_api::system_display::SetDisplayProperties; 23 24typedef std::vector<linked_ptr<core_api::system_display::DisplayUnitInfo> > 25 DisplayInfo; 26 27bool 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 35bool 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