| Index: components/html_viewer/html_frame.h
|
| diff --git a/components/html_viewer/html_frame.h b/components/html_viewer/html_frame.h
|
| deleted file mode 100644
|
| index dab02ae884606aff2fb8166a8da3315f3e891fe7..0000000000000000000000000000000000000000
|
| --- a/components/html_viewer/html_frame.h
|
| +++ /dev/null
|
| @@ -1,389 +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 COMPONENTS_HTML_VIEWER_HTML_FRAME_H_
|
| -#define COMPONENTS_HTML_VIEWER_HTML_FRAME_H_
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/time/time.h"
|
| -#include "cc/layers/surface_layer.h"
|
| -#include "components/html_viewer/html_frame_tree_manager.h"
|
| -#include "components/html_viewer/replicated_frame_state.h"
|
| -#include "components/mus/public/cpp/input_event_handler.h"
|
| -#include "components/mus/public/cpp/window_observer.h"
|
| -#include "components/web_view/public/interfaces/frame.mojom.h"
|
| -#include "mojo/public/cpp/bindings/binding.h"
|
| -#include "mojo/services/tracing/public/interfaces/tracing.mojom.h"
|
| -#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
|
| -#include "third_party/WebKit/public/platform/WebURLRequest.h"
|
| -#include "third_party/WebKit/public/web/WebFrameClient.h"
|
| -#include "third_party/WebKit/public/web/WebRemoteFrameClient.h"
|
| -#include "third_party/WebKit/public/web/WebSandboxFlags.h"
|
| -#include "third_party/WebKit/public/web/WebTextInputInfo.h"
|
| -
|
| -namespace cc_blink {
|
| -class WebLayerImpl;
|
| -}
|
| -
|
| -namespace blink {
|
| -class WebFrame;
|
| -class WebWidget;
|
| -}
|
| -
|
| -namespace mojo {
|
| -class Rect;
|
| -class Shell;
|
| -}
|
| -
|
| -namespace mus {
|
| -class ScopedWindowPtr;
|
| -class Window;
|
| -}
|
| -
|
| -namespace html_viewer {
|
| -
|
| -class DevToolsAgentImpl;
|
| -class GeolocationClientImpl;
|
| -class HTMLFrameDelegate;
|
| -class HTMLFrameTreeManager;
|
| -class HTMLWidget;
|
| -class TouchHandler;
|
| -class WebLayerTreeViewImpl;
|
| -
|
| -// Frame is used to represent a single frame in the frame tree of a page. The
|
| -// frame is either local or remote. Each Frame is associated with a single
|
| -// HTMLFrameTreeManager and can not be moved to another HTMLFrameTreeManager.
|
| -// Local frames have a mus::Window, remote frames do not.
|
| -//
|
| -// HTMLFrame serves as the FrameClient. It implements it by forwarding the
|
| -// calls to HTMLFrameTreeManager so that HTMLFrameTreeManager can update the
|
| -// frame tree as appropriate.
|
| -//
|
| -// Local frames may share the connection (and client implementation) with an
|
| -// ancestor. This happens when a child frame is created. Once a navigate
|
| -// happens the frame is swapped to a remote frame.
|
| -//
|
| -// Remote frames may become local again if the embed happens in the same
|
| -// process. See HTMLFrameTreeManager for details.
|
| -class HTMLFrame : public blink::WebFrameClient,
|
| - public blink::WebRemoteFrameClient,
|
| - public web_view::mojom::FrameClient,
|
| - public mus::WindowObserver,
|
| - public mus::InputEventHandler {
|
| - public:
|
| - struct CreateParams {
|
| - CreateParams(
|
| - HTMLFrameTreeManager* manager,
|
| - HTMLFrame* parent,
|
| - uint32_t id,
|
| - mus::Window* window,
|
| - const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties,
|
| - HTMLFrameDelegate* delegate)
|
| - : manager(manager),
|
| - parent(parent),
|
| - id(id),
|
| - window(window),
|
| - properties(properties),
|
| - delegate(delegate),
|
| - is_local_create_child(false) {}
|
| - ~CreateParams() {}
|
| -
|
| - HTMLFrameTreeManager* manager;
|
| - HTMLFrame* parent;
|
| - uint32_t id;
|
| - mus::Window* window;
|
| - const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties;
|
| - HTMLFrameDelegate* delegate;
|
| -
|
| - private:
|
| - friend class HTMLFrame;
|
| -
|
| - // True if the creation is the result of createChildFrame(). That is, a
|
| - // local parent is creating a new child frame.
|
| - bool is_local_create_child;
|
| - };
|
| -
|
| - explicit HTMLFrame(CreateParams* params);
|
| -
|
| - // Closes and deletes this Frame.
|
| - void Close();
|
| -
|
| - uint32_t id() const { return id_; }
|
| -
|
| - // Returns the Frame whose id is |id|.
|
| - HTMLFrame* FindFrame(uint32_t id) {
|
| - return const_cast<HTMLFrame*>(
|
| - const_cast<const HTMLFrame*>(this)->FindFrame(id));
|
| - }
|
| - const HTMLFrame* FindFrame(uint32_t id) const;
|
| -
|
| - HTMLFrame* parent() { return parent_; }
|
| -
|
| - const std::vector<HTMLFrame*>& children() { return children_; }
|
| -
|
| - // Returns the WebFrame for this Frame. This is either a WebLocalFrame or
|
| - // WebRemoteFrame.
|
| - blink::WebFrame* web_frame() { return web_frame_; }
|
| -
|
| - // Returns the WebView for this frame, or null if there isn't one. The root
|
| - // has a WebView, the children WebFrameWidgets.
|
| - blink::WebView* web_view();
|
| - blink::WebWidget* GetWebWidget();
|
| -
|
| - // The mus::Window this frame renders to. This is non-null for the local frame
|
| - // the frame tree was created with as well as non-null for any frames created
|
| - // locally.
|
| - mus::Window* window() { return window_; }
|
| -
|
| - HTMLFrameTreeManager* frame_tree_manager() { return frame_tree_manager_; }
|
| -
|
| - // Returns null if the browser side didn't request to setup an agent in this
|
| - // frame.
|
| - DevToolsAgentImpl* devtools_agent() { return devtools_agent_.get(); }
|
| -
|
| - // Returns true if the Frame is local, false if remote.
|
| - bool IsLocal() const;
|
| -
|
| - // Returns true if this or one of the frames descendants is local.
|
| - bool HasLocalDescendant() const;
|
| -
|
| - void LoadRequest(const blink::WebURLRequest& request,
|
| - base::TimeTicks navigation_start_time);
|
| -
|
| - protected:
|
| - ~HTMLFrame() override;
|
| -
|
| - // WebFrameClient methods:
|
| - blink::WebMediaPlayer* createMediaPlayer(
|
| - blink::WebLocalFrame* frame,
|
| - blink::WebMediaPlayer::LoadType load_type,
|
| - const blink::WebURL& url,
|
| - blink::WebMediaPlayerClient* client,
|
| - blink::WebMediaPlayerEncryptedMediaClient* encrypted_client,
|
| - blink::WebContentDecryptionModule* initial_cdm,
|
| - const blink::WebString& sink_id,
|
| - blink::WebMediaSession* media_session) override;
|
| - blink::WebFrame* createChildFrame(
|
| - blink::WebLocalFrame* parent,
|
| - blink::WebTreeScopeType scope,
|
| - const blink::WebString& frame_ame,
|
| - blink::WebSandboxFlags sandbox_flags,
|
| - const blink::WebFrameOwnerProperties& frame_owner_properties) override;
|
| - void frameDetached(blink::WebFrame* frame,
|
| - blink::WebFrameClient::DetachType type) override;
|
| - blink::WebCookieJar* cookieJar(blink::WebLocalFrame* frame) override;
|
| - blink::WebNavigationPolicy decidePolicyForNavigation(
|
| - const NavigationPolicyInfo& info) override;
|
| - bool hasPendingNavigation(blink::WebLocalFrame* frame) override;
|
| - void didHandleOnloadEvents(blink::WebLocalFrame* frame) override;
|
| - void didAddMessageToConsole(const blink::WebConsoleMessage& message,
|
| - const blink::WebString& source_name,
|
| - unsigned source_line,
|
| - const blink::WebString& stack_trace) override;
|
| - void didFinishLoad(blink::WebLocalFrame* frame) override;
|
| - void didNavigateWithinPage(blink::WebLocalFrame* frame,
|
| - const blink::WebHistoryItem& history_item,
|
| - blink::WebHistoryCommitType commit_type) override;
|
| - blink::WebGeolocationClient* geolocationClient() override;
|
| - blink::WebEncryptedMediaClient* encryptedMediaClient() override;
|
| - void didStartLoading(bool to_different_document) override;
|
| - void didStopLoading() override;
|
| - void didChangeLoadProgress(double load_progress) override;
|
| - void dispatchLoad() override;
|
| - void didChangeName(blink::WebLocalFrame* frame,
|
| - const blink::WebString& name) override;
|
| - void didCommitProvisionalLoad(
|
| - blink::WebLocalFrame* frame,
|
| - const blink::WebHistoryItem& item,
|
| - blink::WebHistoryCommitType commit_type) override;
|
| - void didReceiveTitle(blink::WebLocalFrame* frame,
|
| - const blink::WebString& title,
|
| - blink::WebTextDirection direction) override;
|
| - void reportFindInFrameMatchCount(int identifier,
|
| - int count,
|
| - bool finalUpdate) override;
|
| - void reportFindInPageSelection(int identifier,
|
| - int activeMatchOrdinal,
|
| - const blink::WebRect& selection) override;
|
| - bool shouldSearchSingleFrame() override;
|
| -
|
| - private:
|
| - friend class HTMLFrameTreeManager;
|
| -
|
| - // Binds this frame to the specified server. |this| serves as the
|
| - // FrameClient for the server.
|
| - void Bind(web_view::mojom::FramePtr frame,
|
| - mojo::InterfaceRequest<web_view::mojom::FrameClient>
|
| - frame_client_request);
|
| -
|
| - // Sets the appropriate value from the client property. |name| identifies
|
| - // the property and |new_data| the new value.
|
| - void SetValueFromClientProperty(const std::string& name,
|
| - mojo::Array<uint8_t> new_data);
|
| -
|
| - // The local root is the first ancestor (starting at this) that has its own
|
| - // delegate.
|
| - HTMLFrame* GetFirstAncestorWithDelegate();
|
| -
|
| - // Returns the Shell from the first ancestor with a delegate.
|
| - mojo::Shell* GetShell();
|
| -
|
| - // Gets the server Frame to use for this frame.
|
| - web_view::mojom::Frame* GetServerFrame();
|
| -
|
| - void SetWindow(mus::Window* window);
|
| -
|
| - // Creates the appropriate WebWidget implementation for the Frame.
|
| - void CreateRootWebWidget();
|
| - void CreateLocalRootWebWidget(blink::WebLocalFrame* local_frame);
|
| -
|
| - void UpdateFocus();
|
| -
|
| - // Swaps this frame from a local frame to remote frame. |request| is the url
|
| - // to load in the frame.
|
| - void SwapToRemote();
|
| -
|
| - // Swaps this frame from a remote frame to a local frame.
|
| - void SwapToLocal(
|
| - HTMLFrameDelegate* delegate,
|
| - mus::Window* window,
|
| - const mojo::Map<mojo::String, mojo::Array<uint8_t>>& properties);
|
| -
|
| - // Invoked when changing the delegate. This informs the new delegate to take
|
| - // over. This is used when a different connection is going to take over
|
| - // responsibility for the frame.
|
| - void SwapDelegate(HTMLFrameDelegate* delegate);
|
| -
|
| - GlobalState* global_state() { return frame_tree_manager_->global_state(); }
|
| -
|
| - // Returns the focused element if the focused element is in this
|
| - // frame. Returns an empty one otherwise.
|
| - blink::WebElement GetFocusedElement();
|
| -
|
| - // Returns the Frame associated with the specified WebFrame.
|
| - HTMLFrame* FindFrameWithWebFrame(blink::WebFrame* web_frame);
|
| -
|
| - // The various frameDetached() implementations call into this.
|
| - void FrameDetachedImpl(blink::WebFrame* web_frame);
|
| -
|
| - // mus::WindowObserver methods:
|
| - void OnWindowBoundsChanged(mus::Window* window,
|
| - const gfx::Rect& old_bounds,
|
| - const gfx::Rect& new_bounds) override;
|
| - void OnWindowDestroyed(mus::Window* window) override;
|
| - void OnWindowFocusChanged(mus::Window* gained_focus,
|
| - mus::Window* lost_focus) override;
|
| -
|
| - // mus::InputEventHandler:
|
| - void OnWindowInputEvent(mus::Window* window,
|
| - mus::mojom::EventPtr event,
|
| - scoped_ptr<base::Closure>* ack_callback) override;
|
| -
|
| - // web_view::mojom::FrameClient:
|
| - void OnConnect(web_view::mojom::FramePtr server,
|
| - uint32_t change_id,
|
| - uint32_t window_id,
|
| - web_view::mojom::WindowConnectType window_connect_type,
|
| - mojo::Array<web_view::mojom::FrameDataPtr> frame_data,
|
| - int64_t navigation_start_time_ticks,
|
| - const OnConnectCallback& callback) override;
|
| - void OnFrameAdded(uint32_t change_id,
|
| - web_view::mojom::FrameDataPtr frame_data) override;
|
| - void OnFrameRemoved(uint32_t change_id, uint32_t frame_id) override;
|
| - void OnFrameClientPropertyChanged(uint32_t frame_id,
|
| - const mojo::String& name,
|
| - mojo::Array<uint8_t> new_value) override;
|
| - void OnPostMessageEvent(
|
| - uint32_t source_frame_id,
|
| - uint32_t target_frame_id,
|
| - web_view::mojom::HTMLMessageEventPtr serialized_event) override;
|
| - void OnWillNavigate(const mojo::String& origin,
|
| - const OnWillNavigateCallback& callback) override;
|
| - void OnFrameLoadingStateChanged(uint32_t frame_id, bool loading) override;
|
| - void OnDispatchFrameLoadEvent(uint32_t frame_id) override;
|
| - void Find(int32_t request_id,
|
| - const mojo::String& search_text,
|
| - web_view::mojom::FindOptionsPtr options,
|
| - bool wrap_within_frame,
|
| - const FindCallback& callback) override;
|
| - void StopFinding(bool clear_selection) override;
|
| - void HighlightFindResults(int32_t request_id,
|
| - const mojo::String& search_test,
|
| - web_view::mojom::FindOptionsPtr options,
|
| - bool reset) override;
|
| - void StopHighlightingFindResults() override;
|
| -
|
| - // blink::WebRemoteFrameClient:
|
| - void frameDetached(blink::WebRemoteFrameClient::DetachType type) override;
|
| - void postMessageEvent(blink::WebLocalFrame* source_web_frame,
|
| - blink::WebRemoteFrame* target_web_frame,
|
| - blink::WebSecurityOrigin target_origin,
|
| - blink::WebDOMMessageEvent event) override;
|
| - void initializeChildFrame(const blink::WebRect& frame_rect,
|
| - float scale_factor) override;
|
| - void navigate(const blink::WebURLRequest& request,
|
| - bool should_replace_current_entry) override;
|
| - void reload(bool ignore_cache, bool is_client_redirect) override;
|
| - void frameRectsChanged(const blink::WebRect& frame_rect) override;
|
| -
|
| - HTMLFrameTreeManager* frame_tree_manager_;
|
| - HTMLFrame* parent_;
|
| - // |window_| is non-null for local frames or remote frames that were once
|
| - // local.
|
| - mus::Window* window_;
|
| - // The id for this frame. If there is a window, this is the same id as the
|
| - // window has.
|
| - const uint32_t id_;
|
| - std::vector<HTMLFrame*> children_;
|
| - blink::WebFrame* web_frame_;
|
| - scoped_ptr<HTMLWidget> html_widget_;
|
| - scoped_ptr<GeolocationClientImpl> geolocation_client_impl_;
|
| - scoped_ptr<TouchHandler> touch_handler_;
|
| -
|
| - scoped_ptr<cc_blink::WebLayerImpl> web_layer_;
|
| - scoped_refptr<cc::SurfaceLayer> surface_layer_;
|
| -
|
| - HTMLFrameDelegate* delegate_;
|
| - scoped_ptr<mojo::Binding<web_view::mojom::FrameClient>> frame_client_binding_;
|
| - web_view::mojom::FramePtr server_;
|
| -
|
| - ReplicatedFrameState state_;
|
| -
|
| - // If this frame is the result of creating a local frame
|
| - // (createChildFrame()), then |owned_window_| is the Window initially created
|
| - // for the frame. While the frame is local |owned_window_| is the same as
|
| - // |window_|. If this frame becomes remote |window_| is set to null and
|
| - // |owned_window_| remains as the Window initially created for the frame.
|
| - //
|
| - // This is done to ensure the Window isn't prematurely deleted (it must exist
|
| - // as long as the frame is valid). If the Window was deleted as soon as the
|
| - // frame was swapped to remote then the process rendering to the window would
|
| - // be severed.
|
| - scoped_ptr<mus::ScopedWindowPtr> owned_window_;
|
| -
|
| - // This object is only valid in the context of performance tests.
|
| - tracing::StartupPerformanceDataCollectorPtr
|
| - startup_performance_data_collector_;
|
| -
|
| - scoped_ptr<DevToolsAgentImpl> devtools_agent_;
|
| -
|
| - // A navigation request has been sent to the frame server side, and we haven't
|
| - // received response to it.
|
| - bool pending_navigation_;
|
| -
|
| - base::TimeTicks navigation_start_time_;
|
| -
|
| - base::WeakPtrFactory<HTMLFrame> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(HTMLFrame);
|
| -};
|
| -
|
| -} // namespace html_viewer
|
| -
|
| -#endif // COMPONENTS_HTML_VIEWER_HTML_FRAME_H_
|
|
|