Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc

Issue 2322793002: [Contextual Search] Fetch and display thumbnails returned in resolution response (Closed)
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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_ = 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_->~BitmapFetcher();
mdjones 2016/09/08 21:31:28 I think this would be "delete fetcher_;". However,
Theresa 2016/09/08 22:28:52 Done. I didn't know about std::unique_ptr's -- th
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698