Index: chrome/renderer/extensions/dom_activity_logger.cc |
=================================================================== |
--- chrome/renderer/extensions/dom_activity_logger.cc (revision 0) |
+++ chrome/renderer/extensions/dom_activity_logger.cc (revision 0) |
@@ -0,0 +1,63 @@ |
+// 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/renderer/extensions/dom_activity_logger.h" |
+ |
+#include "base/logging.h" |
+#include "chrome/common/extensions/extension_messages.h" |
+#include "chrome/renderer/chrome_render_process_observer.h" |
+#include "content/public/renderer/render_thread.h" |
+#include "content/public/renderer/v8_value_converter.h" |
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMActivityLogger.h" |
+#include "v8/include/v8.h" |
+ |
+using content::V8ValueConverter; |
+ |
+namespace extensions { |
+ |
+DOMActivityLogger::DOMActivityLogger(std::string extension_id, |
+ GURL url, |
+ string16 title) |
+ : extension_id_(extension_id), url_(url), title_(title) { |
+} |
+ |
+void DOMActivityLogger::log( |
+ const char* api_name, |
+ int argc, |
+ const v8::Handle<v8::Value> args[], |
+ const char* extra_info) { |
+ scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create()); |
+ scoped_ptr<ListValue> args_list_value(new ListValue()); |
+ for (int i =0; i < argc; i++) { |
+ args_list_value->Set( |
+ i, converter->FromV8Value(args[i], v8::Context::GetCurrent())); |
Matt Perry
2013/03/05 02:32:37
We're trying to get away from using v8::Context::G
Ankur Taly
2013/03/05 20:03:32
I can change the log method in WebKit::WebDOMActiv
Matt Perry
2013/03/05 20:34:22
Sounds good.
|
+ } |
+ ExtensionHostMsg_DOMAction_Params params; |
+ params.url = url_; |
+ params.url_title = title_; |
+ params.api_call = api_name; |
+ params.arguments.Swap(args_list_value.get()); |
+ params.extra = extra_info; |
+ |
+ content::RenderThread::Get()->Send( |
+ new ExtensionHostMsg_AddDOMActionToActivityLog(extension_id_, params)); |
+} |
+ |
+void DOMActivityLogger::attachToWorld(int world_id, |
+ std::string extension_id, |
+ GURL url, |
+ string16 title) { |
+ // Check if extension activity logging is enabled. |
+ if (!ChromeRenderProcessObserver::extension_activity_log_enabled()) |
+ return; |
+ // If there is no logger registered for world_id, construct a new logger |
+ // and register it with world_id. |
+ if (!WebKit::hasDOMActivityLogger(world_id)) { |
+ DOMActivityLogger* logger = new DOMActivityLogger(extension_id, url, title); |
+ WebKit::setDOMActivityLogger(world_id, logger); |
+ } |
+} |
+ |
+} // namespace extensions |
+ |
Property changes on: chrome/renderer/extensions/dom_activity_logger.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |