1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file.
4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CONTENT_BROWSER_ANDROID_UI_RESOURCE_PROVIDER_IMPL_H_
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CONTENT_BROWSER_ANDROID_UI_RESOURCE_PROVIDER_IMPL_H_
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/containers/hash_tables.h"
96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "content/browser/android/system_ui_resource_manager_impl.h"
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/public/browser/android/ui_resource_provider.h"
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace cc {
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class LayerTreeHost;
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace content {
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class UIResourceClientAndroid;
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class UIResourceProviderImpl : public UIResourceProvider {
21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public:
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  UIResourceProviderImpl();
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual ~UIResourceProviderImpl();
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void SetLayerTreeHost(cc::LayerTreeHost* host);
27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void UIResourcesAreInvalid();
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual cc::UIResourceId CreateUIResource(
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      UIResourceClientAndroid* client) OVERRIDE;
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual void DeleteUIResource(cc::UIResourceId resource_id) OVERRIDE;
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ui::SystemUIResourceManager& GetSystemUIResourceManager();
366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  void SetSupportsETC1NonPowerOfTwo(bool supports_etc1_npot) {
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    supports_etc1_npot_ = supports_etc1_npot;
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool SupportsETC1NonPowerOfTwo() const OVERRIDE;
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private:
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  typedef base::hash_map<cc::UIResourceId, UIResourceClientAndroid*>
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      UIResourceClientMap;
45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  UIResourceClientMap ui_resource_client_map_;
466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  SystemUIResourceManagerImpl system_ui_resource_manager_;
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  cc::LayerTreeHost* host_;
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool supports_etc1_npot_;
49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(UIResourceProviderImpl);
51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)};
52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}  // namespace content
54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif  // CONTENT_BROWSER_ANDROID_UI_RESOURCE_PROVIDER_IMPL_H_
56