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
3 // found in the LICENSE file.
5 #include "chrome/browser/android/shortcut_helper.h"
9 #include "base/android/jni_android.h"
10 #include "base/android/jni_string.h"
11 #include "base/basictypes.h"
12 #include "base/location.h"
13 #include "base/strings/string16.h"
14 #include "base/strings/utf_string_conversions.h"
15 #include "chrome/browser/banners/app_banner_settings_helper.h"
16 #include "content/public/browser/browser_thread.h"
17 #include "content/public/browser/web_contents.h"
18 #include "content/public/common/manifest.h"
19 #include "jni/ShortcutHelper_jni.h"
20 #include "ui/gfx/android/java_bitmap.h"
21 #include "ui/gfx/color_analysis.h"
24 using content::Manifest
;
27 void ShortcutHelper::AddShortcutInBackgroundWithSkBitmap(
28 const ShortcutInfo
& info
,
29 const SkBitmap
& icon_bitmap
) {
30 DCHECK_CURRENTLY_ON(content::BrowserThread::IO
);
32 // Send the data to the Java side to create the shortcut.
33 JNIEnv
* env
= base::android::AttachCurrentThread();
34 ScopedJavaLocalRef
<jstring
> java_url
=
35 base::android::ConvertUTF8ToJavaString(env
, info
.url
.spec());
36 ScopedJavaLocalRef
<jstring
> java_user_title
=
37 base::android::ConvertUTF16ToJavaString(env
, info
.user_title
);
38 ScopedJavaLocalRef
<jstring
> java_name
=
39 base::android::ConvertUTF16ToJavaString(env
, info
.name
);
40 ScopedJavaLocalRef
<jstring
> java_short_name
=
41 base::android::ConvertUTF16ToJavaString(env
, info
.short_name
);
42 ScopedJavaLocalRef
<jobject
> java_bitmap
;
43 if (icon_bitmap
.getSize())
44 java_bitmap
= gfx::ConvertToJavaBitmap(&icon_bitmap
);
46 Java_ShortcutHelper_addShortcut(
48 base::android::GetApplicationContext(),
50 java_user_title
.obj(),
52 java_short_name
.obj(),
54 info
.display
== blink::WebDisplayModeStandalone
,
58 info
.background_color
);
61 bool ShortcutHelper::RegisterShortcutHelper(JNIEnv
* env
) {
62 return RegisterNativesImpl(env
);