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 11namespace content { 12 13UIResourceProviderImpl::UIResourceProviderImpl() 14 : system_ui_resource_manager_(this), host_(NULL), 15 supports_etc1_npot_(false) { 16 17} 18 19UIResourceProviderImpl::~UIResourceProviderImpl() { 20 SetLayerTreeHost(NULL); 21} 22 23void UIResourceProviderImpl::SetLayerTreeHost(cc::LayerTreeHost* host) { 24 if (host_ == host) 25 return; 26 host_ = host; 27 UIResourcesAreInvalid(); 28} 29 30void 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 40cc::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 51void 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 63ui::SystemUIResourceManager& 64UIResourceProviderImpl::GetSystemUIResourceManager() { 65 return system_ui_resource_manager_; 66} 67 68bool UIResourceProviderImpl::SupportsETC1NonPowerOfTwo() const { 69 return supports_etc1_npot_; 70} 71 72} // namespace content 73