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

Unified Diff: components/view_manager/server_view.cc

Issue 1344573002: Mandoline: Rename components/view_manager to components/mus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 3 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/view_manager/server_view.h ('k') | components/view_manager/server_view_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/view_manager/server_view.cc
diff --git a/components/view_manager/server_view.cc b/components/view_manager/server_view.cc
deleted file mode 100644
index 8c4f69d80713464a82dc1429807cc3f1feab6dcb..0000000000000000000000000000000000000000
--- a/components/view_manager/server_view.cc
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright 2014 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.
-
-#include "components/view_manager/server_view.h"
-
-#include <inttypes.h>
-
-#include "base/strings/stringprintf.h"
-#include "components/view_manager/server_view_delegate.h"
-#include "components/view_manager/server_view_observer.h"
-#include "components/view_manager/surfaces/surfaces_state.h"
-#include "mojo/converters/geometry/geometry_type_converters.h"
-#include "mojo/converters/surfaces/surfaces_type_converters.h"
-
-namespace view_manager {
-
-namespace {
-
-void CallCallback(const mojo::Closure& callback, cc::SurfaceDrawStatus status) {
- callback.Run();
-}
-
-} // namespace
-
-ServerView::ServerView(ServerViewDelegate* delegate, const ViewId& id)
- : delegate_(delegate),
- id_(id),
- parent_(nullptr),
- visible_(false),
- opacity_(1),
- pending_access_policy_(mojo::ViewTree::ACCESS_POLICY_DEFAULT),
- // Don't notify newly added observers during notification. This causes
- // problems for code that adds an observer as part of an observer
- // notification (such as ServerViewDrawTracker).
- observers_(base::ObserverList<ServerViewObserver>::NOTIFY_EXISTING_ONLY),
- binding_(this) {
- DCHECK(delegate); // Must provide a delegate.
-}
-
-ServerView::~ServerView() {
- FOR_EACH_OBSERVER(ServerViewObserver, observers_, OnWillDestroyView(this));
-
- while (!children_.empty())
- children_.front()->parent()->Remove(children_.front());
-
- if (parent_)
- parent_->Remove(this);
-
- FOR_EACH_OBSERVER(ServerViewObserver, observers_, OnViewDestroyed(this));
-
- // SurfaceFactory's destructor will attempt to return resources which will
- // call back into here and access |client_| so we should destroy
- // |surface_factory_| early on.
- surface_factory_.reset();
-}
-
-void ServerView::AddObserver(ServerViewObserver* observer) {
- observers_.AddObserver(observer);
-}
-
-void ServerView::RemoveObserver(ServerViewObserver* observer) {
- observers_.RemoveObserver(observer);
-}
-
-void ServerView::Bind(mojo::InterfaceRequest<Surface> request,
- mojo::SurfaceClientPtr client) {
- if (binding_.is_bound()) {
- if (surface_factory_) {
- // Destroy frame surfaces submitted by the old client before replacing
- // client_, so those surfaces will be returned to the old client.
- surface_factory_->DestroyAll();
- SetSurfaceId(cc::SurfaceId());
- }
- binding_.Close();
- client_ = nullptr;
- }
- binding_.Bind(request.Pass());
- client_ = client.Pass();
-}
-
-void ServerView::Add(ServerView* child) {
- // We assume validation checks happened already.
- DCHECK(child);
- DCHECK(child != this);
- DCHECK(!child->Contains(this));
- if (child->parent() == this) {
- if (children_.size() == 1)
- return; // Already in the right position.
- Reorder(child, children_.back(), mojo::ORDER_DIRECTION_ABOVE);
- return;
- }
-
- ServerView* old_parent = child->parent();
- FOR_EACH_OBSERVER(ServerViewObserver, child->observers_,
- OnWillChangeViewHierarchy(child, this, old_parent));
-
- if (child->parent())
- child->parent()->RemoveImpl(child);
-
- child->parent_ = this;
- children_.push_back(child);
- FOR_EACH_OBSERVER(ServerViewObserver, child->observers_,
- OnViewHierarchyChanged(child, this, old_parent));
-}
-
-void ServerView::Remove(ServerView* child) {
- // We assume validation checks happened else where.
- DCHECK(child);
- DCHECK(child != this);
- DCHECK(child->parent() == this);
-
- FOR_EACH_OBSERVER(ServerViewObserver, child->observers_,
- OnWillChangeViewHierarchy(child, nullptr, this));
- RemoveImpl(child);
- FOR_EACH_OBSERVER(ServerViewObserver, child->observers_,
- OnViewHierarchyChanged(child, nullptr, this));
-}
-
-void ServerView::Reorder(ServerView* child,
- ServerView* relative,
- mojo::OrderDirection direction) {
- // We assume validation checks happened else where.
- DCHECK(child);
- DCHECK(child->parent() == this);
- DCHECK_GT(children_.size(), 1u);
- children_.erase(std::find(children_.begin(), children_.end(), child));
- Views::iterator i = std::find(children_.begin(), children_.end(), relative);
- if (direction == mojo::ORDER_DIRECTION_ABOVE) {
- DCHECK(i != children_.end());
- children_.insert(++i, child);
- } else if (direction == mojo::ORDER_DIRECTION_BELOW) {
- DCHECK(i != children_.end());
- children_.insert(i, child);
- }
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnViewReordered(this, relative, direction));
-}
-
-void ServerView::SetBounds(const gfx::Rect& bounds) {
- if (bounds_ == bounds)
- return;
-
- const gfx::Rect old_bounds = bounds_;
- bounds_ = bounds;
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnViewBoundsChanged(this, old_bounds, bounds));
-}
-
-const ServerView* ServerView::GetRoot() const {
- return delegate_->GetRootView(this);
-}
-
-std::vector<const ServerView*> ServerView::GetChildren() const {
- std::vector<const ServerView*> children;
- children.reserve(children_.size());
- for (size_t i = 0; i < children_.size(); ++i)
- children.push_back(children_[i]);
- return children;
-}
-
-std::vector<ServerView*> ServerView::GetChildren() {
- // TODO(sky): rename to children() and fix return type.
- return children_;
-}
-
-bool ServerView::Contains(const ServerView* view) const {
- for (const ServerView* parent = view; parent; parent = parent->parent_) {
- if (parent == this)
- return true;
- }
- return false;
-}
-
-void ServerView::SetVisible(bool value) {
- if (visible_ == value)
- return;
-
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnWillChangeViewVisibility(this));
- visible_ = value;
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnViewVisibilityChanged(this));
-}
-
-void ServerView::SetOpacity(float value) {
- if (value == opacity_)
- return;
- opacity_ = value;
- delegate_->OnScheduleViewPaint(this);
-}
-
-void ServerView::SetTransform(const gfx::Transform& transform) {
- if (transform_ == transform)
- return;
-
- transform_ = transform;
- delegate_->OnScheduleViewPaint(this);
-}
-
-void ServerView::SetProperty(const std::string& name,
- const std::vector<uint8_t>* value) {
- auto it = properties_.find(name);
- if (it != properties_.end()) {
- if (value && it->second == *value)
- return;
- } else if (!value) {
- // This property isn't set in |properties_| and |value| is NULL, so there's
- // no change.
- return;
- }
-
- if (value) {
- properties_[name] = *value;
- } else if (it != properties_.end()) {
- properties_.erase(it);
- }
-
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnViewSharedPropertyChanged(this, name, value));
-}
-
-void ServerView::SetTextInputState(const ui::TextInputState& state) {
- const bool changed = !(text_input_state_ == state);
- if (changed) {
- text_input_state_ = state;
- // keyboard even if the state is not changed. So we have to notify
- // |observers_|.
- FOR_EACH_OBSERVER(ServerViewObserver, observers_,
- OnViewTextInputStateChanged(this, state));
- }
-}
-
-bool ServerView::IsDrawn() const {
- const ServerView* root = delegate_->GetRootView(this);
- if (!root || !root->visible())
- return false;
- const ServerView* view = this;
- while (view && view != root && view->visible())
- view = view->parent();
- return root == view;
-}
-
-void ServerView::SetSurfaceId(cc::SurfaceId surface_id) {
- surface_id_ = surface_id;
- delegate_->OnScheduleViewPaint(this);
-}
-
-void ServerView::SubmitCompositorFrame(
- mojo::CompositorFramePtr frame,
- const SubmitCompositorFrameCallback& callback) {
- gfx::Size frame_size = frame->passes[0]->output_rect.To<gfx::Rect>().size();
- // Create Surfaces state on demand.
- if (!surface_factory_) {
- surface_factory_.reset(
- new cc::SurfaceFactory(delegate_->GetSurfacesState()->manager(), this));
- }
- if (!surface_id_allocator_) {
- surface_id_allocator_.reset(
- new cc::SurfaceIdAllocator(
- delegate_->GetSurfacesState()->next_id_namespace()));
- }
- if (surface_id().is_null()) {
- // Create a Surface ID for the first time for this view.
- cc::SurfaceId surface_id(surface_id_allocator_->GenerateId());
- surface_factory_->Create(surface_id);
- SetSurfaceId(surface_id);
- } else {
- // If the size of the CompostiorFrame has changed then destroy the existing
- // Surface and create a new one of the appropriate size.
- if (frame_size != last_submitted_frame_size()) {
- surface_factory_->Destroy(surface_id());
- cc::SurfaceId surface_id(surface_id_allocator_->GenerateId());
- surface_factory_->Create(surface_id);
- SetSurfaceId(surface_id);
- }
- }
- surface_factory_->SubmitCompositorFrame(
- surface_id(),
- delegate_->UpdateViewTreeFromCompositorFrame(frame),
- base::Bind(&CallCallback, callback));
- delegate_->GetSurfacesState()->scheduler()->SetNeedsDraw();
- last_submitted_frame_size_ = frame_size;
-}
-
-#if !defined(NDEBUG)
-std::string ServerView::GetDebugWindowHierarchy() const {
- std::string result;
- BuildDebugInfo(std::string(), &result);
- return result;
-}
-
-void ServerView::BuildDebugInfo(const std::string& depth,
- std::string* result) const {
- *result += base::StringPrintf(
- "%sid=%d,%d visible=%s bounds=%d,%d %dx%d surface_id=%" PRIu64 "\n",
- depth.c_str(), static_cast<int>(id_.connection_id),
- static_cast<int>(id_.view_id), visible_ ? "true" : "false", bounds_.x(),
- bounds_.y(), bounds_.width(), bounds_.height(), surface_id_.id);
- for (const ServerView* child : children_)
- child->BuildDebugInfo(depth + " ", result);
-}
-#endif
-
-void ServerView::ReturnResources(
- const cc::ReturnedResourceArray& resources) {
- if (!client_)
- return;
- client_->ReturnResources(
- mojo::Array<mojo::ReturnedResourcePtr>::From(resources));
-}
-
-void ServerView::RemoveImpl(ServerView* view) {
- view->parent_ = NULL;
- children_.erase(std::find(children_.begin(), children_.end(), view));
-}
-
-} // namespace view_manager
« no previous file with comments | « components/view_manager/server_view.h ('k') | components/view_manager/server_view_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698