Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9622)

Unified Diff: chrome/browser/ui/webui/extensions/extension_activity_ui.cc

Issue 9234076: Implementation of the Extension Activity Log UI behind a flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..700c571844256fb4e2f4725b7f59fcc429b0e912
--- /dev/null
+++ b/chrome/browser/ui/webui/extensions/extension_activity_ui.cc
@@ -0,0 +1,99 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
Dan Beam 2012/01/28 04:24:41 2012
Eric Dingle 2012/01/30 18:27:11 Done.
+// 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) {
+ std::string extension_id;
+ CHECK_EQ(1U, args->GetSize());
Dan Beam 2012/01/28 04:24:41 nit: This probably isn't necessary, but you can le
Eric Dingle 2012/01/30 18:27:11 Done.
+ CHECK(args->GetString(0, &extension_id));
+
+ 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();
Dan Beam 2012/01/28 04:24:41 Is this cleaned-up with ~result or does it leak?
Eric Dingle 2012/01/30 18:27:11 It's cleaned up by ~result. Added a comment.
+ 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);
+}

Powered by Google App Engine
This is Rietveld 408576698