summaryrefslogtreecommitdiffstats
path: root/android_webview/native
diff options
context:
space:
mode:
authortorne <torne@chromium.org>2015-12-04 06:10:11 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-04 14:11:14 +0000
commit5728d85d64e4e6ff62c520cb2ddcf17cf17e7aaa (patch)
treeb96092cd890aac99fa13aa7e11d22fef3e18fcf0 /android_webview/native
parent91f34c5d7de95f013d3023ab0a2664e3358710e9 (diff)
downloadchromium_src-5728d85d64e4e6ff62c520cb2ddcf17cf17e7aaa.zip
chromium_src-5728d85d64e4e6ff62c520cb2ddcf17cf17e7aaa.tar.gz
chromium_src-5728d85d64e4e6ff62c520cb2ddcf17cf17e7aaa.tar.bz2
Pass method parameters as JavaParamRef in android_webview.
Pass all object parameters to JNI methods in JavaParamRef<> wrappers. This matches previous changes made to do this for JNI non-method functions. BUG=506850 Review URL: https://codereview.chromium.org/1492703004 Cr-Commit-Position: refs/heads/master@{#363198}
Diffstat (limited to 'android_webview/native')
-rw-r--r--android_webview/native/aw_autofill_client.cc2
-rw-r--r--android_webview/native/aw_autofill_client.h4
-rw-r--r--android_webview/native/aw_contents.cc204
-rw-r--r--android_webview/native/aw_contents.h218
-rw-r--r--android_webview/native/aw_contents_client_bridge.cc30
-rw-r--r--android_webview/native/aw_contents_client_bridge.h21
-rw-r--r--android_webview/native/aw_contents_client_bridge_unittest.cc10
-rw-r--r--android_webview/native/aw_http_auth_handler.cc8
-rw-r--r--android_webview/native/aw_http_auth_handler.h7
-rw-r--r--android_webview/native/aw_message_port_service_impl.cc18
-rw-r--r--android_webview/native/aw_message_port_service_impl.h16
-rw-r--r--android_webview/native/aw_pdf_exporter.cc4
-rw-r--r--android_webview/native/aw_pdf_exporter.h4
-rw-r--r--android_webview/native/aw_picture.cc10
-rw-r--r--android_webview/native/aw_picture.h10
-rw-r--r--android_webview/native/aw_quota_manager_bridge_impl.cc21
-rw-r--r--android_webview/native/aw_quota_manager_bridge_impl.h24
-rw-r--r--android_webview/native/aw_settings.cc36
-rw-r--r--android_webview/native/aw_settings.h37
-rw-r--r--android_webview/native/permission/aw_permission_request.cc5
-rw-r--r--android_webview/native/permission/aw_permission_request.h6
21 files changed, 454 insertions, 241 deletions
diff --git a/android_webview/native/aw_autofill_client.cc b/android_webview/native/aw_autofill_client.cc
index 2b2c2667..911571a 100644
--- a/android_webview/native/aw_autofill_client.cc
+++ b/android_webview/native/aw_autofill_client.cc
@@ -194,7 +194,7 @@ bool AwAutofillClient::IsContextSecure(const GURL& form_origin) {
}
void AwAutofillClient::SuggestionSelected(JNIEnv* env,
- jobject object,
+ const JavaParamRef<jobject>& object,
jint position) {
if (delegate_) {
delegate_->DidAcceptSuggestion(suggestions_[position].value,
diff --git a/android_webview/native/aw_autofill_client.h b/android_webview/native/aw_autofill_client.h
index c869ddb..b4278ed 100644
--- a/android_webview/native/aw_autofill_client.h
+++ b/android_webview/native/aw_autofill_client.h
@@ -96,7 +96,9 @@ class AwAutofillClient : public autofill::AutofillClient,
void OnFirstUserGestureObserved() override;
bool IsContextSecure(const GURL& form_origin) override;
- void SuggestionSelected(JNIEnv* env, jobject obj, jint position);
+ void SuggestionSelected(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint position);
private:
AwAutofillClient(content::WebContents* web_contents);
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index 8ec6260..a3bcf2f 100644
--- a/android_webview/native/aw_contents.cc
+++ b/android_webview/native/aw_contents.cc
@@ -213,13 +213,14 @@ AwContents::AwContents(scoped_ptr<WebContents> web_contents)
AwContentsLifecycleNotifier::OnWebViewCreated();
}
-void AwContents::SetJavaPeers(JNIEnv* env,
- jobject obj,
- jobject aw_contents,
- jobject web_contents_delegate,
- jobject contents_client_bridge,
- jobject io_thread_client,
- jobject intercept_navigation_delegate) {
+void AwContents::SetJavaPeers(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& aw_contents,
+ const JavaParamRef<jobject>& web_contents_delegate,
+ const JavaParamRef<jobject>& contents_client_bridge,
+ const JavaParamRef<jobject>& io_thread_client,
+ const JavaParamRef<jobject>& intercept_navigation_delegate) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// The |aw_content| param is technically spurious as it duplicates |obj| but
// is passed over anyway to make the binding more explicit.
@@ -234,8 +235,8 @@ void AwContents::SetJavaPeers(JNIEnv* env,
AwContentsClientBridgeBase::Associate(web_contents_.get(),
contents_client_bridge_.get());
- AwContentsIoThreadClientImpl::Associate(
- web_contents_.get(), ScopedJavaLocalRef<jobject>(env, io_thread_client));
+ AwContentsIoThreadClientImpl::Associate(web_contents_.get(),
+ io_thread_client);
InterceptNavigationDelegate::Associate(
web_contents_.get(),
@@ -303,8 +304,9 @@ AwContents::~AwContents() {
AwContentsLifecycleNotifier::OnWebViewDestroyed();
}
-base::android::ScopedJavaLocalRef<jobject>
-AwContents::GetWebContents(JNIEnv* env, jobject obj) {
+base::android::ScopedJavaLocalRef<jobject> AwContents::GetWebContents(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(web_contents_);
if (!web_contents_)
@@ -313,7 +315,7 @@ AwContents::GetWebContents(JNIEnv* env, jobject obj) {
return web_contents_->GetJavaWebContents();
}
-void AwContents::Destroy(JNIEnv* env, jobject obj) {
+void AwContents::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
java_ref_.reset();
delete this;
}
@@ -357,7 +359,8 @@ jint GetNativeInstanceCount(JNIEnv* env, const JavaParamRef<jclass>&) {
return base::subtle::NoBarrier_Load(&g_instance_count);
}
-jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env, jobject obj) {
+jlong AwContents::GetAwDrawGLViewContext(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return reinterpret_cast<intptr_t>(
browser_view_renderer_.GetAwDrawGLViewContext());
@@ -372,7 +375,9 @@ void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message,
}
} // namespace
-void AwContents::DocumentHasImages(JNIEnv* env, jobject obj, jobject message) {
+void AwContents::DocumentHasImages(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& message) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
ScopedJavaGlobalRef<jobject> j_message;
j_message.Reset(env, message);
@@ -392,8 +397,10 @@ void GenerateMHTMLCallback(ScopedJavaGlobalRef<jobject>* callback,
}
} // namespace
-void AwContents::GenerateMHTML(JNIEnv* env, jobject obj,
- jstring jpath, jobject callback) {
+void AwContents::GenerateMHTML(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& jpath,
+ const JavaParamRef<jobject>& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>();
j_callback->Reset(env, callback);
@@ -404,8 +411,8 @@ void AwContents::GenerateMHTML(JNIEnv* env, jobject obj,
}
void AwContents::CreatePdfExporter(JNIEnv* env,
- jobject obj,
- jobject pdfExporter) {
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& pdfExporter) {
pdf_exporter_.reset(
new AwPdfExporter(env,
pdfExporter,
@@ -435,9 +442,10 @@ void AwContents::SetOffscreenPreRaster(bool enabled) {
browser_view_renderer_.SetOffscreenPreRaster(enabled);
}
-void AwContents::AddVisitedLinks(JNIEnv* env,
- jobject obj,
- jobjectArray jvisited_links) {
+void AwContents::AddVisitedLinks(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobjectArray>& jvisited_links) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
std::vector<base::string16> visited_link_strings;
base::android::AppendJavaStringArrayToStringVector(
@@ -503,10 +511,11 @@ void AwContents::ShowGeolocationPrompt(const GURL& requesting_frame,
}
// Invoked from Java
-void AwContents::InvokeGeolocationCallback(JNIEnv* env,
- jobject obj,
- jboolean value,
- jstring origin) {
+void AwContents::InvokeGeolocationCallback(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean value,
+ const JavaParamRef<jstring>& origin) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (pending_geolocation_prompts_.empty())
return;
@@ -581,11 +590,10 @@ void AwContents::OnPermissionRequestCanceled(AwPermissionRequest* request) {
env, j_ref.obj(), j_request.obj());
}
-void AwContents::PreauthorizePermission(
- JNIEnv* env,
- jobject obj,
- jstring origin,
- jlong resources) {
+void AwContents::PreauthorizePermission(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& origin,
+ jlong resources) {
permission_request_handler_->PreauthorizePermission(
GURL(base::android::ConvertJavaStringToUTF8(env, origin)), resources);
}
@@ -648,25 +656,28 @@ void AwContents::CancelMIDISysexPermissionRequests(const GURL& origin) {
origin, AwPermissionRequest::AwPermissionRequest::MIDISysex);
}
-void AwContents::FindAllAsync(JNIEnv* env, jobject obj, jstring search_string) {
+void AwContents::FindAllAsync(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& search_string) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
GetFindHelper()->FindAllAsync(ConvertJavaStringToUTF16(env, search_string));
}
-void AwContents::FindNext(JNIEnv* env, jobject obj, jboolean forward) {
+void AwContents::FindNext(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean forward) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
GetFindHelper()->FindNext(forward);
}
-void AwContents::ClearMatches(JNIEnv* env, jobject obj) {
+void AwContents::ClearMatches(JNIEnv* env, const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
GetFindHelper()->ClearMatches();
}
-void AwContents::ClearCache(
- JNIEnv* env,
- jobject obj,
- jboolean include_disk_files) {
+void AwContents::ClearCache(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jboolean include_disk_files) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
render_view_host_ext_->ClearCache();
@@ -764,7 +775,7 @@ void AwContents::OnNewPicture() {
base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetCertificate(
JNIEnv* env,
- jobject obj) {
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::NavigationEntry* entry =
web_contents_->GetController().GetLastCommittedEntry();
@@ -785,7 +796,7 @@ base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetCertificate(
}
void AwContents::RequestNewHitTestDataAt(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jfloat x,
jfloat y,
jfloat touch_major) {
@@ -795,7 +806,8 @@ void AwContents::RequestNewHitTestDataAt(JNIEnv* env,
render_view_host_ext_->RequestNewHitTestDataAt(touch_center, touch_area);
}
-void AwContents::UpdateLastHitTestData(JNIEnv* env, jobject obj) {
+void AwContents::UpdateLastHitTestData(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (!render_view_host_ext_->HasNewHitTestData()) return;
@@ -829,23 +841,33 @@ void AwContents::UpdateLastHitTestData(JNIEnv* env, jobject obj) {
img_src.obj());
}
-void AwContents::OnSizeChanged(JNIEnv* env, jobject obj,
- int w, int h, int ow, int oh) {
+void AwContents::OnSizeChanged(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ int w,
+ int h,
+ int ow,
+ int oh) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.OnSizeChanged(w, h);
}
-void AwContents::SetViewVisibility(JNIEnv* env, jobject obj, bool visible) {
+void AwContents::SetViewVisibility(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ bool visible) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.SetViewVisibility(visible);
}
-void AwContents::SetWindowVisibility(JNIEnv* env, jobject obj, bool visible) {
+void AwContents::SetWindowVisibility(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ bool visible) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.SetWindowVisibility(visible);
}
-void AwContents::SetIsPaused(JNIEnv* env, jobject obj, bool paused) {
+void AwContents::SetIsPaused(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ bool paused) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.SetIsPaused(paused);
ContentViewCore* cvc =
@@ -855,17 +877,21 @@ void AwContents::SetIsPaused(JNIEnv* env, jobject obj, bool paused) {
}
}
-void AwContents::OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h) {
+void AwContents::OnAttachedToWindow(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ int w,
+ int h) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.OnAttachedToWindow(w, h);
}
-void AwContents::OnDetachedFromWindow(JNIEnv* env, jobject obj) {
+void AwContents::OnDetachedFromWindow(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.OnDetachedFromWindow();
}
-bool AwContents::IsVisible(JNIEnv* env, jobject obj) {
+bool AwContents::IsVisible(JNIEnv* env, const JavaParamRef<jobject>& obj) {
return browser_view_renderer_.IsClientVisible();
}
@@ -876,8 +902,9 @@ void AwContents::DetachFunctorFromView() {
Java_AwContents_detachFunctorFromView(env, obj.obj());
}
-base::android::ScopedJavaLocalRef<jbyteArray>
-AwContents::GetOpaqueState(JNIEnv* env, jobject obj) {
+base::android::ScopedJavaLocalRef<jbyteArray> AwContents::GetOpaqueState(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// Required optimization in WebViewClassic to not save any state if
// there has been no navigations.
@@ -894,7 +921,9 @@ AwContents::GetOpaqueState(JNIEnv* env, jobject obj) {
}
jboolean AwContents::RestoreFromOpaqueState(
- JNIEnv* env, jobject obj, jbyteArray state) {
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jbyteArray>& state) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// TODO(boliu): This copy can be optimized out if this is a performance
// problem.
@@ -909,8 +938,8 @@ jboolean AwContents::RestoreFromOpaqueState(
}
bool AwContents::OnDraw(JNIEnv* env,
- jobject obj,
- jobject canvas,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& canvas,
jboolean is_hardware_accelerated,
jint scroll_x,
jint scroll_y,
@@ -966,18 +995,20 @@ void AwContents::SetPendingWebContentsForPopup(
pending_contents_->SetDipScaleInternal(browser_view_renderer_.dip_scale());
}
-void AwContents::FocusFirstNode(JNIEnv* env, jobject obj) {
+void AwContents::FocusFirstNode(JNIEnv* env, const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
web_contents_->FocusThroughTabTraversal(false);
}
-void AwContents::SetBackgroundColor(JNIEnv* env, jobject obj, jint color) {
+void AwContents::SetBackgroundColor(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint color) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
render_view_host_ext_->SetBackgroundColor(color);
}
void AwContents::OnComputeScroll(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jlong animation_time_millis) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.OnComputeScroll(
@@ -985,7 +1016,8 @@ void AwContents::OnComputeScroll(JNIEnv* env,
base::TimeDelta::FromMilliseconds(animation_time_millis));
}
-jlong AwContents::ReleasePopupAwContents(JNIEnv* env, jobject obj) {
+jlong AwContents::ReleasePopupAwContents(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return reinterpret_cast<intptr_t>(pending_contents_.release());
}
@@ -1047,7 +1079,9 @@ void AwContents::DidOverscroll(const gfx::Vector2d& overscroll_delta,
overscroll_velocity.y());
}
-void AwContents::SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale) {
+void AwContents::SetDipScale(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jfloat dip_scale) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
SetDipScaleInternal(dip_scale);
}
@@ -1056,13 +1090,16 @@ void AwContents::SetDipScaleInternal(float dip_scale) {
browser_view_renderer_.SetDipScale(dip_scale);
}
-void AwContents::ScrollTo(JNIEnv* env, jobject obj, jint x, jint y) {
+void AwContents::ScrollTo(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jint x,
+ jint y) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.ScrollTo(gfx::Vector2d(x, y));
}
void AwContents::SmoothScroll(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jint target_x,
jint target_y,
jlong duration_ms) {
@@ -1096,7 +1133,7 @@ void AwContents::OnWebLayoutContentsSizeChanged(
}
jlong AwContents::CapturePicture(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
int width,
int height) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -1105,7 +1142,7 @@ jlong AwContents::CapturePicture(JNIEnv* env,
}
void AwContents::EnableOnNewPicture(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jboolean enabled) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.EnableOnNewPicture(enabled);
@@ -1126,7 +1163,10 @@ void InvokeVisualStateCallback(const JavaObjectWeakGlobalRef& java_ref,
} // namespace
void AwContents::InsertVisualStateCallback(
- JNIEnv* env, jobject obj, jlong request_id, jobject callback) {
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jlong request_id,
+ const JavaParamRef<jobject>& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
ScopedJavaGlobalRef<jobject>* j_callback = new ScopedJavaGlobalRef<jobject>();
j_callback->Reset(env, callback);
@@ -1135,13 +1175,16 @@ void AwContents::InsertVisualStateCallback(
base::Owned(j_callback)));
}
-void AwContents::ClearView(JNIEnv* env, jobject obj) {
+void AwContents::ClearView(JNIEnv* env, const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
browser_view_renderer_.ClearView();
}
-void AwContents::SetExtraHeadersForUrl(JNIEnv* env, jobject obj,
- jstring url, jstring jextra_headers) {
+void AwContents::SetExtraHeadersForUrl(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& url,
+ const JavaParamRef<jstring>& jextra_headers) {
std::string extra_headers;
if (jextra_headers)
extra_headers = ConvertJavaStringToUTF8(env, jextra_headers);
@@ -1153,14 +1196,14 @@ void AwContents::SetExtraHeadersForUrl(JNIEnv* env, jobject obj,
}
void AwContents::SetJsOnlineProperty(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jboolean network_up) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
render_view_host_ext_->SetJsOnlineProperty(network_up);
}
void AwContents::TrimMemory(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
jint level,
jboolean visible) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -1169,10 +1212,12 @@ void AwContents::TrimMemory(JNIEnv* env,
// TODO(sgurun) add support for posting a frame whose name is known (only
// main frame is supported at this time, see crbug.com/389721)
-void AwContents::PostMessageToFrame(JNIEnv* env, jobject obj,
- jstring frame_name, jstring message, jstring target_origin,
- jintArray sent_ports) {
-
+void AwContents::PostMessageToFrame(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& frame_name,
+ const JavaParamRef<jstring>& message,
+ const JavaParamRef<jstring>& target_origin,
+ const JavaParamRef<jintArray>& sent_ports) {
// Use an empty source origin for android webview.
base::string16 source_origin;
base::string16 j_target_origin(ConvertJavaStringToUTF16(env, target_origin));
@@ -1211,20 +1256,23 @@ AwContents::GetMessagePortMessageFilter() {
return message_port_message_filter_;
}
-void AwContents::CreateMessageChannel(JNIEnv* env, jobject obj,
- jobjectArray ports) {
-
+void AwContents::CreateMessageChannel(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobjectArray>& ports) {
AwMessagePortServiceImpl::GetInstance()->CreateMessageChannel(env, ports,
GetMessagePortMessageFilter());
}
-void AwContents::GrantFileSchemeAccesstoChildProcess(JNIEnv* env, jobject obj) {
+void AwContents::GrantFileSchemeAccesstoChildProcess(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme(
web_contents_->GetRenderProcessHost()->GetID(), url::kFileScheme);
}
-void AwContents::ResumeLoadingCreatedPopupWebContents(JNIEnv* env,
- jobject obj) {
+void AwContents::ResumeLoadingCreatedPopupWebContents(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
web_contents_->ResumeLoadingCreatedWebContents();
}
diff --git a/android_webview/native/aw_contents.h b/android_webview/native/aw_contents.h
index af9e881..22fe1b1 100644
--- a/android_webview/native/aw_contents.h
+++ b/android_webview/native/aw_contents.h
@@ -86,45 +86,85 @@ class AwContents : public FindHelper::Listener,
void SetOffscreenPreRaster(bool enabled);
// Methods called from Java.
- void SetJavaPeers(JNIEnv* env,
- jobject obj,
- jobject aw_contents,
- jobject web_contents_delegate,
- jobject contents_client_bridge,
- jobject io_thread_client,
- jobject intercept_navigation_delegate);
- base::android::ScopedJavaLocalRef<jobject> GetWebContents(JNIEnv* env,
- jobject obj);
-
- void Destroy(JNIEnv* env, jobject obj);
- void DocumentHasImages(JNIEnv* env, jobject obj, jobject message);
- void GenerateMHTML(JNIEnv* env, jobject obj, jstring jpath, jobject callback);
- void CreatePdfExporter(JNIEnv* env, jobject obj, jobject pdfExporter);
- void AddVisitedLinks(JNIEnv* env, jobject obj, jobjectArray jvisited_links);
+ void SetJavaPeers(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& aw_contents,
+ const base::android::JavaParamRef<jobject>& web_contents_delegate,
+ const base::android::JavaParamRef<jobject>& contents_client_bridge,
+ const base::android::JavaParamRef<jobject>& io_thread_client,
+ const base::android::JavaParamRef<jobject>&
+ intercept_navigation_delegate);
+ base::android::ScopedJavaLocalRef<jobject> GetWebContents(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+
+ void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ void DocumentHasImages(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& message);
+ void GenerateMHTML(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& jpath,
+ const base::android::JavaParamRef<jobject>& callback);
+ void CreatePdfExporter(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& pdfExporter);
+ void AddVisitedLinks(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobjectArray>& jvisited_links);
base::android::ScopedJavaLocalRef<jbyteArray> GetCertificate(
- JNIEnv* env, jobject obj);
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
void RequestNewHitTestDataAt(JNIEnv* env,
- jobject obj,
+ const base::android::JavaParamRef<jobject>& obj,
jfloat x,
jfloat y,
jfloat touch_major);
- void UpdateLastHitTestData(JNIEnv* env, jobject obj);
- void OnSizeChanged(JNIEnv* env, jobject obj, int w, int h, int ow, int oh);
- void SetViewVisibility(JNIEnv* env, jobject obj, bool visible);
- void SetWindowVisibility(JNIEnv* env, jobject obj, bool visible);
- void SetIsPaused(JNIEnv* env, jobject obj, bool paused);
- void OnAttachedToWindow(JNIEnv* env, jobject obj, int w, int h);
- void OnDetachedFromWindow(JNIEnv* env, jobject obj);
- bool IsVisible(JNIEnv* env, jobject obj);
+ void UpdateLastHitTestData(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void OnSizeChanged(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ int w,
+ int h,
+ int ow,
+ int oh);
+ void SetViewVisibility(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ bool visible);
+ void SetWindowVisibility(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ bool visible);
+ void SetIsPaused(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ bool paused);
+ void OnAttachedToWindow(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ int w,
+ int h);
+ void OnDetachedFromWindow(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ bool IsVisible(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
base::android::ScopedJavaLocalRef<jbyteArray> GetOpaqueState(
- JNIEnv* env, jobject obj);
- jboolean RestoreFromOpaqueState(JNIEnv* env, jobject obj, jbyteArray state);
- void FocusFirstNode(JNIEnv* env, jobject obj);
- void SetBackgroundColor(JNIEnv* env, jobject obj, jint color);
- void OnComputeScroll(JNIEnv* env, jobject obj, jlong animation_time_millis);
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ jboolean RestoreFromOpaqueState(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jbyteArray>& state);
+ void FocusFirstNode(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void SetBackgroundColor(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint color);
+ void OnComputeScroll(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jlong animation_time_millis);
bool OnDraw(JNIEnv* env,
- jobject obj,
- jobject canvas,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& canvas,
jboolean is_hardware_accelerated,
jint scroll_x,
jint scroll_y,
@@ -132,21 +172,32 @@ class AwContents : public FindHelper::Listener,
jint visible_top,
jint visible_right,
jint visible_bottom);
- jlong GetAwDrawGLViewContext(JNIEnv* env, jobject obj);
- jlong CapturePicture(JNIEnv* env, jobject obj, int width, int height);
- void EnableOnNewPicture(JNIEnv* env, jobject obj, jboolean enabled);
- void InsertVisualStateCallback(JNIEnv* env,
- jobject obj,
- jlong request_id,
- jobject callback);
- void ClearView(JNIEnv* env, jobject obj);
- void SetExtraHeadersForUrl(JNIEnv* env, jobject obj,
- jstring url, jstring extra_headers);
-
- void InvokeGeolocationCallback(JNIEnv* env,
- jobject obj,
- jboolean value,
- jstring origin);
+ jlong GetAwDrawGLViewContext(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ jlong CapturePicture(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ int width,
+ int height);
+ void EnableOnNewPicture(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jboolean enabled);
+ void InsertVisualStateCallback(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jlong request_id,
+ const base::android::JavaParamRef<jobject>& callback);
+ void ClearView(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ void SetExtraHeadersForUrl(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& url,
+ const base::android::JavaParamRef<jstring>& extra_headers);
+
+ void InvokeGeolocationCallback(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jboolean value,
+ const base::android::JavaParamRef<jstring>& origin);
// PermissionRequestHandlerClient implementation.
void OnPermissionRequest(base::android::ScopedJavaLocalRef<jobject> j_request,
@@ -157,10 +208,11 @@ class AwContents : public FindHelper::Listener,
return permission_request_handler_.get();
}
- void PreauthorizePermission(JNIEnv* env,
- jobject obj,
- jstring origin,
- jlong resources);
+ void PreauthorizePermission(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& origin,
+ jlong resources);
// AwBrowserPermissionRequestDelegate implementation.
void RequestProtectedMediaIdentifierPermission(
@@ -178,9 +230,14 @@ class AwContents : public FindHelper::Listener,
void CancelMIDISysexPermissionRequests(const GURL& origin) override;
// Find-in-page API and related methods.
- void FindAllAsync(JNIEnv* env, jobject obj, jstring search_string);
- void FindNext(JNIEnv* env, jobject obj, jboolean forward);
- void ClearMatches(JNIEnv* env, jobject obj);
+ void FindAllAsync(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& search_string);
+ void FindNext(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jboolean forward);
+ void ClearMatches(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
FindHelper* GetFindHelper();
// Per WebView Cookie Policy
@@ -218,33 +275,58 @@ class AwContents : public FindHelper::Listener,
void ParentDrawConstraintsUpdated(
const ParentCompositorDrawConstraints& draw_constraints) override {}
- void ClearCache(JNIEnv* env, jobject obj, jboolean include_disk_files);
+ void ClearCache(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jboolean include_disk_files);
void SetPendingWebContentsForPopup(scoped_ptr<content::WebContents> pending);
- jlong ReleasePopupAwContents(JNIEnv* env, jobject obj);
+ jlong ReleasePopupAwContents(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
- void ScrollTo(JNIEnv* env, jobject obj, jint x, jint y);
+ void ScrollTo(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint x,
+ jint y);
void SmoothScroll(JNIEnv* env,
- jobject obj,
+ const base::android::JavaParamRef<jobject>& obj,
jint target_x,
jint target_y,
jlong duration_ms);
- void SetDipScale(JNIEnv* env, jobject obj, jfloat dip_scale);
+ void SetDipScale(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jfloat dip_scale);
void SetSaveFormData(bool enabled);
// Sets the java client
void SetAwAutofillClient(jobject client);
- void SetJsOnlineProperty(JNIEnv* env, jobject obj, jboolean network_up);
- void TrimMemory(JNIEnv* env, jobject obj, jint level, jboolean visible);
+ void SetJsOnlineProperty(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jboolean network_up);
+ void TrimMemory(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jint level,
+ jboolean visible);
scoped_refptr<AwMessagePortMessageFilter> GetMessagePortMessageFilter();
- void PostMessageToFrame(JNIEnv* env, jobject obj, jstring frame_id,
- jstring message, jstring target_origin, jintArray sent_ports);
- void CreateMessageChannel(JNIEnv* env, jobject obj, jobjectArray ports);
-
- void GrantFileSchemeAccesstoChildProcess(JNIEnv* env, jobject obj);
-
- void ResumeLoadingCreatedPopupWebContents(JNIEnv* env, jobject obj);
+ void PostMessageToFrame(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& frame_id,
+ const base::android::JavaParamRef<jstring>& message,
+ const base::android::JavaParamRef<jstring>& target_origin,
+ const base::android::JavaParamRef<jintArray>& sent_ports);
+ void CreateMessageChannel(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobjectArray>& ports);
+
+ void GrantFileSchemeAccesstoChildProcess(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+
+ void ResumeLoadingCreatedPopupWebContents(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
private:
void InitAutofillIfNecessary(bool enabled);
diff --git a/android_webview/native/aw_contents_client_bridge.cc b/android_webview/native/aw_contents_client_bridge.cc
index 9e570af..2dae8f5 100644
--- a/android_webview/native/aw_contents_client_bridge.cc
+++ b/android_webview/native/aw_contents_client_bridge.cc
@@ -108,8 +108,10 @@ void AwContentsClientBridge::AllowCertificateError(
}
}
-void AwContentsClientBridge::ProceedSslError(JNIEnv* env, jobject obj,
- jboolean proceed, jint id) {
+void AwContentsClientBridge::ProceedSslError(JNIEnv* env,
+ const JavaRef<jobject>& obj,
+ jboolean proceed,
+ jint id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
CertErrorCallback* callback = pending_cert_error_callbacks_.Lookup(id);
if (!callback || callback->is_null()) {
@@ -196,17 +198,17 @@ void AwContentsClientBridge::SelectClientCertificate(
// chrome/browser/ui/android/ssl_client_certificate_request.cc
void AwContentsClientBridge::ProvideClientCertificateResponse(
JNIEnv* env,
- jobject obj,
+ const JavaRef<jobject>& obj,
int request_id,
- jobjectArray encoded_chain_ref,
- jobject private_key_ref) {
+ const JavaRef<jobjectArray>& encoded_chain_ref,
+ const JavaRef<jobject>& private_key_ref) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::ClientCertificateDelegate* delegate =
pending_client_cert_request_delegates_.Lookup(request_id);
DCHECK(delegate);
- if (encoded_chain_ref == NULL || private_key_ref == NULL) {
+ if (encoded_chain_ref.is_null() || private_key_ref.is_null()) {
LOG(ERROR) << "No client certificate selected";
pending_client_cert_request_delegates_.Remove(request_id);
delegate->ContinueWithCertificate(nullptr);
@@ -222,9 +224,9 @@ void AwContentsClientBridge::ProvideClientCertificateResponse(
// Convert the encoded chain to a vector of strings.
std::vector<std::string> encoded_chain_strings;
- if (encoded_chain_ref) {
+ if (!encoded_chain_ref.is_null()) {
base::android::JavaArrayOfByteArrayToStringVector(
- env, encoded_chain_ref, &encoded_chain_strings);
+ env, encoded_chain_ref.obj(), &encoded_chain_strings);
}
std::vector<base::StringPiece> encoded_chain;
@@ -241,7 +243,7 @@ void AwContentsClientBridge::ProvideClientCertificateResponse(
// Create an EVP_PKEY wrapper for the private key JNI reference.
crypto::ScopedEVP_PKEY private_key(
- net::android::GetOpenSSLPrivateKeyWrapper(private_key_ref));
+ net::android::GetOpenSSLPrivateKeyWrapper(private_key_ref.obj()));
if (!private_key.get()) {
LOG(ERROR) << "Could not create OpenSSL wrapper for private key";
return;
@@ -341,9 +343,9 @@ void AwContentsClientBridge::RunBeforeUnloadDialog(
}
void AwContentsClientBridge::ConfirmJsResult(JNIEnv* env,
- jobject,
+ const JavaRef<jobject>&,
int id,
- jstring prompt) {
+ const JavaRef<jstring>& prompt) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::JavaScriptDialogManager::DialogClosedCallback* callback =
pending_js_dialog_callbacks_.Lookup(id);
@@ -352,14 +354,16 @@ void AwContentsClientBridge::ConfirmJsResult(JNIEnv* env,
return;
}
base::string16 prompt_text;
- if (prompt) {
+ if (!prompt.is_null()) {
prompt_text = ConvertJavaStringToUTF16(env, prompt);
}
callback->Run(true, prompt_text);
pending_js_dialog_callbacks_.Remove(id);
}
-void AwContentsClientBridge::CancelJsResult(JNIEnv*, jobject, int id) {
+void AwContentsClientBridge::CancelJsResult(JNIEnv*,
+ const JavaRef<jobject>&,
+ int id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::JavaScriptDialogManager::DialogClosedCallback* callback =
pending_js_dialog_callbacks_.Lookup(id);
diff --git a/android_webview/native/aw_contents_client_bridge.h b/android_webview/native/aw_contents_client_bridge.h
index 74f13e0..5372fb0 100644
--- a/android_webview/native/aw_contents_client_bridge.h
+++ b/android_webview/native/aw_contents_client_bridge.h
@@ -56,12 +56,21 @@ class AwContentsClientBridge : public AwContentsClientBridgeBase {
override;
// Methods called from Java.
- void ProceedSslError(JNIEnv* env, jobject obj, jboolean proceed, jint id);
- void ProvideClientCertificateResponse(JNIEnv* env, jobject object,
- jint request_id, jobjectArray encoded_chain_ref,
- jobject private_key_ref);
- void ConfirmJsResult(JNIEnv*, jobject, int id, jstring prompt);
- void CancelJsResult(JNIEnv*, jobject, int id);
+ void ProceedSslError(JNIEnv* env,
+ const base::android::JavaRef<jobject>& obj,
+ jboolean proceed,
+ jint id);
+ void ProvideClientCertificateResponse(
+ JNIEnv* env,
+ const base::android::JavaRef<jobject>& object,
+ jint request_id,
+ const base::android::JavaRef<jobjectArray>& encoded_chain_ref,
+ const base::android::JavaRef<jobject>& private_key_ref);
+ void ConfirmJsResult(JNIEnv*,
+ const base::android::JavaRef<jobject>&,
+ int id,
+ const base::android::JavaRef<jstring>& prompt);
+ void CancelJsResult(JNIEnv*, const base::android::JavaRef<jobject>&, int id);
private:
void HandleErrorInClientCertificateResponse(int id);
diff --git a/android_webview/native/aw_contents_client_bridge_unittest.cc b/android_webview/native/aw_contents_client_bridge_unittest.cc
index 5f19a52..e685d0b 100644
--- a/android_webview/native/aw_contents_client_bridge_unittest.cc
+++ b/android_webview/native/aw_contents_client_bridge_unittest.cc
@@ -129,10 +129,10 @@ TEST_F(AwContentsClientBridgeTest,
bridge_->SelectClientCertificate(
cert_request_info_.get(),
make_scoped_ptr(new TestClientCertificateDelegate(this)));
- bridge_->ProvideClientCertificateResponse(env_, jbridge_.obj(),
+ bridge_->ProvideClientCertificateResponse(
+ env_, jbridge_,
Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_.obj()),
- Java_MockAwContentsClientBridge_createTestCertChain(
- env_, jbridge_.obj()).obj(),
+ Java_MockAwContentsClientBridge_createTestCertChain(env_, jbridge_.obj()),
nullptr);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(nullptr, selected_cert_);
@@ -150,8 +150,8 @@ TEST_F(AwContentsClientBridgeTest,
make_scoped_ptr(new TestClientCertificateDelegate(this)));
int requestId =
Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_.obj());
- bridge_->ProvideClientCertificateResponse(
- env_, jbridge_.obj(), requestId, nullptr, nullptr);
+ bridge_->ProvideClientCertificateResponse(env_, jbridge_, requestId, nullptr,
+ nullptr);
base::RunLoop().RunUntilIdle();
EXPECT_EQ(nullptr, selected_cert_);
EXPECT_EQ(1, cert_selected_callbacks_);
diff --git a/android_webview/native/aw_http_auth_handler.cc b/android_webview/native/aw_http_auth_handler.cc
index 700270a..8f4293b 100644
--- a/android_webview/native/aw_http_auth_handler.cc
+++ b/android_webview/native/aw_http_auth_handler.cc
@@ -38,9 +38,9 @@ AwHttpAuthHandler:: ~AwHttpAuthHandler() {
}
void AwHttpAuthHandler::Proceed(JNIEnv* env,
- jobject obj,
- jstring user,
- jstring password) {
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jstring>& user,
+ const JavaParamRef<jstring>& password) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (login_delegate_.get()) {
login_delegate_->Proceed(ConvertJavaStringToUTF16(env, user),
@@ -49,7 +49,7 @@ void AwHttpAuthHandler::Proceed(JNIEnv* env,
}
}
-void AwHttpAuthHandler::Cancel(JNIEnv* env, jobject obj) {
+void AwHttpAuthHandler::Cancel(JNIEnv* env, const JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (login_delegate_.get()) {
login_delegate_->Cancel();
diff --git a/android_webview/native/aw_http_auth_handler.h b/android_webview/native/aw_http_auth_handler.h
index 79b7406..09f6ed1 100644
--- a/android_webview/native/aw_http_auth_handler.h
+++ b/android_webview/native/aw_http_auth_handler.h
@@ -37,8 +37,11 @@ class AwHttpAuthHandler : public AwHttpAuthHandlerBase {
// from AwHttpAuthHandler
bool HandleOnUIThread(content::WebContents* web_contents) override;
- void Proceed(JNIEnv* env, jobject obj, jstring username, jstring password);
- void Cancel(JNIEnv* env, jobject obj);
+ void Proceed(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jstring>& username,
+ const base::android::JavaParamRef<jstring>& password);
+ void Cancel(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
private:
scoped_refptr<AwLoginDelegate> login_delegate_;
diff --git a/android_webview/native/aw_message_port_service_impl.cc b/android_webview/native/aw_message_port_service_impl.cc
index cbbe282..65f7bb0 100644
--- a/android_webview/native/aw_message_port_service_impl.cc
+++ b/android_webview/native/aw_message_port_service_impl.cc
@@ -122,8 +122,12 @@ void AwMessagePortServiceImpl::OnMessagePortMessageFilterClosing(
}
}
-void AwMessagePortServiceImpl::PostAppToWebMessage(JNIEnv* env, jobject obj,
- int sender_id, jstring message, jintArray sent_ports) {
+void AwMessagePortServiceImpl::PostAppToWebMessage(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ int sender_id,
+ const JavaParamRef<jstring>& message,
+ const JavaParamRef<jintArray>& sent_ports) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
base::string16* j_message = new base::string16;
ConvertJavaStringToUTF16(env, message, j_message);
@@ -145,8 +149,9 @@ void AwMessagePortServiceImpl::PostAppToWebMessage(JNIEnv* env, jobject obj,
// it is possible that messages are still queued in the renderer process
// waiting for a conversion. Instead, it sends a special message with
// a flag which indicates that this message port should be closed.
-void AwMessagePortServiceImpl::ClosePort(JNIEnv* env, jobject obj,
- int message_port_id) {
+void AwMessagePortServiceImpl::ClosePort(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ int message_port_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask(
BrowserThread::IO,
@@ -156,8 +161,9 @@ void AwMessagePortServiceImpl::ClosePort(JNIEnv* env, jobject obj,
message_port_id));
}
-void AwMessagePortServiceImpl::ReleaseMessages(JNIEnv* env, jobject obj,
- int message_port_id) {
+void AwMessagePortServiceImpl::ReleaseMessages(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ int message_port_id) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
BrowserThread::PostTask(
BrowserThread::IO,
diff --git a/android_webview/native/aw_message_port_service_impl.h b/android_webview/native/aw_message_port_service_impl.h
index 7f42421..2ee31b4 100644
--- a/android_webview/native/aw_message_port_service_impl.h
+++ b/android_webview/native/aw_message_port_service_impl.h
@@ -42,10 +42,18 @@ class AwMessagePortServiceImpl : public AwMessagePortService {
void CleanupPort(int message_port_id) override;
// Methods called from Java.
- void PostAppToWebMessage(JNIEnv* env, jobject object, int sender_id,
- jstring message, jintArray sent_ports);
- void ClosePort(JNIEnv* env, jobject object, int message_port_id);
- void ReleaseMessages(JNIEnv* env, jobject object, int message_port_id);
+ void PostAppToWebMessage(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ int sender_id,
+ const base::android::JavaParamRef<jstring>& message,
+ const base::android::JavaParamRef<jintArray>& sent_ports);
+ void ClosePort(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ int message_port_id);
+ void ReleaseMessages(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ int message_port_id);
void RemoveSentPorts(const std::vector<int>& sent_ports);
diff --git a/android_webview/native/aw_pdf_exporter.cc b/android_webview/native/aw_pdf_exporter.cc
index 48fa9f9..af08f1f 100644
--- a/android_webview/native/aw_pdf_exporter.cc
+++ b/android_webview/native/aw_pdf_exporter.cc
@@ -33,9 +33,9 @@ AwPdfExporter::~AwPdfExporter() {
}
void AwPdfExporter::ExportToPdf(JNIEnv* env,
- jobject obj,
+ const JavaParamRef<jobject>& obj,
int fd,
- jobject cancel_signal) {
+ const JavaParamRef<jobject>& cancel_signal) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
printing::PrintSettings print_settings;
InitPdfSettings(env, obj, print_settings);
diff --git a/android_webview/native/aw_pdf_exporter.h b/android_webview/native/aw_pdf_exporter.h
index f2513f8..2b44a85 100644
--- a/android_webview/native/aw_pdf_exporter.h
+++ b/android_webview/native/aw_pdf_exporter.h
@@ -31,9 +31,9 @@ class AwPdfExporter {
~AwPdfExporter();
void ExportToPdf(JNIEnv* env,
- jobject obj,
+ const base::android::JavaParamRef<jobject>& obj,
int fd,
- jobject cancel_signal);
+ const base::android::JavaParamRef<jobject>& cancel_signal);
private:
void InitPdfSettings(JNIEnv* env,
diff --git a/android_webview/native/aw_picture.cc b/android_webview/native/aw_picture.cc
index a46be2c..6c98d3d 100644
--- a/android_webview/native/aw_picture.cc
+++ b/android_webview/native/aw_picture.cc
@@ -18,19 +18,21 @@ AwPicture::AwPicture(skia::RefPtr<SkPicture> picture)
AwPicture::~AwPicture() {}
-void AwPicture::Destroy(JNIEnv* env, jobject obj) {
+void AwPicture::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
delete this;
}
-jint AwPicture::GetWidth(JNIEnv* env, jobject obj) {
+jint AwPicture::GetWidth(JNIEnv* env, const JavaParamRef<jobject>& obj) {
return picture_->cullRect().roundOut().width();
}
-jint AwPicture::GetHeight(JNIEnv* env, jobject obj) {
+jint AwPicture::GetHeight(JNIEnv* env, const JavaParamRef<jobject>& obj) {
return picture_->cullRect().roundOut().height();
}
-void AwPicture::Draw(JNIEnv* env, jobject obj, jobject canvas) {
+void AwPicture::Draw(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& canvas) {
const SkIRect bounds = picture_->cullRect().roundOut();
scoped_ptr<SoftwareCanvasHolder> canvas_holder = SoftwareCanvasHolder::Create(
canvas, gfx::Vector2d(), gfx::Size(bounds.width(), bounds.height()),
diff --git a/android_webview/native/aw_picture.h b/android_webview/native/aw_picture.h
index fc4d1ec..bc129e5 100644
--- a/android_webview/native/aw_picture.h
+++ b/android_webview/native/aw_picture.h
@@ -23,10 +23,12 @@ class AwPicture {
~AwPicture();
// Methods called from Java.
- void Destroy(JNIEnv* env, jobject obj);
- jint GetWidth(JNIEnv* env, jobject obj);
- jint GetHeight(JNIEnv* env, jobject obj);
- void Draw(JNIEnv* env, jobject obj, jobject canvas);
+ void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ jint GetWidth(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ jint GetHeight(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ void Draw(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& canvas);
private:
skia::RefPtr<SkPicture> picture_;
diff --git a/android_webview/native/aw_quota_manager_bridge_impl.cc b/android_webview/native/aw_quota_manager_bridge_impl.cc
index abf791e..d4ae0cd 100644
--- a/android_webview/native/aw_quota_manager_bridge_impl.cc
+++ b/android_webview/native/aw_quota_manager_bridge_impl.cc
@@ -180,7 +180,8 @@ AwQuotaManagerBridgeImpl::AwQuotaManagerBridgeImpl(
AwQuotaManagerBridgeImpl::~AwQuotaManagerBridgeImpl() {}
-void AwQuotaManagerBridgeImpl::Init(JNIEnv* env, jobject object) {
+void AwQuotaManagerBridgeImpl::Init(JNIEnv* env,
+ const JavaParamRef<jobject>& object) {
java_ref_ = JavaObjectWeakGlobalRef(env, object);
}
@@ -202,7 +203,9 @@ QuotaManager* AwQuotaManagerBridgeImpl::GetQuotaManager() const {
return quota_manager;
}
-void AwQuotaManagerBridgeImpl::DeleteAllData(JNIEnv* env, jobject object) {
+void AwQuotaManagerBridgeImpl::DeleteAllData(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& object) {
RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread,
this));
}
@@ -222,7 +225,9 @@ void AwQuotaManagerBridgeImpl::DeleteAllDataOnUiThread() {
}
void AwQuotaManagerBridgeImpl::DeleteOrigin(
- JNIEnv* env, jobject object, jstring origin) {
+ JNIEnv* env,
+ const JavaParamRef<jobject>& object,
+ const JavaParamRef<jstring>& origin) {
base::string16 origin_string(
base::android::ConvertJavaStringToUTF16(env, origin));
RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread,
@@ -246,8 +251,9 @@ void AwQuotaManagerBridgeImpl::DeleteOriginOnUiThread(
base::Bind(&base::DoNothing));
}
-void AwQuotaManagerBridgeImpl::GetOrigins(
- JNIEnv* env, jobject object, jint callback_id) {
+void AwQuotaManagerBridgeImpl::GetOrigins(JNIEnv* env,
+ const JavaParamRef<jobject>& object,
+ jint callback_id) {
RunOnUIThread(base::Bind(&AwQuotaManagerBridgeImpl::GetOriginsOnUiThread,
this,
callback_id));
@@ -305,8 +311,9 @@ void OnUsageAndQuotaObtained(
} // namespace
void AwQuotaManagerBridgeImpl::GetUsageAndQuotaForOrigin(
- JNIEnv* env, jobject object,
- jstring origin,
+ JNIEnv* env,
+ const JavaParamRef<jobject>& object,
+ const JavaParamRef<jstring>& origin,
jint callback_id,
bool is_quota) {
base::string16 origin_string(
diff --git a/android_webview/native/aw_quota_manager_bridge_impl.h b/android_webview/native/aw_quota_manager_bridge_impl.h
index dc7f20f3..530705d 100644
--- a/android_webview/native/aw_quota_manager_bridge_impl.h
+++ b/android_webview/native/aw_quota_manager_bridge_impl.h
@@ -37,15 +37,21 @@ class AwQuotaManagerBridgeImpl : public AwQuotaManagerBridge {
AwBrowserContext* browser_context);
// Called by Java.
- void Init(JNIEnv* env, jobject object);
- void DeleteAllData(JNIEnv* env, jobject object);
- void DeleteOrigin(JNIEnv* env, jobject object, jstring origin);
- void GetOrigins(JNIEnv* env, jobject object, jint callback_id);
- void GetUsageAndQuotaForOrigin(JNIEnv* env,
- jobject object,
- jstring origin,
- jint callback_id,
- bool is_quota);
+ void Init(JNIEnv* env, const base::android::JavaParamRef<jobject>& object);
+ void DeleteAllData(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object);
+ void DeleteOrigin(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ const base::android::JavaParamRef<jstring>& origin);
+ void GetOrigins(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ jint callback_id);
+ void GetUsageAndQuotaForOrigin(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& object,
+ const base::android::JavaParamRef<jstring>& origin,
+ jint callback_id,
+ bool is_quota);
typedef base::Callback<
void(const std::vector<std::string>& /* origin */,
diff --git a/android_webview/native/aw_settings.cc b/android_webview/native/aw_settings.cc
index 753a9e1..8817abc 100644
--- a/android_webview/native/aw_settings.cc
+++ b/android_webview/native/aw_settings.cc
@@ -93,7 +93,7 @@ AwSettings::~AwSettings() {
reinterpret_cast<intptr_t>(this));
}
-void AwSettings::Destroy(JNIEnv* env, jobject obj) {
+void AwSettings::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
delete this;
}
@@ -108,7 +108,8 @@ AwRenderViewHostExt* AwSettings::GetAwRenderViewHostExt() {
return contents->render_view_host_ext();
}
-void AwSettings::ResetScrollAndScaleState(JNIEnv* env, jobject obj) {
+void AwSettings::ResetScrollAndScaleState(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
if (!rvhe) return;
rvhe->ResetScrollAndScaleState();
@@ -124,7 +125,8 @@ void AwSettings::UpdateEverything() {
Java_AwSettings_updateEverything(env, obj);
}
-void AwSettings::UpdateEverythingLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateEverythingLocked(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
UpdateInitialPageScaleLocked(env, obj);
UpdateWebkitPreferencesLocked(env, obj);
UpdateUserAgentLocked(env, obj);
@@ -134,7 +136,8 @@ void AwSettings::UpdateEverythingLocked(JNIEnv* env, jobject obj) {
UpdateOffscreenPreRasterLocked(env, obj);
}
-void AwSettings::UpdateUserAgentLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateUserAgentLocked(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
if (!web_contents()) return;
ScopedJavaLocalRef<jstring> str =
@@ -152,7 +155,9 @@ void AwSettings::UpdateUserAgentLocked(JNIEnv* env, jobject obj) {
controller.GetEntryAtIndex(i)->SetIsOverridingUserAgent(ua_overidden);
}
-void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateWebkitPreferencesLocked(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
if (!web_contents()) return;
AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt();
if (!render_view_host_ext) return;
@@ -163,7 +168,9 @@ void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) {
render_view_host->OnWebkitPreferencesChanged();
}
-void AwSettings::UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateInitialPageScaleLocked(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
AwRenderViewHostExt* rvhe = GetAwRenderViewHostExt();
if (!rvhe) return;
@@ -178,7 +185,9 @@ void AwSettings::UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj) {
}
}
-void AwSettings::UpdateFormDataPreferencesLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateFormDataPreferencesLocked(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
if (!web_contents()) return;
AwContents* contents = AwContents::FromWebContents(web_contents());
if (!contents) return;
@@ -186,7 +195,9 @@ void AwSettings::UpdateFormDataPreferencesLocked(JNIEnv* env, jobject obj) {
contents->SetSaveFormData(Java_AwSettings_getSaveFormDataLocked(env, obj));
}
-void AwSettings::UpdateRendererPreferencesLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateRendererPreferencesLocked(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
if (!web_contents()) return;
bool update_prefs = false;
@@ -215,7 +226,9 @@ void AwSettings::UpdateRendererPreferencesLocked(JNIEnv* env, jobject obj) {
host->SyncRendererPrefs();
}
-void AwSettings::UpdateOffscreenPreRasterLocked(JNIEnv* env, jobject obj) {
+void AwSettings::UpdateOffscreenPreRasterLocked(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
AwContents* contents = AwContents::FromWebContents(web_contents());
if (contents) {
contents->SetOffscreenPreRaster(
@@ -253,8 +266,9 @@ void AwSettings::PopulateWebPreferences(WebPreferences* web_prefs) {
env, obj, reinterpret_cast<jlong>(web_prefs));
}
-void AwSettings::PopulateWebPreferencesLocked(
- JNIEnv* env, jobject obj, jlong web_prefs_ptr) {
+void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jlong web_prefs_ptr) {
AwRenderViewHostExt* render_view_host_ext = GetAwRenderViewHostExt();
if (!render_view_host_ext) return;
diff --git a/android_webview/native/aw_settings.h b/android_webview/native/aw_settings.h
index 56b09ad..79d4f75 100644
--- a/android_webview/native/aw_settings.h
+++ b/android_webview/native/aw_settings.h
@@ -29,16 +29,33 @@ class AwSettings : public content::WebContentsObserver {
// Called from Java. Methods with "Locked" suffix require that the settings
// access lock is held during their execution.
- void Destroy(JNIEnv* env, jobject obj);
- void PopulateWebPreferencesLocked(JNIEnv* env, jobject obj, jlong web_prefs);
- void ResetScrollAndScaleState(JNIEnv* env, jobject obj);
- void UpdateEverythingLocked(JNIEnv* env, jobject obj);
- void UpdateInitialPageScaleLocked(JNIEnv* env, jobject obj);
- void UpdateUserAgentLocked(JNIEnv* env, jobject obj);
- void UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj);
- void UpdateFormDataPreferencesLocked(JNIEnv* env, jobject obj);
- void UpdateRendererPreferencesLocked(JNIEnv* env, jobject obj);
- void UpdateOffscreenPreRasterLocked(JNIEnv* env, jobject obj);
+ void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
+ void PopulateWebPreferencesLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj,
+ jlong web_prefs);
+ void ResetScrollAndScaleState(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateEverythingLocked(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateInitialPageScaleLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateUserAgentLocked(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateWebkitPreferencesLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateFormDataPreferencesLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateRendererPreferencesLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
+ void UpdateOffscreenPreRasterLocked(
+ JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& obj);
void PopulateWebPreferences(content::WebPreferences* web_prefs);
diff --git a/android_webview/native/permission/aw_permission_request.cc b/android_webview/native/permission/aw_permission_request.cc
index f25db3e..27f0b5b 100644
--- a/android_webview/native/permission/aw_permission_request.cc
+++ b/android_webview/native/permission/aw_permission_request.cc
@@ -46,7 +46,7 @@ AwPermissionRequest::~AwPermissionRequest() {
}
void AwPermissionRequest::OnAccept(JNIEnv* env,
- jobject jcaller,
+ const JavaParamRef<jobject>& jcaller,
jboolean accept) {
OnAcceptInternal(accept);
}
@@ -66,7 +66,8 @@ void AwPermissionRequest::DeleteThis() {
j_request.obj());
}
-void AwPermissionRequest::Destroy(JNIEnv* env, jobject obj) {
+void AwPermissionRequest::Destroy(JNIEnv* env,
+ const JavaParamRef<jobject>& obj) {
delete this;
}
diff --git a/android_webview/native/permission/aw_permission_request.h b/android_webview/native/permission/aw_permission_request.h
index d146538..f016799 100644
--- a/android_webview/native/permission/aw_permission_request.h
+++ b/android_webview/native/permission/aw_permission_request.h
@@ -41,8 +41,10 @@ class AwPermissionRequest {
// Invoked by Java peer when request is processed, |granted| indicates the
// request was granted or not.
- void OnAccept(JNIEnv* env, jobject jcaller, jboolean granted);
- void Destroy(JNIEnv* env, jobject obj);
+ void OnAccept(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jcaller,
+ jboolean granted);
+ void Destroy(JNIEnv* env, const base::android::JavaParamRef<jobject>& obj);
// Return the origin which initiated the request.
const GURL& GetOrigin();