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 |