Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / extensions / extension_info_ui.cc
1 // Copyright (c) 2012 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_info_ui.h"
6
7 #include "base/i18n/time_formatting.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "base/time/time.h"
11 #include "chrome/browser/extensions/extension_service.h"
12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/ui/webui/extensions/extension_basic_info.h"
14 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
15 #include "chrome/common/extensions/extension_constants.h"
16 #include "chrome/common/url_constants.h"
17 #include "chrome/grit/generated_resources.h"
18 #include "content/public/browser/web_ui.h"
19 #include "content/public/browser/web_ui_data_source.h"
20 #include "extensions/browser/extension_prefs.h"
21 #include "extensions/browser/extension_system.h"
22 #include "extensions/common/extension.h"
23 #include "extensions/common/extension_icon_set.h"
24 #include "grit/browser_resources.h"
25
26 namespace extensions {
27
28 ExtensionInfoUI::ExtensionInfoUI(content::WebUI* web_ui, const GURL& url)
29     : content::WebUIController(web_ui),
30       source_(content::WebUIDataSource::Create(
31           chrome::kChromeUIExtensionInfoHost)) {
32   AddExtensionDataToSource(url.path().substr(1));
33
34   source_->AddLocalizedString("isRunning",
35                               IDS_EXTENSION_SCRIPT_POPUP_IS_RUNNING);
36   source_->AddLocalizedString("lastUpdated",
37                               IDS_EXTENSION_SCRIPT_POPUP_LAST_UPDATED);
38   source_->SetUseJsonJSFormatV2();
39   source_->SetJsonPath("strings.js");
40
41   source_->AddResourcePath("extension_info.css", IDR_EXTENSION_INFO_CSS);
42   source_->AddResourcePath("extension_info.js", IDR_EXTENSION_INFO_JS);
43   source_->SetDefaultResource(IDR_EXTENSION_INFO_HTML);
44
45   Profile* profile = Profile::FromWebUI(web_ui);
46   content::WebUIDataSource::Add(profile, source_);
47 }
48
49 ExtensionInfoUI::~ExtensionInfoUI() {
50 }
51
52 // static
53 GURL ExtensionInfoUI::GetURL(const std::string& extension_id) {
54   return GURL(base::StringPrintf(
55       "%s%s", chrome::kChromeUIExtensionInfoURL, extension_id.c_str()));
56 }
57
58 void ExtensionInfoUI::AddExtensionDataToSource(
59     const std::string& extension_id) {
60   Profile* profile = Profile::FromWebUI(web_ui());
61   ExtensionService* extension_service =
62       ExtensionSystem::Get(profile)->extension_service();
63   const Extension* extension =
64       extension_service->extensions()->GetByID(extension_id);
65   if (!extension)
66     return;
67
68   base::DictionaryValue extension_data;
69   GetExtensionBasicInfo(extension, true, &extension_data);
70   source_->AddLocalizedStrings(extension_data);
71
72   // Set the icon URL.
73   GURL icon =
74       ExtensionIconSource::GetIconURL(extension,
75                                       extension_misc::EXTENSION_ICON_MEDIUM,
76                                       ExtensionIconSet::MATCH_BIGGER,
77                                       false, NULL);
78   source_->AddString("icon", base::UTF8ToUTF16(icon.spec()));
79   // Set the last update time (the install time).
80   base::Time install_time =
81       ExtensionPrefs::Get(profile)->GetInstallTime(extension_id);
82   source_->AddString("installTime", base::TimeFormatShortDate(install_time));
83 }
84
85 }  // namespace extensions