1// Copyright 2014 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 CONTENT_SHELL_IPC_ECHO_H_ 6#define CONTENT_SHELL_IPC_ECHO_H_ 7 8#include <utility> 9#include <vector> 10#include "base/compiler_specific.h" 11#include "base/memory/weak_ptr.h" 12#include "third_party/WebKit/public/web/WebDocument.h" 13 14namespace blink { 15class WebFrame; 16} 17 18namespace IPC { 19class Sender; 20} 21 22namespace content { 23 24// This class is for writing micro benchmarks exercising underlying 25// IPC::Channel using HTML and JavaScript. 26// 27// TODO(morrita): The benchmark effort tries to makesure that 28// IPC::ChannelMojo is as performant as native IPC::Channel 29// implementations. Currently IPC::ChannelMojo is hidden behind 30// "--enable-renderer-mojo-channel". Once it is turned on by default. 31// we no longer need this class and should remove it. 32class IPCEcho : public base::SupportsWeakPtr<IPCEcho> { 33 public: 34 IPCEcho(blink::WebDocument document, IPC::Sender* sender, int routing_id); 35 ~IPCEcho(); 36 37 void RequestEcho(int id, int size); 38 void DidRespondEcho(int id, int size); 39 void Install(blink::WebFrame*); 40 41 int last_echo_id() const { return last_echo_id_; } 42 int last_echo_size() const { return last_echo_size_; } 43 44 blink::WebDocument document_; 45 IPC::Sender* sender_; 46 int routing_id_; 47 int last_echo_id_; 48 int last_echo_size_; 49 50 base::WeakPtrFactory<IPCEcho> weak_factory_; 51 52}; 53 54} // namespace content 55 56#endif // CONTENT_SHELL_IPC_ECHO_DISPATCHER_H_ 57