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 "chrome/browser/ui/webui/extensions/extension_basic_info.h"
6
7#include "base/values.h"
8#include "chrome/common/extensions/manifest_url_handler.h"
9#include "extensions/common/extension.h"
10#include "extensions/common/manifest_handlers/kiosk_mode_info.h"
11#include "extensions/common/manifest_handlers/offline_enabled_info.h"
12
13namespace {
14
15// Keys in the dictionary returned by GetExtensionBasicInfo().
16const char kDescriptionKey[] = "description";
17const char kEnabledKey[] = "enabled";
18const char kHomepageUrlKey[] = "homepageUrl";
19const char kIdKey[] = "id";
20const char kNameKey[] = "name";
21const char kKioskEnabledKey[] = "kioskEnabled";
22const char kKioskOnlyKey[] = "kioskOnly";
23const char kOfflineEnabledKey[] = "offlineEnabled";
24const char kOptionsUrlKey[] = "optionsUrl";
25const char kDetailsUrlKey[] = "detailsUrl";
26const char kVersionKey[] = "version";
27const char kPackagedAppKey[] = "packagedApp";
28
29}  // namespace
30
31namespace extensions {
32
33void GetExtensionBasicInfo(const Extension* extension,
34                           bool enabled,
35                           base::DictionaryValue* info) {
36  info->SetString(kIdKey, extension->id());
37  info->SetString(kNameKey, extension->name());
38  info->SetBoolean(kEnabledKey, enabled);
39  info->SetBoolean(kKioskEnabledKey,
40                   KioskModeInfo::IsKioskEnabled(extension));
41  info->SetBoolean(kKioskOnlyKey,
42                   KioskModeInfo::IsKioskOnly(extension));
43  info->SetBoolean(kOfflineEnabledKey,
44                   OfflineEnabledInfo::IsOfflineEnabled(extension));
45  info->SetString(kVersionKey, extension->VersionString());
46  info->SetString(kDescriptionKey, extension->description());
47  info->SetString(
48      kOptionsUrlKey,
49      ManifestURL::GetOptionsPage(extension).possibly_invalid_spec());
50  info->SetString(
51      kHomepageUrlKey,
52      ManifestURL::GetHomepageURL(extension).possibly_invalid_spec());
53  info->SetString(
54      kDetailsUrlKey,
55      ManifestURL::GetDetailsURL(extension).possibly_invalid_spec());
56  info->SetBoolean(kPackagedAppKey, extension->is_platform_app());
57}
58
59}  // namespace extensions
60