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#include "chrome/renderer/extensions/extension_frame_helper.h"
6
7#include "content/public/renderer/render_frame.h"
8#include "extensions/common/extension_messages.h"
9#include "extensions/renderer/console.h"
10#include "extensions/renderer/dispatcher.h"
11#include "third_party/WebKit/public/web/WebConsoleMessage.h"
12#include "third_party/WebKit/public/web/WebFrame.h"
13
14namespace extensions {
15
16ExtensionFrameHelper::ExtensionFrameHelper(content::RenderFrame* render_frame,
17                                           Dispatcher* extension_dispatcher)
18    : content::RenderFrameObserver(render_frame),
19      content::RenderFrameObserverTracker<ExtensionFrameHelper>(render_frame),
20      extension_dispatcher_(extension_dispatcher) {}
21
22ExtensionFrameHelper::~ExtensionFrameHelper() {
23}
24
25void ExtensionFrameHelper::WillReleaseScriptContext(
26    v8::Handle<v8::Context> context,
27    int world_id) {
28  extension_dispatcher_->WillReleaseScriptContext(
29      render_frame()->GetWebFrame(), context, world_id);
30}
31
32bool ExtensionFrameHelper::OnMessageReceived(const IPC::Message& message) {
33  bool handled = true;
34  IPC_BEGIN_MESSAGE_MAP(ExtensionFrameHelper, message)
35    IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole,
36                        OnAddMessageToConsole)
37    IPC_MESSAGE_UNHANDLED(handled = false)
38  IPC_END_MESSAGE_MAP()
39  return handled;
40}
41
42void ExtensionFrameHelper::OnAddMessageToConsole(
43    content::ConsoleMessageLevel level,
44    const std::string& message) {
45  console::AddMessage(render_frame()->GetRenderView(), level, message);
46}
47
48}  // namespace extensions
49