1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 6#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 7 8#include "base/basictypes.h" 9#include "base/observer_list.h" 10#include "mojo/services/public/cpp/view_manager/types.h" 11#include "third_party/skia/include/core/SkColor.h" 12 13class SkBitmap; 14 15namespace mojo { 16namespace view_manager { 17 18class Node; 19class ViewManager; 20class ViewObserver; 21 22// Views are owned by the ViewManager. 23class View { 24 public: 25 static View* Create(ViewManager* manager); 26 27 void Destroy(); 28 29 Id id() const { return id_; } 30 Node* node() { return node_; } 31 32 void AddObserver(ViewObserver* observer); 33 void RemoveObserver(ViewObserver* observer); 34 35 // TODO(beng): temporary only. 36 void SetContents(const SkBitmap& contents); 37 void SetColor(SkColor color); 38 39 private: 40 friend class ViewPrivate; 41 42 explicit View(ViewManager* manager); 43 View(); 44 ~View(); 45 46 void LocalDestroy(); 47 48 Id id_; 49 Node* node_; 50 ViewManager* manager_; 51 52 ObserverList<ViewObserver> observers_; 53 54 DISALLOW_COPY_AND_ASSIGN(View); 55}; 56 57} // namespace view_manager 58} // namespace mojo 59 60#endif // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 61