Update To 11.40.268.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_->SetJsonPath("strings.js");
39
40   source_->AddResourcePath("extension_info.css", IDR_EXTENSION_INFO_CSS);
41   source_->AddResourcePath("extension_info.js", IDR_EXTENSION_INFO_JS);
42   source_->SetDefaultResource(IDR_EXTENSION_INFO_HTML);
43
44   Profile* profile = Profile::FromWebUI(web_ui);
45   content::WebUIDataSource::Add(profile, source_);
46 }
47
48 ExtensionInfoUI::~ExtensionInfoUI() {
49 }
50
51 // static
52 GURL ExtensionInfoUI::GetURL(const std::string& extension_id) {
53   return GURL(base::StringPrintf(
54       "%s%s", chrome::kChromeUIExtensionInfoURL, extension_id.c_str()));
55 }
56
57 void ExtensionInfoUI::AddExtensionDataToSource(
58     const std::string& extension_id) {
59   Profile* profile = Profile::FromWebUI(web_ui());
60   ExtensionService* extension_service =
61       ExtensionSystem::Get(profile)->extension_service();
62   const Extension* extension =
63       extension_service->extensions()->GetByID(extension_id);
64   if (!extension)
65     return;
66
67   base::DictionaryValue extension_data;
68   GetExtensionBasicInfo(extension, true, &extension_data);
69   source_->AddLocalizedStrings(extension_data);
70
71   // Set the icon URL.
72   GURL icon =
73       ExtensionIconSource::GetIconURL(extension,
74                                       extension_misc::EXTENSION_ICON_MEDIUM,
75                                       ExtensionIconSet::MATCH_BIGGER,
76                                       false, NULL);
77   source_->AddString("icon", base::UTF8ToUTF16(icon.spec()));
78   // Set the last update time (the install time).
79   base::Time install_time =
80       ExtensionPrefs::Get(profile)->GetInstallTime(extension_id);
81   source_->AddString("installTime", base::TimeFormatShortDate(install_time));
82 }
83
84 }  // namespace extensions