| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "components/web_contents_delegate_android/color_chooser_android.h" | 5 #include "components/web_contents_delegate_android/color_chooser_android.h" |
| 6 | 6 |
| 7 #include "base/android/jni_array.h" | 7 #include "base/android/jni_array.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "content/public/browser/android/content_view_core.h" | |
| 10 #include "content/public/browser/web_contents.h" | 9 #include "content/public/browser/web_contents.h" |
| 11 #include "content/public/common/color_suggestion.h" | 10 #include "content/public/common/color_suggestion.h" |
| 12 #include "jni/ColorChooserAndroid_jni.h" | 11 #include "jni/ColorChooserAndroid_jni.h" |
| 12 #include "ui/base/android/window_android.h" |
| 13 | 13 |
| 14 using base::android::ConvertUTF16ToJavaString; | 14 using base::android::ConvertUTF16ToJavaString; |
| 15 | 15 |
| 16 namespace web_contents_delegate_android { | 16 namespace web_contents_delegate_android { |
| 17 | 17 |
| 18 ColorChooserAndroid::ColorChooserAndroid( | 18 ColorChooserAndroid::ColorChooserAndroid( |
| 19 content::WebContents* web_contents, | 19 content::WebContents* web_contents, |
| 20 SkColor initial_color, | 20 SkColor initial_color, |
| 21 const std::vector<content::ColorSuggestion>& suggestions) | 21 const std::vector<content::ColorSuggestion>& suggestions) |
| 22 : web_contents_(web_contents) { | 22 : web_contents_(web_contents) { |
| 23 JNIEnv* env = AttachCurrentThread(); | 23 JNIEnv* env = AttachCurrentThread(); |
| 24 content::ContentViewCore* content_view_core = | |
| 25 content::ContentViewCore::FromWebContents(web_contents); | |
| 26 DCHECK(content_view_core); | |
| 27 | |
| 28 ScopedJavaLocalRef<jobjectArray> suggestions_array; | 24 ScopedJavaLocalRef<jobjectArray> suggestions_array; |
| 29 | 25 |
| 30 if (suggestions.size() > 0) { | 26 if (suggestions.size() > 0) { |
| 31 suggestions_array = Java_ColorChooserAndroid_createColorSuggestionArray( | 27 suggestions_array = Java_ColorChooserAndroid_createColorSuggestionArray( |
| 32 env, suggestions.size()); | 28 env, suggestions.size()); |
| 33 | 29 |
| 34 for (size_t i = 0; i < suggestions.size(); ++i) { | 30 for (size_t i = 0; i < suggestions.size(); ++i) { |
| 35 const content::ColorSuggestion& suggestion = suggestions[i]; | 31 const content::ColorSuggestion& suggestion = suggestions[i]; |
| 36 ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString( | 32 ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString( |
| 37 env, suggestion.label); | 33 env, suggestion.label); |
| 38 Java_ColorChooserAndroid_addToColorSuggestionArray( | 34 Java_ColorChooserAndroid_addToColorSuggestionArray( |
| 39 env, | 35 env, |
| 40 suggestions_array.obj(), | 36 suggestions_array.obj(), |
| 41 i, | 37 i, |
| 42 suggestion.color, | 38 suggestion.color, |
| 43 label.obj()); | 39 label.obj()); |
| 44 } | 40 } |
| 45 } | 41 } |
| 46 j_color_chooser_.Reset(Java_ColorChooserAndroid_createColorChooserAndroid( | 42 j_color_chooser_.Reset(Java_ColorChooserAndroid_createColorChooserAndroid( |
| 47 env, | 43 env, |
| 48 reinterpret_cast<intptr_t>(this), | 44 reinterpret_cast<intptr_t>(this), |
| 49 content_view_core->GetJavaObject().obj(), | 45 web_contents->GetTopLevelNativeWindow()->GetJavaObject().obj(), |
| 50 initial_color, | 46 initial_color, |
| 51 suggestions_array.obj())); | 47 suggestions_array.obj())); |
| 48 if (j_color_chooser_.is_null()) |
| 49 OnColorChosen(env, j_color_chooser_.obj(), initial_color); |
| 52 } | 50 } |
| 53 | 51 |
| 54 ColorChooserAndroid::~ColorChooserAndroid() { | 52 ColorChooserAndroid::~ColorChooserAndroid() { |
| 55 } | 53 } |
| 56 | 54 |
| 57 void ColorChooserAndroid::End() { | 55 void ColorChooserAndroid::End() { |
| 58 if (!j_color_chooser_.is_null()) { | 56 if (!j_color_chooser_.is_null()) { |
| 59 JNIEnv* env = AttachCurrentThread(); | 57 JNIEnv* env = AttachCurrentThread(); |
| 60 Java_ColorChooserAndroid_closeColorChooser(env, j_color_chooser_.obj()); | 58 Java_ColorChooserAndroid_closeColorChooser(env, j_color_chooser_.obj()); |
| 61 } | 59 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 73 } | 71 } |
| 74 | 72 |
| 75 // ---------------------------------------------------------------------------- | 73 // ---------------------------------------------------------------------------- |
| 76 // Native JNI methods | 74 // Native JNI methods |
| 77 // ---------------------------------------------------------------------------- | 75 // ---------------------------------------------------------------------------- |
| 78 bool RegisterColorChooserAndroid(JNIEnv* env) { | 76 bool RegisterColorChooserAndroid(JNIEnv* env) { |
| 79 return RegisterNativesImpl(env); | 77 return RegisterNativesImpl(env); |
| 80 } | 78 } |
| 81 | 79 |
| 82 } // namespace web_contents_delegate_android | 80 } // namespace web_contents_delegate_android |
| OLD | NEW |