1 // Copyright (c) 2013 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.
5 #ifndef CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_
6 #define CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_
10 #include "base/strings/string_piece.h"
11 #include "third_party/WebKit/public/platform/WebString.h"
12 #include "third_party/WebKit/public/platform/WebURL.h"
13 #include "third_party/WebKit/public/web/WebDOMActivityLogger.h"
15 #include "v8/include/v8.h"
17 // Used to log DOM API calls from within WebKit. The events are sent via IPC to
18 // extensions::ActivityLog for recording and display.
19 namespace extensions {
21 class DOMActivityLogger: public WebKit::WebDOMActivityLogger {
23 static const int kMainWorldId = 0;
24 explicit DOMActivityLogger(const std::string& extension_id);
26 // Marshalls the arguments into an ExtensionHostMsg_DOMAction_Params
27 // and sends it over to the browser (via IPC) for appending it to the
28 // extension activity log.
29 // (Overrides the log method in WebKit::WebDOMActivityLogger)
30 virtual void log(const WebKit::WebString& api_name,
32 const v8::Handle<v8::Value> argv[],
33 const WebKit::WebString& call_type,
34 const WebKit::WebURL& url,
35 const WebKit::WebString& title);
37 // Check (using the WebKit API) if there is no logger attached to the world
38 // corresponding to world_id, and if so, construct a new logger and attach it.
39 // world_id = 0 indicates the main world.
40 static void AttachToWorld(int world_id,
41 const std::string& extension_id);
44 std::string extension_id_;
46 DISALLOW_COPY_AND_ASSIGN(DOMActivityLogger);
49 } // namespace extensions
51 #endif // CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_