| Index: trunk/src/chrome/renderer/extensions/dom_activity_logger.cc
|
| ===================================================================
|
| --- trunk/src/chrome/renderer/extensions/dom_activity_logger.cc (revision 266598)
|
| +++ trunk/src/chrome/renderer/extensions/dom_activity_logger.cc (working copy)
|
| @@ -5,6 +5,7 @@
|
| #include "chrome/renderer/extensions/dom_activity_logger.h"
|
|
|
| #include "chrome/common/extensions/ad_injection_constants.h"
|
| +#include "chrome/common/extensions/dom_action_types.h"
|
| #include "chrome/renderer/chrome_render_process_observer.h"
|
| #include "chrome/renderer/extensions/activity_log_converter_strategy.h"
|
| #include "content/public/renderer/render_thread.h"
|
| @@ -21,22 +22,6 @@
|
|
|
| namespace extensions {
|
|
|
| -namespace {
|
| -
|
| -scoped_ptr<base::Value> ConvertV8Value(const std::string& api_name,
|
| - const v8::Handle<v8::Value> v8_value) {
|
| - scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
|
| - ActivityLogConverterStrategy strategy;
|
| - strategy.set_enable_detailed_parsing(
|
| - ad_injection_constants::ApiCanInjectAds(api_name));
|
| - converter->SetFunctionAllowed(true);
|
| - converter->SetStrategy(&strategy);
|
| - return scoped_ptr<base::Value>(converter->FromV8Value(
|
| - v8_value, v8::Isolate::GetCurrent()->GetCurrentContext()));
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| DOMActivityLogger::DOMActivityLogger(const std::string& extension_id)
|
| : extension_id_(extension_id) {
|
| }
|
| @@ -50,19 +35,35 @@
|
| const WebString& call_type,
|
| const WebURL& url,
|
| const WebString& title) {
|
| - scoped_ptr<base::ListValue> args(new base::ListValue());
|
| - std::string api_name_utf8 = api_name.utf8();
|
| - for (int i = 0; i < argc; ++i)
|
| - args->Append(ConvertV8Value(api_name_utf8, argv[i]).release());
|
| + scoped_ptr<V8ValueConverter> converter(V8ValueConverter::create());
|
| + ActivityLogConverterStrategy strategy;
|
| + strategy.set_enable_detailed_parsing(
|
| + ad_injection_constants::ApiCanInjectAds(api_name.utf8().c_str()));
|
| + converter->SetFunctionAllowed(true);
|
| + converter->SetStrategy(&strategy);
|
| + scoped_ptr<base::ListValue> argv_list_value(new base::ListValue());
|
| + for (int i = 0; i < argc; i++) {
|
| + argv_list_value->Set(
|
| + i,
|
| + converter->FromV8Value(argv[i],
|
| + v8::Isolate::GetCurrent()->GetCurrentContext()));
|
| + }
|
|
|
| - DomActionType::Type type = DomActionType::METHOD;
|
| - if (call_type == "Getter")
|
| - type = DomActionType::GETTER;
|
| - else if (call_type == "Setter")
|
| - type = DomActionType::SETTER;
|
| - // else DomActionType::METHOD is correct.
|
| - SendDomActionMessage(
|
| - api_name_utf8, url, title, type, args.Pass());
|
| + ExtensionHostMsg_DOMAction_Params params;
|
| + params.url = url;
|
| + params.url_title = title;
|
| + params.api_call = api_name.utf8();
|
| + params.arguments.Swap(argv_list_value.get());
|
| + const std::string type = call_type.utf8();
|
| + if (type == "Getter")
|
| + params.call_type = DomActionType::GETTER;
|
| + else if (type == "Setter")
|
| + params.call_type = DomActionType::SETTER;
|
| + else
|
| + params.call_type = DomActionType::METHOD;
|
| +
|
| + content::RenderThread::Get()->Send(
|
| + new ExtensionHostMsg_AddDOMActionToActivityLog(extension_id_, params));
|
| }
|
|
|
| void DOMActivityLogger::AttachToWorld(int world_id,
|
| @@ -77,63 +78,4 @@
|
| #endif
|
| }
|
|
|
| -void DOMActivityLogger::logGetter(const WebString& api_name,
|
| - const WebURL& url,
|
| - const WebString& title) {
|
| - SendDomActionMessage(api_name.utf8(),
|
| - url,
|
| - title,
|
| - DomActionType::GETTER,
|
| - scoped_ptr<base::ListValue>(new base::ListValue()));
|
| -}
|
| -
|
| -void DOMActivityLogger::logSetter(const WebString& api_name,
|
| - const v8::Handle<v8::Value>& new_value,
|
| - const WebURL& url,
|
| - const WebString& title) {
|
| - logSetter(api_name, new_value, v8::Handle<v8::Value>(), url, title);
|
| -}
|
| -
|
| -void DOMActivityLogger::logSetter(const WebString& api_name,
|
| - const v8::Handle<v8::Value>& new_value,
|
| - const v8::Handle<v8::Value>& old_value,
|
| - const WebURL& url,
|
| - const WebString& title) {
|
| - scoped_ptr<base::ListValue> args(new base::ListValue);
|
| - std::string api_name_utf8 = api_name.utf8();
|
| - args->Append(ConvertV8Value(api_name_utf8, new_value).release());
|
| - if (!old_value.IsEmpty())
|
| - args->Append(ConvertV8Value(api_name_utf8, old_value).release());
|
| - SendDomActionMessage(
|
| - api_name_utf8, url, title, DomActionType::SETTER, args.Pass());
|
| -}
|
| -
|
| -void DOMActivityLogger::logMethod(const WebString& api_name,
|
| - int argc,
|
| - const v8::Handle<v8::Value>* argv,
|
| - const WebURL& url,
|
| - const WebString& title) {
|
| - scoped_ptr<base::ListValue> args(new base::ListValue);
|
| - std::string api_name_utf8 = api_name.utf8();
|
| - for (int i = 0; i < argc; ++i)
|
| - args->Append(ConvertV8Value(api_name_utf8, argv[i]).release());
|
| - SendDomActionMessage(
|
| - api_name_utf8, url, title, DomActionType::METHOD, args.Pass());
|
| -}
|
| -
|
| -void DOMActivityLogger::SendDomActionMessage(const std::string& api_call,
|
| - const GURL& url,
|
| - const base::string16& url_title,
|
| - DomActionType::Type call_type,
|
| - scoped_ptr<base::ListValue> args) {
|
| - ExtensionHostMsg_DOMAction_Params params;
|
| - params.api_call = api_call;
|
| - params.url = url;
|
| - params.url_title = url_title;
|
| - params.call_type = call_type;
|
| - params.arguments.Swap(args.get());
|
| - content::RenderThread::Get()->Send(
|
| - new ExtensionHostMsg_AddDOMActionToActivityLog(extension_id_, params));
|
| -}
|
| -
|
| } // namespace extensions
|
|
|