This source file includes following definitions.
- End
- SetSelectedColor
- OnColorChosen
- RegisterColorChooserAndroid
#include "components/web_contents_delegate_android/color_chooser_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
#include "content/public/browser/android/content_view_core.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_view.h"
#include "content/public/common/color_suggestion.h"
#include "jni/ColorChooserAndroid_jni.h"
using base::android::ConvertUTF16ToJavaString;
namespace web_contents_delegate_android {
ColorChooserAndroid::ColorChooserAndroid(
content::WebContents* web_contents,
SkColor initial_color,
const std::vector<content::ColorSuggestion>& suggestions)
: web_contents_(web_contents) {
JNIEnv* env = AttachCurrentThread();
content::ContentViewCore* content_view_core =
content::ContentViewCore::FromWebContents(web_contents);
DCHECK(content_view_core);
ScopedJavaLocalRef<jobjectArray> suggestions_array;
if (suggestions.size() > 0) {
suggestions_array = Java_ColorChooserAndroid_createColorSuggestionArray(
env, suggestions.size());
for (size_t i = 0; i < suggestions.size(); ++i) {
const content::ColorSuggestion& suggestion = suggestions[i];
ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString(
env, suggestion.label);
Java_ColorChooserAndroid_addToColorSuggestionArray(
env,
suggestions_array.obj(),
i,
suggestion.color,
label.obj());
}
}
j_color_chooser_.Reset(Java_ColorChooserAndroid_createColorChooserAndroid(
env,
reinterpret_cast<intptr_t>(this),
content_view_core->GetJavaObject().obj(),
initial_color,
suggestions_array.obj()));
}
ColorChooserAndroid::~ColorChooserAndroid() {
}
void ColorChooserAndroid::End() {
if (!j_color_chooser_.is_null()) {
JNIEnv* env = AttachCurrentThread();
Java_ColorChooserAndroid_closeColorChooser(env, j_color_chooser_.obj());
}
}
void ColorChooserAndroid::SetSelectedColor(SkColor color) {
}
void ColorChooserAndroid::OnColorChosen(JNIEnv* env, jobject obj, jint color) {
web_contents_->DidChooseColorInColorChooser(color);
web_contents_->DidEndColorChooser();
}
bool RegisterColorChooserAndroid(JNIEnv* env) {
return RegisterNativesImpl(env);
}
}