| Index: mojo/services/view_manager/server_view.h
 | 
| diff --git a/mojo/services/view_manager/server_view.h b/mojo/services/view_manager/server_view.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..05d000c0beed877eb521ca82aec413ec84c7f7c8
 | 
| --- /dev/null
 | 
| +++ b/mojo/services/view_manager/server_view.h
 | 
| @@ -0,0 +1,109 @@
 | 
| +// 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.
 | 
| +
 | 
| +#ifndef SERVICES_VIEW_MANAGER_SERVER_VIEW_H_
 | 
| +#define SERVICES_VIEW_MANAGER_SERVER_VIEW_H_
 | 
| +
 | 
| +#include <vector>
 | 
| +
 | 
| +#include "base/logging.h"
 | 
| +#include "cc/surfaces/surface_id.h"
 | 
| +#include "mojo/services/view_manager/ids.h"
 | 
| +#include "third_party/mojo_services/src/view_manager/public/interfaces/view_manager.mojom.h"
 | 
| +#include "ui/gfx/geometry/rect.h"
 | 
| +#include "ui/gfx/transform.h"
 | 
| +
 | 
| +namespace view_manager {
 | 
| +
 | 
| +class ServerViewDelegate;
 | 
| +
 | 
| +// Server side representation of a view. Delegate is informed of interesting
 | 
| +// events.
 | 
| +//
 | 
| +// It is assumed that all functions that mutate the tree have validated the
 | 
| +// mutation is possible before hand. For example, Reorder() assumes the supplied
 | 
| +// view is a child and not already in position.
 | 
| +class ServerView {
 | 
| + public:
 | 
| +  ServerView(ServerViewDelegate* delegate, const ViewId& id);
 | 
| +  virtual ~ServerView();
 | 
| +
 | 
| +  const ViewId& id() const { return id_; }
 | 
| +
 | 
| +  void Add(ServerView* child);
 | 
| +  void Remove(ServerView* child);
 | 
| +  void Reorder(ServerView* child,
 | 
| +               ServerView* relative,
 | 
| +               mojo::OrderDirection direction);
 | 
| +
 | 
| +  const gfx::Rect& bounds() const { return bounds_; }
 | 
| +  void SetBounds(const gfx::Rect& bounds);
 | 
| +
 | 
| +  const ServerView* parent() const { return parent_; }
 | 
| +  ServerView* parent() { return parent_; }
 | 
| +
 | 
| +  const ServerView* GetRoot() const;
 | 
| +  ServerView* GetRoot() {
 | 
| +    return const_cast<ServerView*>(
 | 
| +        const_cast<const ServerView*>(this)->GetRoot());
 | 
| +  }
 | 
| +
 | 
| +  std::vector<const ServerView*> GetChildren() const;
 | 
| +  std::vector<ServerView*> GetChildren();
 | 
| +
 | 
| +  // Returns true if this contains |view| or is |view|.
 | 
| +  bool Contains(const ServerView* view) const;
 | 
| +
 | 
| +  // Returns true if the window is visible. This does not consider visibility
 | 
| +  // of any ancestors.
 | 
| +  bool visible() const { return visible_; }
 | 
| +  void SetVisible(bool value);
 | 
| +
 | 
| +  float opacity() const { return opacity_; }
 | 
| +  void SetOpacity(float value);
 | 
| +
 | 
| +  const gfx::Transform& transform() const { return transform_; }
 | 
| +  void SetTransform(const gfx::Transform& transform);
 | 
| +
 | 
| +  const std::map<std::string, std::vector<uint8_t>>& properties() const {
 | 
| +    return properties_;
 | 
| +  }
 | 
| +  void SetProperty(const std::string& name, const std::vector<uint8_t>* value);
 | 
| +
 | 
| +  // Returns true if this view is attached to |root| and all ancestors are
 | 
| +  // visible.
 | 
| +  bool IsDrawn(const ServerView* root) const;
 | 
| +
 | 
| +  void SetSurfaceId(cc::SurfaceId surface_id);
 | 
| +  const cc::SurfaceId& surface_id() const { return surface_id_; }
 | 
| +
 | 
| +#if !defined(NDEBUG)
 | 
| +  std::string GetDebugWindowHierarchy() const;
 | 
| +  void BuildDebugInfo(const std::string& depth, std::string* result) const;
 | 
| +#endif
 | 
| +
 | 
| + private:
 | 
| +  typedef std::vector<ServerView*> Views;
 | 
| +
 | 
| +  // Implementation of removing a view. Doesn't send any notification.
 | 
| +  void RemoveImpl(ServerView* view);
 | 
| +
 | 
| +  ServerViewDelegate* delegate_;
 | 
| +  const ViewId id_;
 | 
| +  ServerView* parent_;
 | 
| +  Views children_;
 | 
| +  bool visible_;
 | 
| +  gfx::Rect bounds_;
 | 
| +  cc::SurfaceId surface_id_;
 | 
| +  float opacity_;
 | 
| +  gfx::Transform transform_;
 | 
| +
 | 
| +  std::map<std::string, std::vector<uint8_t>> properties_;
 | 
| +
 | 
| +  DISALLOW_COPY_AND_ASSIGN(ServerView);
 | 
| +};
 | 
| +
 | 
| +}  // namespace view_manager
 | 
| +
 | 
| +#endif  // SERVICES_VIEW_MANAGER_SERVER_VIEW_H_
 | 
| 
 |