diff options
author | torne <torne@chromium.org> | 2015-12-04 06:10:11 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-04 14:11:14 +0000 |
commit | 5728d85d64e4e6ff62c520cb2ddcf17cf17e7aaa (patch) | |
tree | b96092cd890aac99fa13aa7e11d22fef3e18fcf0 /android_webview/native | |
parent | 91f34c5d7de95f013d3023ab0a2664e3358710e9 (diff) | |
download | chromium_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')
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(); |