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) 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/extensions/api/system_display/system_display_api.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "chrome/common/extensions/manifest_handlers/kiosk_enabled_info.h" 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochusing api::system_display::DisplayUnitInfo; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace SetDisplayProperties = api::system_display::SetDisplayProperties; 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochbool SystemDisplayGetInfoFunction::RunImpl() { 17bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch DisplayInfoProvider::Get()->RequestInfo( 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::Bind( 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch &SystemDisplayGetInfoFunction::OnGetDisplayInfoCompleted, 207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) this)); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid SystemDisplayGetInfoFunction::OnGetDisplayInfoCompleted( 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool success) { 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (success) { 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch results_ = api::system_display::GetInfo::Results::Create( 28bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch DisplayInfoProvider::Get()->display_info()); 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } else { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetError("Error occurred when querying display information."); 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) SendResponse(success); 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochbool SystemDisplaySetDisplayPropertiesFunction::RunImpl() { 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 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (!KioskEnabledInfo::IsKioskEnabled(GetExtension())) { 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) SetError("The extension needs to be kiosk enabled to use the function."); 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return false; 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<SetDisplayProperties::Params> params( 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) SetDisplayProperties::Params::Create(*args_)); 47bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch DisplayInfoProvider::Get()->SetInfo(params->id, params->info, 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::Bind( 49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch &SystemDisplaySetDisplayPropertiesFunction::OnPropertiesSet, 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) this)); 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return true; 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid SystemDisplaySetDisplayPropertiesFunction::OnPropertiesSet( 567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool success, const std::string& error) { 577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (!success) 587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) SetError(error); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SendResponse(success); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 63