// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/shell/renderer/shell_render_view_observer.h"

#include "base/command_line.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
#include "content/public/renderer/render_view_observer.h"
#include "content/shell/common/shell_messages.h"
#include "content/shell/common/shell_switches.h"
#include "content/shell/renderer/ipc_echo.h"
#include "third_party/WebKit/public/web/WebTestingSupport.h"
#include "third_party/WebKit/public/web/WebView.h"

namespace content {

ShellRenderViewObserver::ShellRenderViewObserver(RenderView* render_view)
    : RenderViewObserver(render_view) {
}

ShellRenderViewObserver::~ShellRenderViewObserver() {
}

void ShellRenderViewObserver::DidClearWindowObject(
    blink::WebLocalFrame* frame) {
  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
          switches::kExposeInternalsForTesting)) {
    blink::WebTestingSupport::injectInternalsObject(frame);
  }

  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
          switches::kExposeIpcEcho)) {
    RenderView* view = render_view();
    if (!ipc_echo_)
      ipc_echo_.reset(new IPCEcho(view->GetWebView()->mainFrame()->document(),
                                  RenderThread::Get(), view->GetRoutingID()));
    ipc_echo_->Install(view->GetWebView()->mainFrame());
  }
}

bool ShellRenderViewObserver::OnMessageReceived(const IPC::Message& message) {
  bool handled = true;
  IPC_BEGIN_MESSAGE_MAP(ShellRenderViewObserver, message)
    IPC_MESSAGE_HANDLER(ShellViewMsg_EchoPong, OnEchoPong)
    IPC_MESSAGE_UNHANDLED(handled = false)
  IPC_END_MESSAGE_MAP()

  return handled;
}

void ShellRenderViewObserver::OnEchoPong(int id, const std::string& body) {
  ipc_echo_->DidRespondEcho(id, body.size());
}

}  // namespace content
