| Index: blimp/engine/feature/engine_render_widget_feature.h
|
| diff --git a/blimp/engine/feature/engine_render_widget_feature.h b/blimp/engine/feature/engine_render_widget_feature.h
|
| deleted file mode 100644
|
| index 4b0fbd1957ee98e6071171d1c1420344e71e5519..0000000000000000000000000000000000000000
|
| --- a/blimp/engine/feature/engine_render_widget_feature.h
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -// Copyright 2015 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.
|
| -
|
| -#ifndef BLIMP_ENGINE_FEATURE_ENGINE_RENDER_WIDGET_FEATURE_H_
|
| -#define BLIMP_ENGINE_FEATURE_ENGINE_RENDER_WIDGET_FEATURE_H_
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <map>
|
| -#include <memory>
|
| -#include <vector>
|
| -
|
| -#include "base/atomic_sequence_num.h"
|
| -#include "base/containers/small_map.h"
|
| -#include "base/macros.h"
|
| -#include "blimp/engine/app/settings_manager.h"
|
| -#include "blimp/net/blimp_message_processor.h"
|
| -#include "blimp/net/input_message_converter.h"
|
| -#include "ui/base/ime/text_input_client.h"
|
| -
|
| -namespace blink {
|
| -class WebGestureEvent;
|
| -}
|
| -
|
| -namespace content {
|
| -class RenderWidgetHost;
|
| -struct FormFieldData;
|
| -}
|
| -
|
| -namespace blimp {
|
| -namespace engine {
|
| -
|
| -// Handles all incoming and outgoing protobuf message types tied to a specific
|
| -// RenderWidget. This includes BlimpMessage::INPUT, BlimpMessage::COMPOSITOR,
|
| -// and BlimpMessage::RENDER_WIDGET messages. Delegates can be added to be
|
| -// notified of incoming messages. This class automatically handles dropping
|
| -// stale BlimpMessage::RENDER_WIDGET messages from the client after a
|
| -// RenderWidgetMessage::INITIALIZE message is sent.
|
| -class EngineRenderWidgetFeature : public BlimpMessageProcessor,
|
| - public SettingsManager::Observer {
|
| - public:
|
| - // A delegate to be notified of specific RenderWidget related incoming events.
|
| - class RenderWidgetMessageDelegate {
|
| - public:
|
| - // Called when the client is sending a WebGestureEvent to the engine.
|
| - virtual void OnWebGestureEvent(
|
| - content::RenderWidgetHost* render_widget_host,
|
| - std::unique_ptr<blink::WebGestureEvent> event) = 0;
|
| -
|
| - // Called when the client sent a CompositorMessage. These messages should
|
| - // be sent to the engine's render process so they can be processed by the
|
| - // RemoteChannel of the compositor.
|
| - virtual void OnCompositorMessageReceived(
|
| - content::RenderWidgetHost* render_widget_host,
|
| - const std::vector<uint8_t>& message) = 0;
|
| - };
|
| -
|
| - explicit EngineRenderWidgetFeature(SettingsManager* settings);
|
| - ~EngineRenderWidgetFeature() override;
|
| -
|
| - void set_render_widget_message_sender(
|
| - std::unique_ptr<BlimpMessageProcessor> message_processor);
|
| -
|
| - void set_input_message_sender(
|
| - std::unique_ptr<BlimpMessageProcessor> message_processor);
|
| -
|
| - void set_compositor_message_sender(
|
| - std::unique_ptr<BlimpMessageProcessor> message_processor);
|
| -
|
| - void set_ime_message_sender(
|
| - std::unique_ptr<BlimpMessageProcessor> message_processor);
|
| -
|
| - // Notifes the client that a new RenderWidget for a particular WebContents has
|
| - // been created. This will trigger the creation of the BlimpCompositor for
|
| - // this widget on the client.
|
| - void OnRenderWidgetCreated(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Notifies the client that the RenderWidget for a particular WebContents has
|
| - // changed. When this is sent the native view on the client becomes bound to
|
| - // the BlimpCompositor for this widget.
|
| - // Since the compositor on the client performs the operations of the view for
|
| - // this widget, this will set the visibility and draw state correctly for this
|
| - // widget.
|
| - // Note: This assumes that this is the RenderWidgetHost for the main frame.
|
| - // Only one RenderWidget can be in initialized state for a tab.
|
| - void OnRenderWidgetInitialized(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - void OnRenderWidgetDeleted(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Notifies the client to show/hide IME.
|
| - void SendShowImeRequest(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host,
|
| - const content::FormFieldData& field);
|
| - void SendHideImeRequest(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Sends a CompositorMessage for |tab_id| to the client.
|
| - void SendCompositorMessage(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host,
|
| - const std::vector<uint8_t>& message);
|
| -
|
| - // Sets a RenderWidgetMessageDelegate to be notified of all incoming
|
| - // RenderWidget related messages for |tab_id| from the client. There can only
|
| - // be one RenderWidgetMessageDelegate per tab.
|
| - void SetDelegate(const int tab_id, RenderWidgetMessageDelegate* delegate);
|
| - void RemoveDelegate(const int tab_id);
|
| -
|
| - // BlimpMessageProcessor implementation.
|
| - void ProcessMessage(std::unique_ptr<BlimpMessage> message,
|
| - const net::CompletionCallback& callback) override;
|
| -
|
| - // Settings::Observer implementation.
|
| - void OnWebPreferencesChanged() override;
|
| -
|
| - private:
|
| - typedef base::SmallMap<std::map<int, RenderWidgetMessageDelegate*> >
|
| - DelegateMap;
|
| -
|
| - typedef base::SmallMap<std::map<content::RenderWidgetHost*, int>>
|
| - RenderWidgetToIdMap;
|
| -
|
| - typedef base::SmallMap<std::map<int, content::RenderWidgetHost*>>
|
| - IdToRenderWidgetMap;
|
| -
|
| - typedef std::pair<RenderWidgetToIdMap, IdToRenderWidgetMap> RenderWidgetMaps;
|
| -
|
| - typedef base::SmallMap<std::map<int, RenderWidgetMaps>> TabMap;
|
| -
|
| - // Returns nullptr if no delegate is found.
|
| - RenderWidgetMessageDelegate* FindDelegate(const int tab_id);
|
| -
|
| - // Adds the RenderWidgetHost to the map and return the render_widget_id.
|
| - int AddRenderWidget(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Deletes the RenderWidgetHost from the map and returns the render_widget_id
|
| - // for the deleted host.
|
| - int DeleteRenderWidget(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Returns the render_widget_id for the RenderWidgetHost. Will return 0U if
|
| - // the host is not found.
|
| - int GetRenderWidgetId(const int tab_id,
|
| - content::RenderWidgetHost* render_widget_host);
|
| -
|
| - // Returns the RenderWidgetHost for the given render_widget_id. Will return
|
| - // nullptr if no host is found.
|
| - content::RenderWidgetHost* GetRenderWidgetHost(const int tab_id,
|
| - const int render_widget_id);
|
| -
|
| - // Sends the text entered by the user to the renderer.
|
| - // The existing text in the box gets replaced by the new text from IME.
|
| - void SetTextFromIME(content::RenderWidgetHost* render_widget_host,
|
| - std::string text,
|
| - bool auto_submit);
|
| -
|
| - DelegateMap delegates_;
|
| - TabMap tabs_;
|
| -
|
| - // A RenderWidgetHost can also be uniquely identified by the
|
| - // <process_id, routing_id> where the process_id is the id for the
|
| - // RenderProcessHost for this widget and the routing_id is the id for the
|
| - // widget.
|
| - // But we generate our own ids to avoid having the render widget protocol tied
|
| - // to always using a combination of these ids, generated by the content layer.
|
| - // By using an AtomicSequenceNumber for identifying render widgets across
|
| - // tabs, we can be sure that there will always be a 1:1 mapping between the
|
| - // render widget and the consumer of the features tied to this widget on the
|
| - // client, which is the BlimpCompositor.
|
| - base::AtomicSequenceNumber next_widget_id_;
|
| -
|
| - InputMessageConverter input_message_converter_;
|
| -
|
| - SettingsManager* settings_manager_;
|
| -
|
| - // Outgoing message processors for RENDER_WIDGET, COMPOSITOR and INPUT types.
|
| - std::unique_ptr<BlimpMessageProcessor> render_widget_message_sender_;
|
| - std::unique_ptr<BlimpMessageProcessor> compositor_message_sender_;
|
| - std::unique_ptr<BlimpMessageProcessor> input_message_sender_;
|
| - std::unique_ptr<BlimpMessageProcessor> ime_message_sender_;
|
| -
|
| - base::WeakPtrFactory<EngineRenderWidgetFeature> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(EngineRenderWidgetFeature);
|
| -};
|
| -
|
| -} // namespace engine
|
| -} // namespace blimp
|
| -
|
| -#endif // BLIMP_ENGINE_FEATURE_ENGINE_RENDER_WIDGET_FEATURE_H_
|
|
|