OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/web_contents/web_contents_android.h" | 5 #include "content/browser/web_contents/web_contents_android.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
10 #include "base/android/jni_array.h" | 10 #include "base/android/jni_array.h" |
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
666 const JavaParamRef<jobject>& obj) { | 666 const JavaParamRef<jobject>& obj) { |
667 static_cast<WebContentsImpl*>(web_contents_) | 667 static_cast<WebContentsImpl*>(web_contents_) |
668 ->NotifyContextMenuClosed(CustomContextMenuContext()); | 668 ->NotifyContextMenuClosed(CustomContextMenuContext()); |
669 } | 669 } |
670 | 670 |
671 void WebContentsAndroid::ReloadLoFiImages(JNIEnv* env, | 671 void WebContentsAndroid::ReloadLoFiImages(JNIEnv* env, |
672 const JavaParamRef<jobject>& obj) { | 672 const JavaParamRef<jobject>& obj) { |
673 static_cast<WebContentsImpl*>(web_contents_)->ReloadLoFiImages(); | 673 static_cast<WebContentsImpl*>(web_contents_)->ReloadLoFiImages(); |
674 } | 674 } |
675 | 675 |
676 void WebContentsAndroid::DownloadImage( | |
677 JNIEnv* env, | |
678 const base::android::JavaParamRef<jobject>& obj, | |
679 const base::android::JavaParamRef<jstring>& jurl, | |
680 jboolean is_fav_icon, | |
681 jint max_bitmap_size, | |
682 jboolean bypass_cache, | |
683 const base::android::JavaParamRef<jobject>& jcallback) { | |
684 GURL url(base::android::ConvertJavaStringToUTF8(env, jurl)); | |
685 web_contents_->DownloadImage( | |
686 url, is_fav_icon, max_bitmap_size, bypass_cache, | |
687 base::Bind(&WebContentsAndroid::OnFinishDownloadImage, | |
688 weak_factory_.GetWeakPtr(), | |
689 base::Owned(new ScopedJavaGlobalRef<jobject>( | |
690 env, obj)), | |
691 base::Owned(new ScopedJavaGlobalRef<jobject>( | |
692 env, jcallback)))); | |
693 } | |
694 | |
676 void WebContentsAndroid::OnFinishGetContentBitmap( | 695 void WebContentsAndroid::OnFinishGetContentBitmap( |
677 ScopedJavaGlobalRef<jobject>* obj, | 696 ScopedJavaGlobalRef<jobject>* obj, |
678 ScopedJavaGlobalRef<jobject>* callback, | 697 ScopedJavaGlobalRef<jobject>* callback, |
679 const SkBitmap& bitmap, | 698 const SkBitmap& bitmap, |
680 ReadbackResponse response) { | 699 ReadbackResponse response) { |
681 JNIEnv* env = base::android::AttachCurrentThread(); | 700 JNIEnv* env = base::android::AttachCurrentThread(); |
682 ScopedJavaLocalRef<jobject> java_bitmap; | 701 ScopedJavaLocalRef<jobject> java_bitmap; |
683 if (response == READBACK_SUCCESS) | 702 if (response == READBACK_SUCCESS) |
684 java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); | 703 java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); |
685 Java_WebContentsImpl_onGetContentBitmapFinished(env, | 704 Java_WebContentsImpl_onGetContentBitmapFinished(env, |
686 obj->obj(), | 705 obj->obj(), |
687 callback->obj(), | 706 callback->obj(), |
688 java_bitmap.obj(), | 707 java_bitmap.obj(), |
689 response); | 708 response); |
690 } | 709 } |
691 | 710 |
711 void WebContentsAndroid::OnFinishDownloadImage( | |
712 base::android::ScopedJavaGlobalRef<jobject>* obj, | |
713 base::android::ScopedJavaGlobalRef<jobject>* callback, | |
714 int id, | |
715 int http_status_code, | |
716 const GURL& url, | |
717 const std::vector<SkBitmap>& bitmaps, | |
718 const std::vector<gfx::Size>& sizes) { | |
719 JNIEnv* env = base::android::AttachCurrentThread(); | |
720 ScopedJavaLocalRef<jobject> jbitmaps = | |
721 Java_WebContentsImpl_createBitmapList(env); | |
722 ScopedJavaLocalRef<jobject> jsizes = | |
723 Java_WebContentsImpl_createSizeList(env); | |
724 ScopedJavaLocalRef<jstring> jurl = | |
725 base::android::ConvertUTF8ToJavaString(env, url.spec()); | |
726 | |
727 for (const SkBitmap& bitmap : bitmaps) { | |
728 ScopedJavaLocalRef<jobject> jbitmap = gfx::ConvertToJavaBitmap(&bitmap); | |
Ted C
2016/06/03 16:44:09
forgive my ignorance (and for my education), but h
Zhiqiang Zhang (Slow)
2016/06/03 18:53:51
Yes, .ico files can contain multiple images of dif
| |
729 Java_WebContentsImpl_addToBitmapList(env, jbitmaps.obj(), jbitmap.obj()); | |
Ted C
2016/06/03 16:44:09
This is the only really sad line. Converting to j
Zhiqiang Zhang (Slow)
2016/06/03 18:53:51
Added comments about this.
| |
730 } | |
731 for (const gfx::Size& size : sizes) { | |
732 Java_WebContentsImpl_createSizeAndAddToList( | |
733 env, jsizes.obj(), size.width(), size.height()); | |
734 } | |
735 Java_WebContentsImpl_onDownloadImageFinished( | |
736 env, obj->obj(), callback->obj(), id, | |
737 http_status_code, jurl.obj(), jbitmaps.obj(), jsizes.obj()); | |
738 } | |
692 } // namespace content | 739 } // namespace content |
OLD | NEW |