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/WebLocalFrame.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// TODO(thestig): Remove scaffolding once this file no longer builds with
29// extensions disabled.
30#if defined(ENABLE_EXTENSIONS)
31  extension_dispatcher_->WillReleaseScriptContext(
32      render_frame()->GetWebFrame(), context, world_id);
33#endif
34}
35
36bool ExtensionFrameHelper::OnMessageReceived(const IPC::Message& message) {
37  bool handled = true;
38  IPC_BEGIN_MESSAGE_MAP(ExtensionFrameHelper, message)
39    IPC_MESSAGE_HANDLER(ExtensionMsg_AddMessageToConsole,
40                        OnAddMessageToConsole)
41    IPC_MESSAGE_UNHANDLED(handled = false)
42  IPC_END_MESSAGE_MAP()
43  return handled;
44}
45
46void ExtensionFrameHelper::OnAddMessageToConsole(
47    content::ConsoleMessageLevel level,
48    const std::string& message) {
49  console::AddMessage(render_frame()->GetRenderView(), level, message);
50}
51
52}  // namespace extensions
53