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