Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: components/html_viewer/html_frame.h

Issue 1677293002: Bye bye Mandoline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: moar Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/html_viewer/html_factory.h ('k') | components/html_viewer/html_frame.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « components/html_viewer/html_factory.h ('k') | components/html_viewer/html_frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698