Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2677)

Unified Diff: chrome/browser/android/tab_android.cc

Issue 73173002: Add ContextMenu support upstream for Android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix bug in clipboard Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/tab_android.cc
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc
index 3c0c45072a573d8465d97a878f00facd646279ed..a28382b0b07e45824260463721867fda413a51e0 100644
--- a/chrome/browser/android/tab_android.cc
+++ b/chrome/browser/android/tab_android.cc
@@ -30,6 +30,7 @@
#include "chrome/browser/translate/translate_tab_helper.h"
#include "chrome/browser/ui/alternate_error_tab_observer.h"
#include "chrome/browser/ui/android/content_settings/popup_blocked_infobar_delegate.h"
+#include "chrome/browser/ui/android/context_menu_helper.h"
#include "chrome/browser/ui/android/infobars/infobar_container_android.h"
#include "chrome/browser/ui/android/tab_model/tab_model.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
@@ -44,6 +45,7 @@
#include "chrome/browser/ui/toolbar/toolbar_model_impl.h"
#include "components/autofill/content/browser/autofill_driver_impl.h"
#include "content/public/browser/android/content_view_core.h"
+#include "content/public/browser/android/download_controller_android.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
@@ -89,6 +91,7 @@ void BrowserTabContents::AttachTabHelpers(content::WebContents* contents) {
g_browser_process->GetApplicationLocale(),
autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
BookmarkTabHelper::CreateForWebContents(contents);
+ ContextMenuHelper::CreateForWebContents(contents);
CoreTabHelper::CreateForWebContents(contents);
extensions::TabHelper::CreateForWebContents(contents);
FaviconTabHelper::CreateForWebContents(contents);
@@ -288,7 +291,8 @@ void TabAndroid::InitWebContents(JNIEnv* env,
jobject obj,
jboolean incognito,
jobject jcontent_view_core,
- jobject jweb_contents_delegate) {
+ jobject jweb_contents_delegate,
+ jobject jcontext_menu_populator) {
content::ContentViewCore* content_view_core =
content::ContentViewCore::GetNativeContentViewCore(env,
jcontent_view_core);
@@ -300,6 +304,8 @@ void TabAndroid::InitWebContents(JNIEnv* env,
session_tab_id_.set_id(
SessionTabHelper::FromWebContents(web_contents())->session_id().id());
+ ContextMenuHelper::FromWebContents(web_contents())->SetPopulator(
+ jcontext_menu_populator);
WindowAndroidHelper::FromWebContents(web_contents())->
SetWindowAndroid(content_view_core->GetWindowAndroid());
CoreTabHelper::FromWebContents(web_contents())->set_delegate(this);
@@ -399,6 +405,31 @@ void TabAndroid::SetActiveNavigationEntryTitleForUrl(JNIEnv* env,
entry->SetTitle(title);
}
+void TabAndroid::OnContextMenuDownload(JNIEnv* env,
+ jobject obj,
+ jstring jurl,
+ jboolean jis_link) {
+ if (!web_contents())
+ return;
+
+ ContextMenuHelper* context_menu_helper =
+ ContextMenuHelper::FromWebContents(web_contents());
Ted C 2013/11/19 02:44:03 Maybe this could just be moved to ContextMenuHelpe
+
+ if (!context_menu_helper)
+ return;
+
+ const GURL& url = jis_link ?
+ context_menu_helper->GetCurrentContextMenuParams().link_url :
+ context_menu_helper->GetCurrentContextMenuParams().src_url;
+
+ DCHECK(!base::android::ConvertJavaStringToUTF8(env, jurl).compare(
+ url.spec()));
+ content::DownloadControllerAndroid::Get()->StartContextMenuDownload(
+ context_menu_helper->GetCurrentContextMenuParams(),
+ web_contents(),
+ jis_link);
+}
+
bool TabAndroid::RegisterTabAndroid(JNIEnv* env) {
return RegisterNativesImpl(env);
}

Powered by Google App Engine
This is Rietveld 408576698