1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/shell/browser/shell_runtime_api_delegate.h"
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/common/api/runtime.h"
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
9010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_CHROMEOS)
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chromeos/dbus/power_manager_client.h"
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)using extensions::core_api::runtime::PlatformInfo;
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions {
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)ShellRuntimeAPIDelegate::ShellRuntimeAPIDelegate() {
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)ShellRuntimeAPIDelegate::~ShellRuntimeAPIDelegate() {
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void ShellRuntimeAPIDelegate::AddUpdateObserver(UpdateObserver* observer) {
25010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void ShellRuntimeAPIDelegate::RemoveUpdateObserver(UpdateObserver* observer) {
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
29010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)base::Version ShellRuntimeAPIDelegate::GetPreviousExtensionVersion(
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    const Extension* extension) {
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return base::Version();
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
35010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void ShellRuntimeAPIDelegate::ReloadExtension(const std::string& extension_id) {
36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
38010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool ShellRuntimeAPIDelegate::CheckForUpdates(
39010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    const std::string& extension_id,
40010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    const UpdateCheckCallback& callback) {
41010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return false;
42010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void ShellRuntimeAPIDelegate::OpenURL(const GURL& uninstall_url) {
45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool ShellRuntimeAPIDelegate::GetPlatformInfo(PlatformInfo* info) {
48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_CHROMEOS)
49010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  info->os = PlatformInfo::OS_CROS_;
50010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#elif defined(OS_LINUX)
51010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  info->os = PlatformInfo::OS_LINUX_;
52010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif
53010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return true;
54010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
55010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
56010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)bool ShellRuntimeAPIDelegate::RestartDevice(std::string* error_message) {
57010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// We allow chrome.runtime.restart() to request a device restart on ChromeOS.
58010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#if defined(OS_CHROMEOS)
59010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RequestRestart();
60010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return true;
61010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#endif
62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  *error_message = "Restart is only supported on ChromeOS.";
63010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  return false;
64010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
65010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace extensions
67