OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ |
6 #define CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ | 6 #define CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ |
7 | 7 |
8 #include <jni.h> | 8 #include <jni.h> |
9 | 9 |
10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 namespace android { | 30 namespace android { |
31 | 31 |
32 class ThumbnailLayer; | 32 class ThumbnailLayer; |
33 | 33 |
34 // A native component of the Java TabContentManager class. | 34 // A native component of the Java TabContentManager class. |
35 class TabContentManager : public ThumbnailCacheObserver { | 35 class TabContentManager : public ThumbnailCacheObserver { |
36 public: | 36 public: |
37 static TabContentManager* FromJavaObject(jobject jobj); | 37 static TabContentManager* FromJavaObject(jobject jobj); |
38 | 38 |
39 TabContentManager(JNIEnv* env, | 39 TabContentManager(JNIEnv* env, |
40 jobject obj, | 40 jobject obj); |
41 jstring disk_cache_path, | |
42 jint default_cache_size, | |
43 jint approximation_cache_size, | |
44 jint compression_queue_max_size, | |
45 jint write_queue_max_size, | |
46 jboolean use_approximation_thumbnail); | |
47 | 41 |
48 virtual ~TabContentManager(); | 42 virtual ~TabContentManager(); |
49 | 43 |
50 void Destroy(JNIEnv* env, jobject obj); | 44 void Destroy(JNIEnv* env, jobject obj); |
51 | 45 |
52 void SetUIResourceProvider(JNIEnv* env, | 46 void SetUIResourceProvider(JNIEnv* env, |
53 jobject obj, | 47 jobject obj, |
54 jlong ui_resource_provider_ptr); | 48 jlong ui_resource_provider_ptr); |
55 void SetUIResourceProvider(ui::UIResourceProvider* ui_resource_provider); | 49 void SetUIResourceProvider(ui::UIResourceProvider* ui_resource_provider); |
56 | 50 |
57 // Get the live layer from the cache. | 51 // Get the live layer from the cache. |
58 scoped_refptr<cc::Layer> GetLiveLayer(int tab_id); | 52 scoped_refptr<cc::Layer> GetLiveLayer(int tab_id); |
59 | 53 |
60 // Get the static thumbnail from the cache, or the NTP. | 54 // Get the static thumbnail from the cache, or the NTP. |
61 scoped_refptr<ThumbnailLayer> GetStaticLayer(int tab_id, | 55 scoped_refptr<ThumbnailLayer> GetStaticLayer(int tab_id, |
62 bool force_disk_read); | 56 bool force_disk_read); |
63 | 57 |
64 // Should be called when a tab gets a new live layer that should be served | 58 // Should be called when a tab gets a new live layer that should be served |
65 // by the cache to the CompositorView. | 59 // by the cache to the CompositorView. |
66 void AttachLiveLayer(int tab_id, scoped_refptr<cc::Layer> layer); | 60 void AttachLiveLayer(int tab_id, scoped_refptr<cc::Layer> layer); |
67 | 61 |
68 // Should be called when a tab removes a live layer because it should no | 62 // Should be called when a tab removes a live layer because it should no |
69 // longer be served by the CompositorView. If |layer| is NULL, will | 63 // longer be served by the CompositorView. If |layer| is NULL, will |
70 // make sure all live layers are detached. | 64 // make sure all live layers are detached. |
71 void DetachLiveLayer(int tab_id, scoped_refptr<cc::Layer> layer); | 65 void DetachLiveLayer(int tab_id, scoped_refptr<cc::Layer> layer); |
72 | 66 |
73 // Callback for when the thumbnail decompression for tab_id is done. | 67 // Callback for when the thumbnail decompression for tab_id is done. |
74 void OnFinishDecompressThumbnail(int tab_id, bool success, SkBitmap bitmap); | 68 void OnFinishDecompressThumbnail(int tab_id, bool success, SkBitmap bitmap); |
75 // JNI methods. | 69 // JNI methods. |
70 void CreateThumbnailCache(JNIEnv* env, | |
71 jobject obj, | |
72 jstring disk_cache_path, | |
73 jint default_cache_size, | |
74 jint approximation_cache_size, | |
75 jint compression_queue_max_size, | |
76 jint write_queue_max_size, | |
77 jboolean use_approximation_thumbnail); | |
76 jboolean HasFullCachedThumbnail(JNIEnv* env, jobject obj, jint tab_id); | 78 jboolean HasFullCachedThumbnail(JNIEnv* env, jobject obj, jint tab_id); |
77 void CacheTab(JNIEnv* env, | 79 void CacheTab(JNIEnv* env, |
78 jobject obj, | 80 jobject obj, |
79 jobject tab, | 81 jobject tab, |
80 jobject content_view_core, | 82 jobject content_view_core, |
81 jfloat thumbnail_scale); | 83 jfloat thumbnail_scale); |
82 void CacheTabWithBitmap(JNIEnv* env, | 84 void CacheTabWithBitmap(JNIEnv* env, |
83 jobject obj, | 85 jobject obj, |
84 jobject tab, | 86 jobject tab, |
85 jobject bitmap, | 87 jobject bitmap, |
86 jfloat thumbnail_scale); | 88 jfloat thumbnail_scale); |
87 void InvalidateIfChanged(JNIEnv* env, jobject obj, jint tab_id, jstring jurl); | 89 void InvalidateIfChanged(JNIEnv* env, jobject obj, jint tab_id, jstring jurl); |
88 void UpdateVisibleIds(JNIEnv* env, jobject obj, jintArray priority); | 90 void UpdateVisibleIds(JNIEnv* env, jobject obj, jintArray priority); |
89 void RemoveTabThumbnail(JNIEnv* env, jobject obj, jint tab_id); | 91 void RemoveTabThumbnail(JNIEnv* env, jobject obj, jint tab_id); |
90 void RemoveTabThumbnailFromDiskAtAndAboveId(JNIEnv* env, | 92 void RemoveTabThumbnailFromDiskAtAndAboveId(JNIEnv* env, |
91 jobject obj, | 93 jobject obj, |
92 jint min_forbidden_id); | 94 jint min_forbidden_id); |
93 void GetDecompressedThumbnail(JNIEnv* env, jobject obj, jint tab_id); | 95 void GetDecompressedThumbnail(JNIEnv* env, jobject obj, jint tab_id); |
94 | 96 |
95 // ThumbnailCacheObserver implementation; | 97 // ThumbnailCacheObserver implementation; |
96 void OnFinishedThumbnailRead(TabId tab_id) override; | 98 void OnFinishedThumbnailRead(TabId tab_id) override; |
97 | 99 |
98 private: | 100 private: |
99 class TabReadbackRequest; | 101 class TabReadbackRequest; |
100 typedef base::hash_map<int, scoped_refptr<cc::Layer>> LayerMap; | 102 typedef base::hash_map<int, scoped_refptr<cc::Layer>> LayerMap; |
101 typedef base::hash_map<int, scoped_refptr<ThumbnailLayer>> ThumbnailLayerMap; | 103 typedef base::hash_map<int, scoped_refptr<ThumbnailLayer>> ThumbnailLayerMap; |
102 typedef base::ScopedPtrHashMap<int, scoped_ptr<TabReadbackRequest>> | 104 typedef base::ScopedPtrHashMap<int, scoped_ptr<TabReadbackRequest>> |
103 TabReadbackRequestMap; | 105 TabReadbackRequestMap; |
104 | 106 |
107 ThumbnailCache* GetThumbnailCache(); | |
105 void PutThumbnailIntoCache(int tab_id, | 108 void PutThumbnailIntoCache(int tab_id, |
106 float thumbnail_scale, | 109 float thumbnail_scale, |
107 const SkBitmap& bitmap); | 110 const SkBitmap& bitmap); |
108 | 111 |
109 scoped_ptr<ThumbnailCache> thumbnail_cache_; | 112 scoped_ptr<ThumbnailCache> thumbnail_cache_; |
David Trainor- moved to gerrit
2015/05/07 17:57:36
Lots of comments explaining how (not) to access th
Peter Wen
2015/05/07 22:08:10
Acknowledged.
| |
110 ThumbnailLayerMap static_layer_cache_; | 113 ThumbnailLayerMap static_layer_cache_; |
111 LayerMap live_layer_list_; | 114 LayerMap live_layer_list_; |
112 TabReadbackRequestMap pending_tab_readbacks_; | 115 TabReadbackRequestMap pending_tab_readbacks_; |
113 | 116 |
114 JavaObjectWeakGlobalRef weak_java_tab_content_manager_; | 117 JavaObjectWeakGlobalRef weak_java_tab_content_manager_; |
115 base::WeakPtrFactory<TabContentManager> weak_factory_; | 118 base::WeakPtrFactory<TabContentManager> weak_factory_; |
116 | 119 |
117 DISALLOW_COPY_AND_ASSIGN(TabContentManager); | 120 DISALLOW_COPY_AND_ASSIGN(TabContentManager); |
118 }; | 121 }; |
119 | 122 |
120 bool RegisterTabContentManager(JNIEnv* env); | 123 bool RegisterTabContentManager(JNIEnv* env); |
121 | 124 |
122 } // namespace android | 125 } // namespace android |
123 } // namespace chrome | 126 } // namespace chrome |
124 | 127 |
125 #endif // CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ | 128 #endif // CHROME_BROWSER_ANDROID_COMPOSITOR_TAB_CONTENT_MANAGER_H_ |
OLD | NEW |