| Index: chrome/browser/ui/webui/extensions/extension_activity_ui.cc
|
| diff --git a/chrome/browser/ui/webui/extensions/extension_activity_ui.cc b/chrome/browser/ui/webui/extensions/extension_activity_ui.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dbcb6fa168f5c00343108155d43fb5b3ff3c93e8
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/webui/extensions/extension_activity_ui.cc
|
| @@ -0,0 +1,101 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/ui/webui/extensions/extension_activity_ui.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
|
| +#include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
|
| +#include "chrome/browser/ui/webui/shared_resources_data_source.h"
|
| +#include "chrome/common/url_constants.h"
|
| +#include "content/public/browser/web_ui.h"
|
| +#include "grit/browser_resources.h"
|
| +#include "grit/generated_resources.h"
|
| +#include "ui/base/l10n/l10n_util.h"
|
| +
|
| +ExtensionActivityUI::ExtensionActivityUI(content::WebUI* web_ui)
|
| + : WebUIController(web_ui), extension_(NULL) {
|
| + web_ui->HideURL();
|
| + web_ui->OverrideTitle(l10n_util::GetStringUTF16(
|
| + IDS_EXTENSION_ACTIVITY_TITLE));
|
| +
|
| + ChromeWebUIDataSource* source =
|
| + new ChromeWebUIDataSource(chrome::kChromeUIExtensionActivityHost);
|
| +
|
| + // Localized strings.
|
| + source->AddLocalizedString("extensionActivity", IDS_EXTENSION_ACTIVITY_TITLE);
|
| + source->AddLocalizedString("extensionActivityApiCall",
|
| + IDS_EXTENSION_ACTIVITY_API_CALL);
|
| + source->AddLocalizedString("extensionActivityApiBlock",
|
| + IDS_EXTENSION_ACTIVITY_API_BLOCK);
|
| + source->set_json_path("strings.js");
|
| +
|
| + // Resources.
|
| + source->add_resource_path("extension_activity.js", IDR_EXTENSION_ACTIVITY_JS);
|
| + source->set_default_resource(IDR_EXTENSION_ACTIVITY_HTML);
|
| +
|
| + // Callback handlers.
|
| + web_ui->RegisterMessageCallback("requestExtensionData",
|
| + base::Bind(&ExtensionActivityUI::HandleRequestExtensionData,
|
| + base::Unretained(this)));
|
| +
|
| + Profile* profile = Profile::FromWebUI(web_ui);
|
| + profile->GetChromeURLDataManager()->AddDataSource(source);
|
| + profile->GetChromeURLDataManager()->AddDataSource(
|
| + new SharedResourcesDataSource());
|
| +}
|
| +
|
| +ExtensionActivityUI::~ExtensionActivityUI() {
|
| + if (extension_)
|
| + ExtensionActivityLog::GetInstance()->RemoveObserver(extension_, this);
|
| +}
|
| +
|
| +void ExtensionActivityUI::HandleRequestExtensionData(
|
| + const base::ListValue* args) {
|
| + DCHECK_EQ(1U, args->GetSize());
|
| +
|
| + std::string extension_id;
|
| + if (!args->GetString(0, &extension_id))
|
| + return;
|
| +
|
| + ExtensionService* extension_service = Profile::FromWebUI(web_ui())->
|
| + GetExtensionService();
|
| + extension_ = extension_service->GetExtensionById(extension_id, false);
|
| + if (!extension_)
|
| + return;
|
| +
|
| + GURL icon =
|
| + ExtensionIconSource::GetIconURL(extension_,
|
| + Extension::EXTENSION_ICON_MEDIUM,
|
| + ExtensionIconSet::MATCH_BIGGER,
|
| + false, NULL);
|
| +
|
| + DictionaryValue* extension_data = new DictionaryValue(); // Owned by result.
|
| + extension_data->SetString("id", extension_->id());
|
| + extension_data->SetString("name", extension_->name());
|
| + extension_data->SetString("version", extension_->version()->GetString());
|
| + extension_data->SetString("description", extension_->description());
|
| + extension_data->SetString("icon", icon.spec());
|
| +
|
| + DictionaryValue result;
|
| + result.Set("extension", extension_data);
|
| +
|
| + web_ui()->CallJavascriptFunction("extension_activity.handleExtensionData",
|
| + result);
|
| +
|
| + ExtensionActivityLog::GetInstance()->AddObserver(extension_, this);
|
| +}
|
| +
|
| +void ExtensionActivityUI::OnExtensionActivity(
|
| + const Extension* extension,
|
| + ExtensionActivityLog::Activity activity,
|
| + const std::string& msg) {
|
| + DictionaryValue result;
|
| + result.SetInteger("activity", activity);
|
| + result.SetString("message", msg);
|
| + web_ui()->CallJavascriptFunction("extension_activity.handleExtensionActivity",
|
| + result);
|
| +}
|
|
|