10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file. 40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/basictypes.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/observer_list.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "mojo/services/public/cpp/view_manager/types.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "third_party/skia/include/core/SkColor.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class SkBitmap; 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace mojo { 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace view_manager { 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Node; 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ViewManager; 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ViewObserver; 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Views are owned by the ViewManager. 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass View { 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public: 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) static View* Create(ViewManager* manager); 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void Destroy(); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Id id() const { return id_; } 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Node* node() { return node_; } 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void AddObserver(ViewObserver* observer); 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void RemoveObserver(ViewObserver* observer); 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // TODO(beng): temporary only. 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void SetContents(const SkBitmap& contents); 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) void SetColor(SkColor color); 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private: 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) friend class ViewPrivate; 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) explicit View(ViewManager* manager); 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) View(); 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ~View(); 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void LocalDestroy(); 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Id id_; 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Node* node_; 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ViewManager* manager_; 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ObserverList<ViewObserver> observers_; 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch DISALLOW_COPY_AND_ASSIGN(View); 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}; 560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace view_manager 580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} // namespace mojo 590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_H_ 61