blob: cf01818602465bfe8e7a847a5d3f507ce2f525c5 [file] [log] [blame]
[email protected]e96226872013-12-06 00:02:371// 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.
4
5#ifndef CHROME_BROWSER_UI_ANDROID_CONTEXT_MENU_HELPER_H_
6#define CHROME_BROWSER_UI_ANDROID_CONTEXT_MENU_HELPER_H_
7
8#include "base/android/jni_android.h"
9#include "base/callback.h"
10#include "base/memory/scoped_ptr.h"
11#include "content/public/browser/web_contents_user_data.h"
12#include "content/public/common/context_menu_params.h"
13
14namespace content {
15struct ContextMenuParams;
16class WebContents;
17}
18
19class ContextMenuHelper
20 : public content::WebContentsUserData<ContextMenuHelper> {
21 public:
22 virtual ~ContextMenuHelper();
23
24 void ShowContextMenu(const content::ContextMenuParams& params);
25
26 void ShowCustomContextMenu(
27 const content::ContextMenuParams& params,
28 const base::Callback<void(int)>& callback);
29
30 void SetPopulator(jobject jpopulator);
31
32 // Methods called from Java via JNI ------------------------------------------
33
34 void OnCustomItemSelected(JNIEnv* env, jobject obj, jint action);
35 void OnStartDownload(JNIEnv* env, jobject obj, jboolean jis_link);
36
37 private:
38 explicit ContextMenuHelper(content::WebContents* web_contents);
39 friend class content::WebContentsUserData<ContextMenuHelper>;
40
41 static base::android::ScopedJavaLocalRef<jobject> CreateJavaContextMenuParams(
42 const content::ContextMenuParams& params);
43
44 base::android::ScopedJavaGlobalRef<jobject> java_obj_;
45 content::WebContents* web_contents_;
46
47 base::Callback<void(int)> context_menu_callback_;
48 content::ContextMenuParams context_menu_params_;
49
50 DISALLOW_COPY_AND_ASSIGN(ContextMenuHelper);
51};
52
53bool RegisterContextMenuHelper(JNIEnv* env);
54
55#endif // CHROME_BROWSER_UI_ANDROID_CONTEXT_MENU_HELPER_H_