158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_ 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <map> 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <string> 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/callback.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/gfx/insets.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/gfx/rect.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/gfx/size.h" 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace base { 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class ListValue; 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/** 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Dispatcher for messages sent from the DevTools frontend running in an 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * isolated renderer (on chrome-devtools://) to the embedder in the browser. 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * The messages are sent via InspectorFrontendHost.sendMessageToEmbedder method. 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class DevToolsEmbedderMessageDispatcher { 2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) class Delegate { 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~Delegate() {} 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void ActivateWindow() = 0; 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void CloseWindow() = 0; 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetInspectedPageBounds(const gfx::Rect& rect) = 0; 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void InspectElementCompleted() = 0; 36010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) virtual void InspectedURLChanged(const std::string& url) = 0; 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void MoveWindow(int x, int y) = 0; 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void SetIsDocked(bool is_docked) = 0; 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OpenInNewTab(const std::string& url) = 0; 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void SaveToFile(const std::string& url, 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& content, 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool save_as) = 0; 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void AppendToFile(const std::string& url, 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& content) = 0; 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void RequestFileSystems() = 0; 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void AddFileSystem() = 0; 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void RemoveFileSystem(const std::string& file_system_path) = 0; 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void UpgradeDraggedFileSystemPermissions( 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& file_system_url) = 0; 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void IndexPath(int request_id, 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& file_system_path) = 0; 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void StopIndexing(int request_id) = 0; 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void SearchInPath(int request_id, 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& file_system_path, 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const std::string& query) = 0; 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void SetWhitelistedShortcuts(const std::string& message) = 0; 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ZoomIn() = 0; 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ZoomOut() = 0; 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void ResetZoom() = 0; 60a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual void OpenUrlOnRemoteDeviceAndInspect(const std::string& browser_id, 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const std::string& url) = 0; 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetDeviceCountUpdatesEnabled(bool enabled) = 0; 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void SetDevicesUpdatesEnabled(bool enabled) = 0; 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void SendMessageToBrowser(const std::string& message) = 0; 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) }; 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~DevToolsEmbedderMessageDispatcher() {} 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual bool Dispatch(const std::string& method, 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::ListValue* params, 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::string* error) = 0; 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static DevToolsEmbedderMessageDispatcher* createForDevToolsFrontend( 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Delegate* delegate); 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_DEVTOOLS_DEVTOOLS_EMBEDDER_MESSAGE_DISPATCHER_H_ 78