| Index: chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc
|
| diff --git a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc
|
| index 883f5c080aa0798e21323c96cc63cb24d7c21f17..ad15ba7f465f55f1fa3b2436dde1eb103e470548 100644
|
| --- a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc
|
| +++ b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc
|
| @@ -6,11 +6,16 @@
|
|
|
| #include "base/android/jni_android.h"
|
| #include "base/android/jni_array.h"
|
| +#include "base/android/jni_string.h"
|
| #include "cc/layers/solid_color_layer.h"
|
| #include "chrome/browser/android/compositor/layer/contextual_search_layer.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "chrome/browser/profiles/profile_android.h"
|
| #include "content/public/browser/android/compositor.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "jni/ContextualSearchSceneLayer_jni.h"
|
| +#include "net/base/load_flags.h"
|
| +#include "net/url_request/url_request_context_getter.h"
|
| #include "ui/android/resources/resource_manager_impl.h"
|
| #include "ui/android/view_android.h"
|
| #include "ui/gfx/android/java_bitmap.h"
|
| @@ -23,6 +28,8 @@ namespace android {
|
| ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env,
|
| jobject jobj)
|
| : SceneLayer(env, jobj),
|
| + env_(env),
|
| + object_(env, jobj),
|
| base_page_brightness_(1.0f),
|
| content_container_(cc::Layer::Create()) {
|
| // Responsible for moving the base page without modifying the layer itself.
|
| @@ -94,13 +101,26 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer(
|
| jfloat search_bar_shadow_opacity,
|
| jboolean search_provider_icon_sprite_visible,
|
| jfloat search_provider_icon_sprite_completion_percentage,
|
| + jboolean thumbnail_visible,
|
| + jint thumbnail_size,
|
| + jstring j_thumbnail_url,
|
| jfloat arrow_icon_opacity,
|
| jfloat arrow_icon_rotation,
|
| jfloat close_icon_opacity,
|
| jboolean progress_bar_visible,
|
| jfloat progress_bar_height,
|
| jfloat progress_bar_opacity,
|
| - jint progress_bar_completion) {
|
| + jint progress_bar_completion,
|
| + jobject j_profile) {
|
| +
|
| + // Load the thumbnail if necessary.
|
| + std::string thumbnail_url =
|
| + base::android::ConvertJavaStringToUTF8(env, j_thumbnail_url);
|
| + if (thumbnail_url.compare(thumbnail_url_) != 0) {
|
| + thumbnail_url_ = thumbnail_url;
|
| + FetchThumbnail(j_profile);
|
| + }
|
| +
|
| // NOTE(pedrosimonetti): The WebContents might not exist at this time if
|
| // the Contextual Search Result has not been requested yet. In this case,
|
| // we'll pass NULL to Contextual Search's Layer Tree.
|
| @@ -166,6 +186,8 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer(
|
| search_bar_shadow_opacity,
|
| search_provider_icon_sprite_visible,
|
| search_provider_icon_sprite_completion_percentage,
|
| + thumbnail_visible,
|
| + thumbnail_size,
|
| arrow_icon_opacity,
|
| arrow_icon_rotation,
|
| close_icon_opacity,
|
| @@ -178,6 +200,32 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer(
|
| contextual_search_layer_->layer()->SetHideLayerAndSubtree(false);
|
| }
|
|
|
| +void ContextualSearchSceneLayer::FetchThumbnail(jobject j_profile) {
|
| + if (thumbnail_url_.compare("") == 0) return;
|
| +
|
| + GURL* gurl = new GURL(thumbnail_url_);
|
| + Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
|
| + fetcher_.reset(new chrome::BitmapFetcher(*gurl, this));
|
| + fetcher_->Init(
|
| + profile->GetRequestContext(),
|
| + std::string(),
|
| + net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
|
| + net::LOAD_NORMAL);
|
| + fetcher_->Start();
|
| +}
|
| +
|
| +void ContextualSearchSceneLayer::OnFetchComplete(const GURL& url,
|
| + const SkBitmap* bitmap) {
|
| + bool success = bitmap != NULL && !bitmap->drawsNothing();
|
| + Java_ContextualSearchSceneLayer_onThumbnailFetched(env_,
|
| + object_.obj(),
|
| + success);
|
| +
|
| + if (success) contextual_search_layer_->SetThumbnail(bitmap);
|
| +
|
| + fetcher_.reset(nullptr);
|
| +}
|
| +
|
| void ContextualSearchSceneLayer::SetContentTree(
|
| JNIEnv* env,
|
| const JavaParamRef<jobject>& jobj,
|
|
|