1// Copyright (c) 2012 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/chrome_v8_extension_handler.h"
6
7#include "base/logging.h"
8#include "content/public/renderer/render_thread.h"
9#include "extensions/renderer/script_context.h"
10
11using content::RenderThread;
12
13namespace extensions {
14
15ChromeV8ExtensionHandler::ChromeV8ExtensionHandler(ScriptContext* context)
16    : context_(context), routing_id_(MSG_ROUTING_NONE) {
17}
18
19ChromeV8ExtensionHandler::~ChromeV8ExtensionHandler() {
20  if (routing_id_ != MSG_ROUTING_NONE)
21    RenderThread::Get()->RemoveRoute(routing_id_);
22}
23
24int ChromeV8ExtensionHandler::GetRoutingID() {
25  if (routing_id_ == MSG_ROUTING_NONE) {
26    routing_id_ = RenderThread::Get()->GenerateRoutingID();
27    RenderThread::Get()->AddRoute(routing_id_, this);
28  }
29
30  return routing_id_;
31}
32
33void ChromeV8ExtensionHandler::Send(IPC::Message* message) {
34  RenderThread::Get()->Send(message);
35}
36
37}  // namespace extensions
38