• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_
6 #define CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_
7 
8 #include <string>
9 
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"
14 #include "url/gurl.h"
15 #include "v8/include/v8.h"
16 
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 {
20 
21 class DOMActivityLogger: public blink::WebDOMActivityLogger {
22  public:
23   static const int kMainWorldId = 0;
24   explicit DOMActivityLogger(const std::string& extension_id);
25 
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 blink::WebDOMActivityLogger)
30   virtual void log(const blink::WebString& api_name,
31                    int argc,
32                    const v8::Handle<v8::Value> argv[],
33                    const blink::WebString& call_type,
34                    const blink::WebURL& url,
35                    const blink::WebString& title);
36 
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);
42 
43  private:
44   std::string extension_id_;
45 
46   DISALLOW_COPY_AND_ASSIGN(DOMActivityLogger);
47 };
48 
49 }  // namespace extensions
50 
51 #endif  // CHROME_RENDERER_EXTENSIONS_DOM_ACTIVITY_LOGGER_H_
52 
53