Home | History | Annotate | Download | only in system_display
      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