• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "content/browser/android/ui_resource_provider_impl.h"
6 
7 #include "cc/resources/ui_resource_client.h"
8 #include "cc/trees/layer_tree_host.h"
9 #include "content/public/browser/android/ui_resource_client_android.h"
10 
11 namespace content {
12 
UIResourceProviderImpl()13 UIResourceProviderImpl::UIResourceProviderImpl()
14     : system_ui_resource_manager_(this), host_(NULL),
15       supports_etc1_npot_(false) {
16 
17 }
18 
~UIResourceProviderImpl()19 UIResourceProviderImpl::~UIResourceProviderImpl() {
20   SetLayerTreeHost(NULL);
21 }
22 
SetLayerTreeHost(cc::LayerTreeHost * host)23 void UIResourceProviderImpl::SetLayerTreeHost(cc::LayerTreeHost* host) {
24   if (host_ == host)
25     return;
26   host_ = host;
27   UIResourcesAreInvalid();
28 }
29 
UIResourcesAreInvalid()30 void UIResourceProviderImpl::UIResourcesAreInvalid() {
31   UIResourceClientMap client_map = ui_resource_client_map_;
32   ui_resource_client_map_.clear();
33   for (UIResourceClientMap::iterator iter = client_map.begin();
34        iter != client_map.end();
35        iter++) {
36     iter->second->UIResourceIsInvalid();
37   }
38 }
39 
CreateUIResource(UIResourceClientAndroid * client)40 cc::UIResourceId UIResourceProviderImpl::CreateUIResource(
41     UIResourceClientAndroid* client) {
42   if (!host_)
43     return 0;
44   cc::UIResourceId id = host_->CreateUIResource(client);
45   DCHECK(ui_resource_client_map_.find(id) == ui_resource_client_map_.end());
46 
47   ui_resource_client_map_[id] = client;
48   return id;
49 }
50 
DeleteUIResource(cc::UIResourceId ui_resource_id)51 void UIResourceProviderImpl::DeleteUIResource(cc::UIResourceId ui_resource_id) {
52   UIResourceClientMap::iterator iter =
53       ui_resource_client_map_.find(ui_resource_id);
54   DCHECK(iter != ui_resource_client_map_.end());
55 
56   ui_resource_client_map_.erase(iter);
57 
58   if (!host_)
59     return;
60   host_->DeleteUIResource(ui_resource_id);
61 }
62 
63 ui::SystemUIResourceManager&
GetSystemUIResourceManager()64 UIResourceProviderImpl::GetSystemUIResourceManager() {
65   return system_ui_resource_manager_;
66 }
67 
SupportsETC1NonPowerOfTwo() const68 bool UIResourceProviderImpl::SupportsETC1NonPowerOfTwo() const {
69   return supports_etc1_npot_;
70 }
71 
72 }  // namespace content
73