Don't show supervised user as "already on this device" while they're being imported.
[chromium-blink-merge.git] / chrome / browser / ui / android / context_menu_helper.cc
blobfb7df2762d3996800e00beedf6b5ca56abf0d3f9
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/ui/android/context_menu_helper.h"
7 #include "base/android/jni_android.h"
8 #include "base/android/jni_string.h"
9 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers.h"
10 #include "content/public/browser/android/content_view_core.h"
11 #include "content/public/browser/android/download_controller_android.h"
12 #include "content/public/common/context_menu_params.h"
13 #include "jni/ContextMenuHelper_jni.h"
14 #include "jni/ContextMenuParams_jni.h"
15 #include "ui/gfx/geometry/point.h"
17 using base::android::ConvertUTF8ToJavaString;
18 using base::android::ConvertUTF16ToJavaString;
19 using base::android::ScopedJavaLocalRef;
21 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ContextMenuHelper);
23 ContextMenuHelper::ContextMenuHelper(content::WebContents* web_contents)
24 : web_contents_(web_contents) {
25 JNIEnv* env = base::android::AttachCurrentThread();
26 java_obj_.Reset(
27 env,
28 Java_ContextMenuHelper_create(env, reinterpret_cast<long>(this)).obj());
29 DCHECK(!java_obj_.is_null());
32 ContextMenuHelper::~ContextMenuHelper() {
33 JNIEnv* env = base::android::AttachCurrentThread();
34 Java_ContextMenuHelper_destroy(env, java_obj_.obj());
37 void ContextMenuHelper::ShowContextMenu(
38 const content::ContextMenuParams& params) {
39 content::ContentViewCore* content_view_core =
40 content::ContentViewCore::FromWebContents(web_contents_);
42 if (!content_view_core)
43 return;
45 base::android::ScopedJavaLocalRef<jobject> jcontent_view_core(
46 content_view_core->GetJavaObject());
48 if (jcontent_view_core.is_null())
49 return;
51 JNIEnv* env = base::android::AttachCurrentThread();
52 context_menu_params_ = params;
53 Java_ContextMenuHelper_showContextMenu(
54 env,
55 java_obj_.obj(),
56 jcontent_view_core.obj(),
57 ContextMenuHelper::CreateJavaContextMenuParams(params).obj());
60 void ContextMenuHelper::SetPopulator(jobject jpopulator) {
61 JNIEnv* env = base::android::AttachCurrentThread();
62 Java_ContextMenuHelper_setPopulator(env, java_obj_.obj(), jpopulator);
65 base::android::ScopedJavaLocalRef<jobject>
66 ContextMenuHelper::CreateJavaContextMenuParams(
67 const content::ContextMenuParams& params) {
68 GURL sanitizedReferrer = (params.frame_url.is_empty() ?
69 params.page_url : params.frame_url).GetAsReferrer();
71 std::map<std::string, std::string>::const_iterator it =
72 params.properties.find(data_reduction_proxy::chrome_proxy_header());
73 bool image_was_fetched_lo_fi =
74 it != params.properties.end() &&
75 it->second == data_reduction_proxy::chrome_proxy_lo_fi_directive();
77 JNIEnv* env = base::android::AttachCurrentThread();
78 base::android::ScopedJavaLocalRef<jobject> jmenu_info =
79 ContextMenuParamsAndroid::Java_ContextMenuParams_create(
80 env,
81 params.media_type,
82 ConvertUTF8ToJavaString(env, params.page_url.spec()).obj(),
83 ConvertUTF8ToJavaString(env, params.link_url.spec()).obj(),
84 ConvertUTF16ToJavaString(env, params.link_text).obj(),
85 ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(),
86 ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(),
87 ConvertUTF16ToJavaString(env, params.selection_text).obj(),
88 ConvertUTF16ToJavaString(env, params.title_text).obj(),
89 image_was_fetched_lo_fi,
90 params.is_editable,
91 ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(),
92 params.referrer_policy);
94 return jmenu_info;
97 void ContextMenuHelper::OnStartDownload(JNIEnv* env,
98 jobject obj,
99 jboolean jis_link) {
100 content::DownloadControllerAndroid::Get()->StartContextMenuDownload(
101 context_menu_params_,
102 web_contents_,
103 jis_link);
106 bool RegisterContextMenuHelper(JNIEnv* env) {
107 return RegisterNativesImpl(env) &&
108 ContextMenuParamsAndroid::RegisterNativesImpl(env);