15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_ 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <string> 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/common/content_export.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace content { 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class RenderViewHost; 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// This class dispatches messages between DevTools frontend and Delegate 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// which is implemented by the embedder. 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// This allows us to avoid exposing DevTools frontend messages through 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// the content public API. 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class DevToolsFrontendHost { 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Delegate actually handles messages from frontend. 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) class Delegate { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public: 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~Delegate() {} 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Message is coming from frontend to the embedder. 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void HandleMessageFromDevToolsFrontend( 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) = 0; 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Message is coming from frontend to the backend. 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(dgozman): remove this by making one of the possible messages 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // passed via the method above. 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void HandleMessageFromDevToolsFrontendToBackend( 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) = 0; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) }; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Creates a new DevToolsFrontendHost for RenderViewHost where DevTools 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // frontend is loaded. 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_EXPORT static DevToolsFrontendHost* Create( 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) RenderViewHost* frontend_rvh, Delegate* delegate); 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONTENT_EXPORT virtual ~DevToolsFrontendHost() {} 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}; 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace content 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // CONTENT_PUBLIC_BROWSER_DEVTOOLS_FRONTEND_HOST_H_ 49