OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "chrome/browser/android/compositor/scene_layer/contextual_search_scene_
layer.h" | 5 #include "chrome/browser/android/compositor/scene_layer/contextual_search_scene_
layer.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_array.h" | 8 #include "base/android/jni_array.h" |
| 9 #include "base/android/jni_string.h" |
9 #include "cc/layers/solid_color_layer.h" | 10 #include "cc/layers/solid_color_layer.h" |
10 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" | 11 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" |
| 12 #include "chrome/browser/profiles/profile.h" |
| 13 #include "chrome/browser/profiles/profile_android.h" |
11 #include "content/public/browser/android/compositor.h" | 14 #include "content/public/browser/android/compositor.h" |
12 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
13 #include "jni/ContextualSearchSceneLayer_jni.h" | 16 #include "jni/ContextualSearchSceneLayer_jni.h" |
| 17 #include "net/base/load_flags.h" |
| 18 #include "net/url_request/url_request_context_getter.h" |
14 #include "ui/android/resources/resource_manager_impl.h" | 19 #include "ui/android/resources/resource_manager_impl.h" |
15 #include "ui/android/view_android.h" | 20 #include "ui/android/view_android.h" |
16 #include "ui/gfx/android/java_bitmap.h" | 21 #include "ui/gfx/android/java_bitmap.h" |
17 | 22 |
18 using base::android::JavaParamRef; | 23 using base::android::JavaParamRef; |
19 | 24 |
20 namespace chrome { | 25 namespace chrome { |
21 namespace android { | 26 namespace android { |
22 | 27 |
23 ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env, | 28 ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env, |
24 jobject jobj) | 29 jobject jobj) |
25 : SceneLayer(env, jobj), | 30 : SceneLayer(env, jobj), |
| 31 env_(env), |
| 32 object_(env, jobj), |
26 base_page_brightness_(1.0f), | 33 base_page_brightness_(1.0f), |
27 content_container_(cc::Layer::Create()) { | 34 content_container_(cc::Layer::Create()) { |
28 // Responsible for moving the base page without modifying the layer itself. | 35 // Responsible for moving the base page without modifying the layer itself. |
29 content_container_->SetIsDrawable(true); | 36 content_container_->SetIsDrawable(true); |
30 content_container_->SetPosition(gfx::PointF(0.0f, 0.0f)); | 37 content_container_->SetPosition(gfx::PointF(0.0f, 0.0f)); |
31 layer()->AddChild(content_container_); | 38 layer()->AddChild(content_container_); |
32 } | 39 } |
33 | 40 |
34 void ContextualSearchSceneLayer::CreateContextualSearchLayer( | 41 void ContextualSearchSceneLayer::CreateContextualSearchLayer( |
35 JNIEnv* env, | 42 JNIEnv* env, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 jfloat search_context_opacity, | 94 jfloat search_context_opacity, |
88 jfloat search_term_opacity, | 95 jfloat search_term_opacity, |
89 jfloat search_caption_animation_percentage, | 96 jfloat search_caption_animation_percentage, |
90 jboolean search_caption_visible, | 97 jboolean search_caption_visible, |
91 jboolean search_bar_border_visible, | 98 jboolean search_bar_border_visible, |
92 jfloat search_bar_border_height, | 99 jfloat search_bar_border_height, |
93 jboolean search_bar_shadow_visible, | 100 jboolean search_bar_shadow_visible, |
94 jfloat search_bar_shadow_opacity, | 101 jfloat search_bar_shadow_opacity, |
95 jboolean search_provider_icon_sprite_visible, | 102 jboolean search_provider_icon_sprite_visible, |
96 jfloat search_provider_icon_sprite_completion_percentage, | 103 jfloat search_provider_icon_sprite_completion_percentage, |
| 104 jboolean thumbnail_visible, |
| 105 jint thumbnail_size, |
| 106 jstring j_thumbnail_url, |
97 jfloat arrow_icon_opacity, | 107 jfloat arrow_icon_opacity, |
98 jfloat arrow_icon_rotation, | 108 jfloat arrow_icon_rotation, |
99 jfloat close_icon_opacity, | 109 jfloat close_icon_opacity, |
100 jboolean progress_bar_visible, | 110 jboolean progress_bar_visible, |
101 jfloat progress_bar_height, | 111 jfloat progress_bar_height, |
102 jfloat progress_bar_opacity, | 112 jfloat progress_bar_opacity, |
103 jint progress_bar_completion) { | 113 jint progress_bar_completion, |
| 114 jobject j_profile) { |
| 115 |
| 116 // Load the thumbnail if necessary. |
| 117 std::string thumbnail_url = |
| 118 base::android::ConvertJavaStringToUTF8(env, j_thumbnail_url); |
| 119 if (thumbnail_url.compare(thumbnail_url_) != 0) { |
| 120 thumbnail_url_ = thumbnail_url; |
| 121 FetchThumbnail(j_profile); |
| 122 } |
| 123 |
104 // NOTE(pedrosimonetti): The WebContents might not exist at this time if | 124 // NOTE(pedrosimonetti): The WebContents might not exist at this time if |
105 // the Contextual Search Result has not been requested yet. In this case, | 125 // the Contextual Search Result has not been requested yet. In this case, |
106 // we'll pass NULL to Contextual Search's Layer Tree. | 126 // we'll pass NULL to Contextual Search's Layer Tree. |
107 content::WebContents* web_contents = | 127 content::WebContents* web_contents = |
108 content::WebContents::FromJavaWebContents(jweb_contents); | 128 content::WebContents::FromJavaWebContents(jweb_contents); |
109 | 129 |
110 scoped_refptr<cc::Layer> content_layer = | 130 scoped_refptr<cc::Layer> content_layer = |
111 web_contents ? web_contents->GetNativeView()->GetLayer() : nullptr; | 131 web_contents ? web_contents->GetNativeView()->GetLayer() : nullptr; |
112 | 132 |
113 // Fade the base page out. | 133 // Fade the base page out. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 search_context_opacity, | 179 search_context_opacity, |
160 search_term_opacity, | 180 search_term_opacity, |
161 search_caption_animation_percentage, | 181 search_caption_animation_percentage, |
162 search_caption_visible, | 182 search_caption_visible, |
163 search_bar_border_visible, | 183 search_bar_border_visible, |
164 search_bar_border_height, | 184 search_bar_border_height, |
165 search_bar_shadow_visible, | 185 search_bar_shadow_visible, |
166 search_bar_shadow_opacity, | 186 search_bar_shadow_opacity, |
167 search_provider_icon_sprite_visible, | 187 search_provider_icon_sprite_visible, |
168 search_provider_icon_sprite_completion_percentage, | 188 search_provider_icon_sprite_completion_percentage, |
| 189 thumbnail_visible, |
| 190 thumbnail_size, |
169 arrow_icon_opacity, | 191 arrow_icon_opacity, |
170 arrow_icon_rotation, | 192 arrow_icon_rotation, |
171 close_icon_opacity, | 193 close_icon_opacity, |
172 progress_bar_visible, | 194 progress_bar_visible, |
173 progress_bar_height, | 195 progress_bar_height, |
174 progress_bar_opacity, | 196 progress_bar_opacity, |
175 progress_bar_completion); | 197 progress_bar_completion); |
176 | 198 |
177 // Make the layer visible if it is not already. | 199 // Make the layer visible if it is not already. |
178 contextual_search_layer_->layer()->SetHideLayerAndSubtree(false); | 200 contextual_search_layer_->layer()->SetHideLayerAndSubtree(false); |
179 } | 201 } |
180 | 202 |
| 203 void ContextualSearchSceneLayer::FetchThumbnail(jobject j_profile) { |
| 204 if (thumbnail_url_.compare("") == 0) return; |
| 205 |
| 206 GURL* gurl = new GURL(thumbnail_url_); |
| 207 Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); |
| 208 fetcher_.reset(new chrome::BitmapFetcher(*gurl, this)); |
| 209 fetcher_->Init( |
| 210 profile->GetRequestContext(), |
| 211 std::string(), |
| 212 net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
| 213 net::LOAD_NORMAL); |
| 214 fetcher_->Start(); |
| 215 } |
| 216 |
| 217 void ContextualSearchSceneLayer::OnFetchComplete(const GURL& url, |
| 218 const SkBitmap* bitmap) { |
| 219 bool success = bitmap != NULL && !bitmap->drawsNothing(); |
| 220 Java_ContextualSearchSceneLayer_onThumbnailFetched(env_, |
| 221 object_.obj(), |
| 222 success); |
| 223 |
| 224 if (success) contextual_search_layer_->SetThumbnail(bitmap); |
| 225 |
| 226 fetcher_.reset(nullptr); |
| 227 } |
| 228 |
181 void ContextualSearchSceneLayer::SetContentTree( | 229 void ContextualSearchSceneLayer::SetContentTree( |
182 JNIEnv* env, | 230 JNIEnv* env, |
183 const JavaParamRef<jobject>& jobj, | 231 const JavaParamRef<jobject>& jobj, |
184 const JavaParamRef<jobject>& jcontent_tree) { | 232 const JavaParamRef<jobject>& jcontent_tree) { |
185 SceneLayer* content_tree = FromJavaObject(env, jcontent_tree); | 233 SceneLayer* content_tree = FromJavaObject(env, jcontent_tree); |
186 if (!content_tree || !content_tree->layer()) return; | 234 if (!content_tree || !content_tree->layer()) return; |
187 | 235 |
188 if (!content_tree->layer()->parent() | 236 if (!content_tree->layer()->parent() |
189 || (content_tree->layer()->parent()->id() != content_container_->id())) { | 237 || (content_tree->layer()->parent()->id() != content_container_->id())) { |
190 content_container_->AddChild(content_tree->layer()); | 238 content_container_->AddChild(content_tree->layer()); |
(...skipping 20 matching lines...) Expand all Loading... |
211 new ContextualSearchSceneLayer(env, jobj); | 259 new ContextualSearchSceneLayer(env, jobj); |
212 return reinterpret_cast<intptr_t>(tree_provider); | 260 return reinterpret_cast<intptr_t>(tree_provider); |
213 } | 261 } |
214 | 262 |
215 bool RegisterContextualSearchSceneLayer(JNIEnv* env) { | 263 bool RegisterContextualSearchSceneLayer(JNIEnv* env) { |
216 return RegisterNativesImpl(env); | 264 return RegisterNativesImpl(env); |
217 } | 265 } |
218 | 266 |
219 } // namespace android | 267 } // namespace android |
220 } // namespace chrome | 268 } // namespace chrome |
OLD | NEW |