1// Copyright 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_EXTENSION_FRAME_HELPER_H_
6#define CHROME_RENDERER_EXTENSIONS_EXTENSION_FRAME_HELPER_H_
7
8#include "content/public/common/console_message_level.h"
9#include "content/public/renderer/render_frame_observer.h"
10#include "content/public/renderer/render_frame_observer_tracker.h"
11
12namespace extensions {
13
14class Dispatcher;
15
16// RenderFrame-level plumbing for extension features.
17class ExtensionFrameHelper
18    : public content::RenderFrameObserver,
19      public content::RenderFrameObserverTracker<ExtensionFrameHelper> {
20 public:
21  ExtensionFrameHelper(content::RenderFrame* render_frame,
22                       Dispatcher* extension_dispatcher);
23  virtual ~ExtensionFrameHelper();
24
25 private:
26  // RenderFrameObserver implementation.
27  virtual void WillReleaseScriptContext(v8::Handle<v8::Context>,
28                                        int world_id) OVERRIDE;
29  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
30
31  // IPC handlers.
32  void OnAddMessageToConsole(content::ConsoleMessageLevel level,
33                             const std::string& message);
34
35  Dispatcher* extension_dispatcher_;
36
37  DISALLOW_COPY_AND_ASSIGN(ExtensionFrameHelper);
38};
39
40}  // namespace extensions
41
42#endif  // CHROME_RENDERER_EXTENSIONS_EXTENSION_FRAME_HELPER_H_
43