Home | History | Annotate | Download | only in android
      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 
     13 UIResourceProviderImpl::UIResourceProviderImpl() : host_(NULL) {
     14 }
     15 
     16 UIResourceProviderImpl::~UIResourceProviderImpl() {
     17   SetLayerTreeHost(NULL);
     18 }
     19 
     20 void UIResourceProviderImpl::SetLayerTreeHost(cc::LayerTreeHost* host) {
     21   if (host_ == host)
     22     return;
     23   host_ = host;
     24   UIResourcesAreInvalid();
     25 }
     26 
     27 void UIResourceProviderImpl::UIResourcesAreInvalid() {
     28   UIResourceClientMap client_map = ui_resource_client_map_;
     29   ui_resource_client_map_.clear();
     30   for (UIResourceClientMap::iterator iter = client_map.begin();
     31        iter != client_map.end();
     32        iter++) {
     33     iter->second->UIResourceIsInvalid();
     34   }
     35 }
     36 
     37 cc::UIResourceId UIResourceProviderImpl::CreateUIResource(
     38     UIResourceClientAndroid* client) {
     39   if (!host_)
     40     return 0;
     41   cc::UIResourceId id = host_->CreateUIResource(client);
     42   DCHECK(ui_resource_client_map_.find(id) == ui_resource_client_map_.end());
     43 
     44   ui_resource_client_map_[id] = client;
     45   return id;
     46 }
     47 
     48 void UIResourceProviderImpl::DeleteUIResource(cc::UIResourceId ui_resource_id) {
     49   UIResourceClientMap::iterator iter =
     50       ui_resource_client_map_.find(ui_resource_id);
     51   DCHECK(iter != ui_resource_client_map_.end());
     52 
     53   ui_resource_client_map_.erase(iter);
     54 
     55   if (!host_)
     56     return;
     57   host_->DeleteUIResource(ui_resource_id);
     58 }
     59 
     60 }  // namespace content
     61