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

Unified Diff: services/ui/view_manager/view_registry.h

Issue 1679023006: Reify view ownership as a message pipe. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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 | « services/ui/view_manager/view_manager_impl.cc ('k') | services/ui/view_manager/view_registry.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/ui/view_manager/view_registry.h
diff --git a/services/ui/view_manager/view_registry.h b/services/ui/view_manager/view_registry.h
index c0562093b4cda5a11c15539da5b31406a0dbbc8d..3f2b7baf63e95286fd3896cb8a68912fd6779bdd 100644
--- a/services/ui/view_manager/view_registry.h
+++ b/services/ui/view_manager/view_registry.h
@@ -5,6 +5,7 @@
#ifndef SERVICES_UI_VIEW_MANAGER_VIEW_REGISTRY_H_
#define SERVICES_UI_VIEW_MANAGER_VIEW_REGISTRY_H_
+#include <string>
#include <unordered_map>
#include "base/macros.h"
@@ -15,6 +16,7 @@
#include "services/ui/view_manager/view_associate_table.h"
#include "services/ui/view_manager/view_layout_request.h"
#include "services/ui/view_manager/view_state.h"
+#include "services/ui/view_manager/view_stub.h"
#include "services/ui/view_manager/view_tree_state.h"
namespace view_manager {
@@ -40,17 +42,22 @@ class ViewRegistry : public mojo::ui::ViewInspector {
// VIEW MANAGER REQUESTS
// Registers a view and returns its ViewToken.
- mojo::ui::ViewTokenPtr RegisterView(
+ void RegisterView(
mojo::ui::ViewPtr view,
mojo::InterfaceRequest<mojo::ui::ViewHost> view_host_request,
+ mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
const mojo::String& label);
// Registers a view tree.
- mojo::ui::ViewTreeTokenPtr RegisterViewTree(
+ void RegisterViewTree(
mojo::ui::ViewTreePtr view_tree,
mojo::InterfaceRequest<mojo::ui::ViewTreeHost> view_tree_host_request,
const mojo::String& label);
+ // VIEW STUB REQUESTS
+
+ void OnViewResolved(ViewStub* view_stub, mojo::ui::ViewTokenPtr view_token);
+
// VIEW HOST REQUESTS
// Creates a scene for the view, replacing its current scene.
@@ -66,11 +73,14 @@ class ViewRegistry : public mojo::ui::ViewInspector {
// Destroys |parent_state| if an error occurs.
void AddChild(ViewState* parent_state,
uint32_t child_key,
- mojo::ui::ViewTokenPtr child_view_token);
+ mojo::ui::ViewOwnerPtr child_view_owner);
// Removes a child.
// Destroys |parent_state| if an error occurs.
- void RemoveChild(ViewState* parent_state, uint32_t child_key);
+ void RemoveChild(ViewState* parent_state,
+ uint32_t child_key,
+ mojo::InterfaceRequest<mojo::ui::ViewOwner>
+ transferred_view_owner_request);
// Lays out a child and optionally provides its size.
// Destroys |parent_state| if an error occurs.
@@ -85,6 +95,9 @@ class ViewRegistry : public mojo::ui::ViewInspector {
const mojo::String& service_name,
mojo::ScopedMessagePipeHandle client_handle);
+ // Called when one of the view pipes is closed remotely.
+ void OnViewDied(ViewState* view_state, const std::string& reason);
+
// VIEW TREE HOST REQUESTS
// Requests layout.
@@ -95,11 +108,13 @@ class ViewRegistry : public mojo::ui::ViewInspector {
// Destroys |tree_state| if an error occurs.
void SetRoot(ViewTreeState* tree_state,
uint32_t root_key,
- mojo::ui::ViewTokenPtr root_view_token);
+ mojo::ui::ViewOwnerPtr root_view_owner);
// Resets the root of the view tree.
// Destroys |tree_state| if an error occurs.
- void ResetRoot(ViewTreeState* tree_state);
+ void ResetRoot(ViewTreeState* tree_state,
+ mojo::InterfaceRequest<mojo::ui::ViewOwner>
+ transferred_view_owner_request);
// Lays out a view tree's root and optionally provides its size.
// Destroys |tree_state| if an error occurs.
@@ -113,48 +128,45 @@ class ViewRegistry : public mojo::ui::ViewInspector {
const mojo::String& service_name,
mojo::ScopedMessagePipeHandle client_handle);
+ // Called when one of the view tree pipes is closed remotely.
+ void OnViewTreeDied(ViewTreeState* tree_state, const std::string& reason);
+
private:
// LIFETIME
- void OnViewConnectionError(ViewState* view_state);
void UnregisterView(ViewState* view_state);
- void OnViewTreeConnectionError(ViewTreeState* tree_state);
void UnregisterViewTree(ViewTreeState* tree_state);
// TREE MANIPULATION
ViewState* FindView(uint32_t view_token_value);
- void LinkChild(ViewState* parent_state,
- uint32_t child_key,
- ViewState* child_state);
- void LinkChildAsUnavailable(ViewState* parent_state, uint32_t child_key);
- void MarkChildAsUnavailable(ViewState* parent_state, uint32_t child_key);
- void UnlinkChild(ViewState* parent_state,
- ViewState::ChildrenMap::iterator child_it);
-
ViewTreeState* FindViewTree(uint32_t view_tree_token_value);
- void LinkRoot(ViewTreeState* tree_state,
- ViewState* root_state,
- uint32_t root_key);
- void UnlinkRoot(ViewTreeState* tree_state);
+
void HijackView(ViewState* view_state);
- // Must be called before the view is actually unlinked from the tree.
- // Caller is still responsible for actually unlinking the view.
- void ResetStateWhenUnlinking(ViewState* view_state);
+ void AttachViewStubAndNotify(ViewStub* view_stub, ViewState* view_state);
+ void ReleaseViewStubAndNotify(ViewStub* view_stub);
+ void TransferOrUnregisterViewStub(std::unique_ptr<ViewStub> view_stub,
+ mojo::InterfaceRequest<mojo::ui::ViewOwner>
+ transferred_view_owner_request);
+ void UnregisterViewStub(std::unique_ptr<ViewStub> view_stub);
// LAYOUT
- void InvalidateLayout(ViewState* view_state);
- void InvalidateLayoutForChild(ViewState* parent_state, uint32_t child_key);
- void InvalidateLayoutForRoot(ViewTreeState* tree_state);
- void SetLayout(ViewState* view_state,
+ void SetLayout(ViewStub* view_stub,
mojo::ui::ViewLayoutParamsPtr layout_params,
const ViewLayoutCallback& callback);
void EnqueueLayoutRequest(ViewState* view_state,
mojo::ui::ViewLayoutParamsPtr layout_params);
+ void InvalidateLayout(ViewState* view_state);
+ void InvalidateLayoutForChild(ViewState* parent_state, uint32_t child_key);
+ void InvalidateLayoutForRoot(ViewTreeState* tree_state);
+
void IssueNextViewLayoutRequest(ViewState* view_state);
void IssueNextViewTreeLayoutRequest(ViewTreeState* tree_state);
+ void OnViewLayoutResult(base::WeakPtr<ViewState> view_state_weak,
+ mojo::ui::ViewLayoutResultPtr result);
+ void OnViewTreeLayoutResult(base::WeakPtr<ViewTreeState> tree_state_weak);
// SCENE MANAGEMENT
@@ -165,11 +177,6 @@ class ViewRegistry : public mojo::ui::ViewInspector {
void SendChildUnavailable(ViewState* parent_state, uint32_t child_key);
void SendRootUnavailable(ViewTreeState* tree_state, uint32_t root_key);
- void SendViewLayoutRequest(ViewState* view_state);
- void SendViewTreeLayoutRequest(ViewTreeState* tree_state);
- void OnViewLayoutResult(base::WeakPtr<ViewState> view_state_weak,
- mojo::ui::ViewLayoutResultPtr result);
- void OnViewTreeLayoutResult(base::WeakPtr<ViewTreeState> tree_state_weak);
bool IsViewStateRegisteredDebug(ViewState* view_state) {
return view_state && FindView(view_state->view_token()->value);
« no previous file with comments | « services/ui/view_manager/view_manager_impl.cc ('k') | services/ui/view_manager/view_registry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698