1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/api/system_display/system_display_api.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <string>
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/api/system_display/display_info_provider.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/api/system_display.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_CHROMEOS)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/common/manifest_handlers/kiosk_mode_info.h"
154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/gfx/screen.h"
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions {
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing core_api::system_display::DisplayUnitInfo;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace SetDisplayProperties = core_api::system_display::SetDisplayProperties;
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitypedef std::vector<linked_ptr<core_api::system_display::DisplayUnitInfo> >
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    DisplayInfo;
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liubool SystemDisplayGetInfoFunction::RunSync() {
284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  DisplayInfo all_displays_info =
294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      DisplayInfoProvider::Get()->GetAllDisplaysInfo();
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  results_ =
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      core_api::system_display::GetInfo::Results::Create(all_displays_info);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return true;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liubool SystemDisplaySetDisplayPropertiesFunction::RunSync() {
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#if !defined(OS_CHROMEOS)
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  SetError("Function available only on ChromeOS.");
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return false;
397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#else
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (!KioskModeInfo::IsKioskEnabled(extension())) {
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    SetError("The extension needs to be kiosk enabled to use the function.");
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    return false;
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  std::string error;
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  scoped_ptr<SetDisplayProperties::Params> params(
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)      SetDisplayProperties::Params::Create(*args_));
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool success =
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      DisplayInfoProvider::Get()->SetInfo(params->id, params->info, &error);
497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (!success)
507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    SetError(error);
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return true;
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace extensions
56