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

Unified Diff: components/web_view/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/web_view/find_controller_delegate.h ('k') | components/web_view/frame.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/web_view/frame.h
diff --git a/components/web_view/frame.h b/components/web_view/frame.h
deleted file mode 100644
index ec7c6ca9291a6754688ffa0448bb9889939dfdac..0000000000000000000000000000000000000000
--- a/components/web_view/frame.h
+++ /dev/null
@@ -1,294 +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_WEB_VIEW_FRAME_H_
-#define COMPONENTS_WEB_VIEW_FRAME_H_
-
-#include <stdint.h>
-
-#include <map>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/time/time.h"
-#include "components/mus/common/types.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"
-
-class GURL;
-
-namespace web_view {
-
-class FrameTest;
-class FrameTree;
-class FrameUserData;
-
-namespace mojom {
-class FrameClient;
-}
-
-enum class WindowOwnership {
- OWNS_WINDOW,
- DOESNT_OWN_WINDOW,
-};
-
-// Frame represents an embedding in a frame. Frames own their children.
-// Frames automatically delete themself if the Window the frame is associated
-// with is deleted.
-//
-// In general each Frame has a Window. When a new Frame is created by a client
-// there may be a small amount of time where the Window is not yet known
-// (separate pipes are used for the window and frame, resulting in undefined
-// message ordering). In this case the window is null and will be set once we
-// see the window (OnTreeChanged()).
-//
-// Each frame has an identifier of the app providing the FrameClient
-// (|app_id|). This id is used when servicing a request to navigate the frame.
-// When navigating, if the id of the new app matches that of the existing app,
-// then it is expected that the new FrameClient will take over rendering to the
-// existing window. Because of this a new WindowTreeClient is not obtained and
-// Embed() is not invoked on the Window. The FrameClient can detect this case by
-// the argument |reuse_existing_view| supplied to OnConnect(). Typically the id
-// is that of content handler id, but this is left up to the FrameTreeDelegate
-// to decide.
-class Frame : public mus::WindowObserver, public mojom::Frame {
- public:
- using ClientPropertyMap = std::map<std::string, std::vector<uint8_t>>;
- using FindCallback = mojo::Callback<void(bool)>;
-
- Frame(FrameTree* tree,
- mus::Window* window,
- uint32_t frame_id,
- uint32_t app_id,
- WindowOwnership window_ownership,
- mojom::FrameClient* frame_client,
- scoped_ptr<FrameUserData> user_data,
- const ClientPropertyMap& client_properties);
- ~Frame() override;
-
- void Init(Frame* parent,
- mus::mojom::WindowTreeClientPtr window_tree_client,
- mojo::InterfaceRequest<mojom::Frame> frame_request,
- base::TimeTicks navigation_start_time);
-
- // Walks the Window tree starting at |window| going up returning the first
- // Frame that is associated with |window|. For example, if |window|
- // has a Frame associated with it, then that is returned. Otherwise
- // this checks window->parent() and so on.
- static Frame* FindFirstFrameAncestor(mus::Window* window);
-
- FrameTree* tree() { return tree_; }
-
- Frame* parent() { return parent_; }
- const Frame* parent() const { return parent_; }
-
- mus::Window* window() { return window_; }
- const mus::Window* window() const { return window_; }
-
- uint32_t id() const { return id_; }
-
- uint32_t app_id() const { return app_id_; }
-
- bool loading() const { return loading_; }
-
- const ClientPropertyMap& client_properties() const {
- return client_properties_;
- }
-
- // Finds the descendant with the specified id.
- Frame* FindFrame(uint32_t id) {
- return const_cast<Frame*>(const_cast<const Frame*>(this)->FindFrame(id));
- }
- const Frame* FindFrame(uint32_t id) const;
-
- bool HasAncestor(const Frame* frame) const;
-
- FrameUserData* user_data() { return user_data_.get(); }
-
- const std::vector<Frame*>& children() const { return children_; }
-
- // Returns true if this Frame or any child Frame is loading.
- bool IsLoading() const;
-
- // Returns the sum total of loading progress from this Frame and all of its
- // children, as well as the number of Frames accumulated.
- double GatherProgress(int* frame_count) const;
-
- void Find(int32_t request_id,
- const mojo::String& search_text,
- mojom::FindOptionsPtr options,
- bool wrap_within_frame,
- const FindCallback& callback);
- void StopFinding(bool clear_selection);
- void HighlightFindResults(int32_t request_id,
- const mojo::String& search_text,
- mojom::FindOptionsPtr options,
- bool reset);
- void StopHighlightingFindResults();
-
- private:
- friend class FrameTest;
- friend class FrameTree;
-
- // Identifies whether the FrameClient is from the same app or a different
- // app.
- enum class ClientType {
- // The client is either the root frame, or navigating an existing frame
- // to a different app.
- EXISTING_FRAME_NEW_APP,
-
- // The client is the result of navigating an existing frame in the same
- // app.
- EXISTING_FRAME_SAME_APP,
-
- // The client is the result of a new frame (not the root).
- NEW_CHILD_FRAME
- };
-
- struct FrameUserDataAndBinding;
-
- // Initializes the client by sending it the state of the tree.
- // |data_and_binding| contains the current FrameUserDataAndBinding (if any)
- // and is destroyed after the connection responds to OnConnect().
- //
- // If |client_type| is SAME_APP we can't destroy the existing client
- // (and related data) until we get back the ack from OnConnect(). This way
- // we know the client has completed the switch. If we did not do this it
- // would be possible for the app to see it's existing Frame connection lost
- // (and assume the frame is being torn down) before the OnConnect().
- void InitClient(ClientType client_type,
- scoped_ptr<FrameUserDataAndBinding> data_and_binding,
- mus::mojom::WindowTreeClientPtr window_tree_client,
- mojo::InterfaceRequest<mojom::Frame> frame_request,
- base::TimeTicks navigation_start_time);
-
- // Callback from OnConnect(). This does nothing (other than destroying
- // |data_and_binding|). See InitClient() for details as to why destruction of
- // |data_and_binding| happens after OnConnect().
- static void OnConnectAck(
- scoped_ptr<FrameUserDataAndBinding> data_and_binding);
-
- // Callback from OnEmbed().
- void OnEmbedAck(bool success, mus::ConnectionSpecificId connection_id);
-
- // Callback from Frame::OnWillNavigate(). Completes navigation.
- void OnWillNavigateAck(mojom::FrameClient* frame_client,
- scoped_ptr<FrameUserData> user_data,
- mus::mojom::WindowTreeClientPtr window_tree_client,
- uint32_t app_id,
- base::TimeTicks navigation_start_time);
-
- // Completes a navigation request; swapping the existing FrameClient to the
- // supplied arguments.
- void ChangeClient(mojom::FrameClient* frame_client,
- scoped_ptr<FrameUserData> user_data,
- mus::mojom::WindowTreeClientPtr window_tree_client,
- uint32_t app_id,
- base::TimeTicks navigation_start_time);
-
- void SetWindow(mus::Window* window);
-
- // Adds this to |frames| and recurses through the children calling the
- // same function.
- void BuildFrameTree(std::vector<const Frame*>* frames) const;
-
- void Add(Frame* node);
- void Remove(Frame* node);
-
- // Starts a new navigation to |request|. The navigation proceeds as long
- // as there is a Window and once OnWillNavigate() has returned. If there is
- // no Window the navigation waits until the Window is available.
- void StartNavigate(mojo::URLRequestPtr request);
- void OnCanNavigateFrame(const GURL& url,
- base::TimeTicks navigation_start_time,
- uint32_t app_id,
- mojom::FrameClient* frame_client,
- scoped_ptr<FrameUserData> user_data,
- mus::mojom::WindowTreeClientPtr window_tree_client);
-
- // Notifies the client and all descendants as appropriate.
- void NotifyAdded(const Frame* source,
- const Frame* added_node,
- uint32_t change_id);
- void NotifyRemoved(const Frame* source,
- const Frame* removed_node,
- uint32_t change_id);
- void NotifyClientPropertyChanged(const Frame* source,
- const mojo::String& name,
- const mojo::Array<uint8_t>& value);
- void NotifyFrameLoadingStateChanged(const Frame* frame, bool loading);
- void NotifyDispatchFrameLoadEvent(const Frame* frame);
-
- // mus::WindowObserver:
- void OnTreeChanged(const TreeChangeParams& params) override;
- void OnWindowDestroying(mus::Window* window) override;
- void OnWindowEmbeddedAppDisconnected(mus::Window* window) override;
-
- // mojom::Frame:
- void PostMessageEventToFrame(uint32_t target_frame_id,
- mojom::HTMLMessageEventPtr event) override;
- void LoadingStateChanged(bool loading, double progress) override;
- void TitleChanged(const mojo::String& title) override;
- void DidCommitProvisionalLoad() override;
- void SetClientProperty(const mojo::String& name,
- mojo::Array<uint8_t> value) override;
- void OnCreatedFrame(
- mojo::InterfaceRequest<mojom::Frame> frame_request,
- mojom::FrameClientPtr client,
- uint32_t frame_id,
- mojo::Map<mojo::String, mojo::Array<uint8_t>> client_properties) override;
- void RequestNavigate(mojom::NavigationTargetType target_type,
- uint32_t target_frame_id,
- mojo::URLRequestPtr request) override;
- void DidNavigateLocally(const mojo::String& url) override;
- void DispatchLoadEventToParent() override;
- void OnFindInFrameCountUpdated(int32_t request_id,
- int32_t count,
- bool final_update) override;
- void OnFindInPageSelectionUpdated(int32_t request_id,
- int32_t active_match_ordinal) override;
-
- FrameTree* const tree_;
- // WARNING: this may be null. See class description for details.
- mus::Window* window_;
- // The connection id returned from WindowManager::Embed(). Frames created by
- // way of OnCreatedFrame() inherit the id from the parent.
- mus::ConnectionSpecificId embedded_connection_id_;
- // ID for the frame, which is the same as that of the window.
- const uint32_t id_;
- // ID of the app providing the FrameClient and WindowTreeClient.
- uint32_t app_id_;
- Frame* parent_;
- WindowOwnership window_ownership_;
- std::vector<Frame*> children_;
- scoped_ptr<FrameUserData> user_data_;
-
- mojom::FrameClient* frame_client_;
-
- bool loading_;
- double progress_;
-
- ClientPropertyMap client_properties_;
-
- // StartNavigate() stores the request here if the window isn't available at
- // the time of StartNavigate().
- mojo::URLRequestPtr pending_navigate_;
-
- scoped_ptr<mojo::Binding<mojom::Frame>> frame_binding_;
-
- // True if waiting on callback from FrameClient::OnWillNavigate().
- bool waiting_for_on_will_navigate_ack_;
-
- base::WeakPtrFactory<Frame> embed_weak_ptr_factory_;
-
- base::WeakPtrFactory<Frame> navigate_weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(Frame);
-};
-
-} // namespace web_view
-
-#endif // COMPONENTS_WEB_VIEW_FRAME_H_
« no previous file with comments | « components/web_view/find_controller_delegate.h ('k') | components/web_view/frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698