- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / renderer / extensions / dom_activity_logger.h
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 WebKit::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 WebKit::WebDOMActivityLogger)
30   virtual void log(const WebKit::WebString& api_name,
31                    int argc,
32                    const v8::Handle<v8::Value> argv[],
33                    const WebKit::WebString& call_type,
34                    const WebKit::WebURL& url,
35                    const WebKit::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