diff --git a/BUILD.gn b/BUILD.gn index 01af6ccf..fea74333 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -694,6 +694,7 @@ deps += [ "//media/mojo:media_mojo_unittests", "//mojo/common:mojo_common_perftests", + "//services/video_capture:video_capture_unittests", ] }
diff --git a/DEPS b/DEPS index 30a2b8ae..200f5c2 100644 --- a/DEPS +++ b/DEPS
@@ -36,11 +36,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '36c38cbb29744e0b5390a38367e47c0c74287c2d', + 'skia_revision': 'af68fa11ed61d8a14d9ca15996e2da6ca06795eb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '88ebd10a5840f3785e094f781d358f5903b89725', + 'v8_revision': '61cd47b848e152850794cecfb11d9fbc0d80d165', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -92,7 +92,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'b6a06a87148e93653121ca968ed4e3c78721b3cd', + 'catapult_revision': '2e56382afe75ca2446bc77605b4c3fd0b38c3f9c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -219,7 +219,7 @@ Var('chromium_git') + '/native_client/src/third_party/scons-2.0.1.git' + '@' + '1c1550e17fc26355d08627fbdec13d8291227067', 'src/third_party/webrtc': - Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + 'd7b36c11589180cac2dc4d42ba187cb0801c4bc5', # commit position 13766 + Var('chromium_git') + '/external/webrtc/trunk/webrtc.git' + '@' + '2c947a864b3d18a074e87b6198e624b19d5f3ede', # commit position 13783 'src/third_party/openmax_dl': Var('chromium_git') + '/external/webrtc/deps/third_party/openmax.git' + '@' + Var('openmax_dl_revision'),
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn index f0a3b53..3f5bebb 100644 --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn
@@ -100,33 +100,44 @@ repack("repack_pack") { sources = [ - "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak", "$root_gen_dir/blink/public/resources/blink_resources.pak", - "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/net/net_resources.pak", - "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", "$target_gen_dir/aw_resources.pak", ] deps = [ ":generate_aw_resources", "//content:resources", + "//net:net_resources", + "//third_party/WebKit/public:resources", + ] + output = "$target_gen_dir/resources.pak" +} + +repack("repack_100_percent") { + sources = [ + "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak", + "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", + "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", + ] + deps = [ "//content/app/resources", "//net:net_resources", "//third_party/WebKit/public:image_resources", - "//third_party/WebKit/public:resources", "//ui/resources", ] - output = "$target_gen_dir/webviewchromium.pak" + output = "$target_gen_dir/chrome_100_percent.pak" } webview_license_path = "$target_gen_dir/webview_licenses.notice" android_assets("pak_file_assets") { sources = [ - "$target_gen_dir/webviewchromium.pak", + "$target_gen_dir/chrome_100_percent.pak", + "$target_gen_dir/resources.pak", ] deps = [ + ":repack_100_percent", ":repack_pack", ] disable_compression = true
diff --git a/android_webview/apk/java/proguard.flags b/android_webview/apk/java/proguard.flags index d4a0a47..c94cca6 100644 --- a/android_webview/apk/java/proguard.flags +++ b/android_webview/apk/java/proguard.flags
@@ -3,6 +3,24 @@ # tables. -keepnames class *** { *; } +# The following chart was created on Aug. 11, 2016, to decide on 3 optimization +# passes. +# optimization passes | time | .dex size | dirty memory +# ----------------------------------------------------------------- +# 1 | 0:13 | 1022588 | 97772 +# 2 | 0:17 | 1019200 | 97472 +# 3 | 0:18 | 1018472 | 97424 +# 4 | 0:21 | 1018392 | 97416 +# 5 | 0:26 | 1018360 | 97416 +-optimizationpasses 3 + +# Class merging messes up stacktraces beyond the point of them being +# deobfuscatable. If turned on, it would give us a 1% reduction in .dex size. +-optimizations !class/merging/* + +# Allowing Proguard to change modifiers. This change shrinks the .dex size by +# 3.7%. +-allowaccessmodification # Keep the factory and its public members; it's the main entry point used by the # framework.
diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc index 56c9374..769fcf4 100644 --- a/android_webview/browser/aw_browser_main_parts.cc +++ b/android_webview/browser/aw_browser_main_parts.cc
@@ -99,27 +99,19 @@ std::string locale = ui::ResourceBundle::InitSharedInstanceWithLocale( base::android::GetDefaultLocale(), NULL, - ui::ResourceBundle::DO_NOT_LOAD_COMMON_RESOURCES); + ui::ResourceBundle::LOAD_COMMON_RESOURCES); if (locale.empty()) { LOG(WARNING) << "Failed to load locale .pak from the apk. " "Bringing up WebView without any locale"; } base::i18n::SetICUDefaultLocale(locale); - // Try to directly mmap the webviewchromium.pak from the apk. Fall back to - // load from file, using PATH_SERVICE, otherwise. - base::FilePath base_pak_file_path; - PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &base_pak_file_path); - // If Webview is a separate APK from Chrome then it uses webviewchromium.pak - base::FilePath webview_pak_file_path = base_pak_file_path.AppendASCII( - "webviewchromium.pak"); - if (!ui::LoadMainAndroidPackFile("assets/webviewchromium.pak", - webview_pak_file_path)) { - // If it the same APK as Chrome (Monochrome) then it shares resources.pak - base::FilePath chromium_pak_file_path = base_pak_file_path.AppendASCII( - "resources.pak"); - ui::LoadMainAndroidPackFile("assets/resources.pak", chromium_pak_file_path); - } + // Try to directly mmap the resources.pak from the apk. Fall back to load + // from file, using PATH_SERVICE, otherwise. + base::FilePath pak_file_path; + PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_file_path); + pak_file_path = pak_file_path.AppendASCII("resources.pak"); + ui::LoadMainAndroidPackFile("assets/resources.pak", pak_file_path); base::android::MemoryPressureListenerAndroid::RegisterSystemCallback( base::android::AttachCurrentThread());
diff --git a/android_webview/native/android_protocol_handler.cc b/android_webview/native/android_protocol_handler.cc index 51c64f79..2e61dbc8 100644 --- a/android_webview/native/android_protocol_handler.cc +++ b/android_webview/native/android_protocol_handler.cc
@@ -112,12 +112,7 @@ static ScopedJavaLocalRef<jobject> GetResourceContext(JNIEnv* env) { if (g_resource_context) return g_resource_context->get(env); - ScopedJavaLocalRef<jobject> context; - // We have to reset as GetApplicationContext() returns a jobject with a - // global ref. The constructor that takes a jobject would expect a local ref - // and would assert. - context.Reset(env, base::android::GetApplicationContext()); - return context; + return ScopedJavaLocalRef<jobject>(base::android::GetApplicationContext()); } // AndroidStreamReaderURLRequestJobDelegateImpl ------------------------------- @@ -140,9 +135,7 @@ ConvertUTF8ToJavaString(env, url.spec()); ScopedJavaLocalRef<jobject> stream = android_webview::Java_AndroidProtocolHandler_open( - env, - GetResourceContext(env).obj(), - jurl.obj()); + env, GetResourceContext(env), jurl); if (stream.is_null()) { DLOG(ERROR) << "Unable to open input stream for Android URL"; @@ -176,9 +169,7 @@ InputStreamImpl::FromInputStream(stream); ScopedJavaLocalRef<jstring> returned_type = android_webview::Java_AndroidProtocolHandler_getMimeType( - env, - GetResourceContext(env).obj(), - stream_impl->jobj(), url.obj()); + env, GetResourceContext(env), stream_impl->jobj(), url); if (returned_type.is_null()) return false;
diff --git a/android_webview/native/aw_autofill_client.cc b/android_webview/native/aw_autofill_client.cc index 481dfdd..194372e 100644 --- a/android_webview/native/aw_autofill_client.cc +++ b/android_webview/native/aw_autofill_client.cc
@@ -134,8 +134,7 @@ ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString(env, suggestions[i].label); Java_AwAutofillClient_addToAutofillSuggestionArray( - env, data_array.obj(), i, name.obj(), label.obj(), - suggestions[i].frontend_id); + env, data_array, i, name, label, suggestions[i].frontend_id); } ui::ViewAndroid* view_android = web_contents_->GetNativeView(); if (!view_android) @@ -150,11 +149,7 @@ return; view_android->SetAnchorRect(view, element_bounds); - Java_AwAutofillClient_showAutofillPopup(env, - obj.obj(), - view.obj(), - is_rtl, - data_array.obj()); + Java_AwAutofillClient_showAutofillPopup(env, obj, view, is_rtl, data_array); } void AwAutofillClient::UpdateAutofillPopupDataListValues( @@ -171,7 +166,7 @@ if (obj.is_null()) return; delegate_.reset(); - Java_AwAutofillClient_hideAutofillPopup(env, obj.obj()); + Java_AwAutofillClient_hideAutofillPopup(env, obj); } bool AwAutofillClient::IsAutocompleteEnabled() {
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc index 75cb684..25a8c58 100644 --- a/android_webview/native/aw_contents.cc +++ b/android_webview/native/aw_contents.cc
@@ -279,7 +279,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwContents_setAwAutofillClient(env, obj.obj(), client); + Java_AwContents_setAwAutofillClient(env, obj, client); } AwContents::~AwContents() { @@ -377,9 +377,8 @@ namespace { void DocumentHasImagesCallback(const ScopedJavaGlobalRef<jobject>& message, bool has_images) { - Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), - has_images, - message.obj()); + Java_AwContents_onDocumentHasImagesResponse(AttachCurrentThread(), has_images, + message); } } // namespace @@ -400,9 +399,8 @@ JNIEnv* env = AttachCurrentThread(); // Android files are UTF8, so the path conversion below is safe. Java_AwContents_generateMHTMLCallback( - env, - ConvertUTF8ToJavaString(env, path.AsUTF8Unsafe()).obj(), - size, callback->obj()); + env, ConvertUTF8ToJavaString(env, path.AsUTF8Unsafe()), size, + callback->obj()); } } // namespace @@ -441,8 +439,7 @@ ScopedJavaLocalRef<jstring> jrealm = ConvertUTF8ToJavaString(env, realm); devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( "onReceivedHttpAuthRequest"); - Java_AwContents_onReceivedHttpAuthRequest(env, obj.obj(), handler.obj(), - jhost.obj(), jrealm.obj()); + Java_AwContents_onReceivedHttpAuthRequest(env, obj, handler, jhost, jrealm); return true; } @@ -486,9 +483,7 @@ ConvertUTF8ToJavaString(env, origin.spec())); devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( "onGeolocationPermissionsShowPrompt"); - Java_AwContents_onGeolocationPermissionsShowPrompt(env, - j_ref.obj(), - j_origin.obj()); + Java_AwContents_onGeolocationPermissionsShowPrompt(env, j_ref, j_origin); } } @@ -562,7 +557,7 @@ if (j_ref.obj()) { devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( "onGeolocationPermissionsHidePrompt"); - Java_AwContents_onGeolocationPermissionsHidePrompt(env, j_ref.obj()); + Java_AwContents_onGeolocationPermissionsHidePrompt(env, j_ref); } if (!pending_geolocation_prompts_.empty()) { ShowGeolocationPromptHelper(java_ref_, @@ -585,7 +580,7 @@ return; } - Java_AwContents_onPermissionRequest(env, j_ref.obj(), j_request.obj()); + Java_AwContents_onPermissionRequest(env, j_ref, j_request); } void AwContents::OnPermissionRequestCanceled(AwPermissionRequest* request) { @@ -595,8 +590,7 @@ if (j_request.is_null() || j_ref.is_null()) return; - Java_AwContents_onPermissionRequestCanceled( - env, j_ref.obj(), j_request.obj()); + Java_AwContents_onPermissionRequestCanceled(env, j_ref, j_request); } void AwContents::PreauthorizePermission(JNIEnv* env, @@ -629,7 +623,7 @@ if (obj.is_null()) return; - if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj.obj())) { + if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj)) { ShowGeolocationPrompt(origin, callback); return; } @@ -644,7 +638,7 @@ if (obj.is_null()) return; - if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj.obj())) { + if (Java_AwContents_useLegacyGeolocationPermissionAPI(env, obj)) { HideGeolocationPrompt(origin); return; } @@ -712,8 +706,8 @@ if (obj.is_null()) return; - Java_AwContents_onFindResultReceived( - env, obj.obj(), active_ordinal, match_count, finished); + Java_AwContents_onFindResultReceived(env, obj, active_ordinal, match_count, + finished); } bool AwContents::ShouldDownloadFavicon(const GURL& icon_url) { @@ -736,8 +730,7 @@ entry->GetFavicon().image = gfx::Image::CreateFrom1xBitmap(bitmap); } - Java_AwContents_onReceivedIcon( - env, obj.obj(), gfx::ConvertToJavaBitmap(&bitmap).obj()); + Java_AwContents_onReceivedIcon(env, obj, gfx::ConvertToJavaBitmap(&bitmap)); } void AwContents::OnReceivedTouchIconUrl(const std::string& url, @@ -749,7 +742,7 @@ return; Java_AwContents_onReceivedTouchIconUrl( - env, obj.obj(), ConvertUTF8ToJavaString(env, url).obj(), precomposed); + env, obj, ConvertUTF8ToJavaString(env, url), precomposed); } void AwContents::PostInvalidate() { @@ -757,7 +750,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_AwContents_postInvalidateOnAnimation(env, obj.obj()); + Java_AwContents_postInvalidateOnAnimation(env, obj); } void AwContents::OnNewPicture() { @@ -767,7 +760,7 @@ if (!obj.is_null()) { devtools_instrumentation::ScopedEmbedderCallbackTask embedder_callback( "onNewPicture"); - Java_AwContents_onNewPicture(env, obj.obj()); + Java_AwContents_onNewPicture(env, obj); } } @@ -831,13 +824,8 @@ if (data.img_src.is_valid()) img_src = ConvertUTF8ToJavaString(env, data.img_src.spec()); - Java_AwContents_updateHitTestData(env, - obj, - data.type, - extra_data_for_type.obj(), - href.obj(), - anchor_text.obj(), - img_src.obj()); + Java_AwContents_updateHitTestData(env, obj, data.type, extra_data_for_type, + href, anchor_text, img_src); } void AwContents::OnSizeChanged(JNIEnv* env, @@ -1031,9 +1019,7 @@ return gfx::Point(); std::vector<int> location; base::android::JavaIntArrayToIntVector( - env, - Java_AwContents_getLocationOnScreen(env, obj.obj()).obj(), - &location); + env, Java_AwContents_getLocationOnScreen(env, obj).obj(), &location); return gfx::Point(location[0], location[1]); } @@ -1043,8 +1029,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwContents_scrollContainerViewTo( - env, obj.obj(), new_value.x(), new_value.y()); + Java_AwContents_scrollContainerViewTo(env, obj, new_value.x(), new_value.y()); } void AwContents::UpdateScrollState(const gfx::Vector2d& max_scroll_offset, @@ -1057,15 +1042,10 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwContents_updateScrollState(env, - obj.obj(), - max_scroll_offset.x(), - max_scroll_offset.y(), - contents_size_dip.width(), - contents_size_dip.height(), - page_scale_factor, - min_page_scale_factor, - max_page_scale_factor); + Java_AwContents_updateScrollState( + env, obj, max_scroll_offset.x(), max_scroll_offset.y(), + contents_size_dip.width(), contents_size_dip.height(), page_scale_factor, + min_page_scale_factor, max_page_scale_factor); } void AwContents::DidOverscroll(const gfx::Vector2d& overscroll_delta, @@ -1075,7 +1055,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwContents_didOverscroll(env, obj.obj(), overscroll_delta.x(), + Java_AwContents_didOverscroll(env, obj, overscroll_delta.x(), overscroll_delta.y(), overscroll_velocity.x(), overscroll_velocity.y()); } @@ -1118,8 +1098,8 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwContents_onWebLayoutPageScaleFactorChanged(env, obj.obj(), - page_scale_factor); + Java_AwContents_onWebLayoutPageScaleFactorChanged(env, obj, + page_scale_factor); } void AwContents::OnWebLayoutContentsSizeChanged( @@ -1130,7 +1110,7 @@ if (obj.is_null()) return; Java_AwContents_onWebLayoutContentsSizeChanged( - env, obj.obj(), contents_size.width(), contents_size.height()); + env, obj, contents_size.width(), contents_size.height()); } jlong AwContents::CapturePicture(JNIEnv* env, @@ -1158,8 +1138,8 @@ ScopedJavaLocalRef<jobject> obj = java_ref.get(env); if (obj.is_null()) return; - Java_AwContents_invokeVisualStateCallback( - env, obj.obj(), callback->obj(), request_id); + Java_AwContents_invokeVisualStateCallback(env, obj, callback->obj(), + request_id); } } // namespace
diff --git a/android_webview/native/aw_contents_client_bridge.cc b/android_webview/native/aw_contents_client_bridge.cc index 9b4e00ff..1a6e11b9 100644 --- a/android_webview/native/aw_contents_client_bridge.cc +++ b/android_webview/native/aw_contents_client_bridge.cc
@@ -65,8 +65,7 @@ if (!obj.is_null()) { // Clear the weak reference from the java peer to the native object since // it is possible that java object lifetime can exceed the AwContens. - Java_AwContentsClientBridge_setNativeContentsClientBridge(env, obj.obj(), - 0); + Java_AwContentsClientBridge_setNativeContentsClientBridge(env, obj, 0); } for (IDMap<content::ClientCertificateDelegate>::iterator iter( @@ -101,7 +100,7 @@ int request_id = pending_cert_error_callbacks_.Add( new CertErrorCallback(callback)); *cancel_request = !Java_AwContentsClientBridge_allowCertificateError( - env, obj.obj(), cert_error, jcert.obj(), jurl.obj(), request_id); + env, obj, cert_error, jcert, jurl, request_id); // if the request is cancelled, then cancel the stored callback if (*cancel_request) { pending_cert_error_callbacks_.Remove(request_id); @@ -183,12 +182,7 @@ env, cert_request_info->host_and_port.host()); Java_AwContentsClientBridge_selectClientCertificate( - env, - obj.obj(), - request_id, - key_types_ref.obj(), - principals_ref.obj(), - host_name_ref.obj(), + env, obj, request_id, key_types_ref, principals_ref, host_name_ref, cert_request_info->host_and_port.port()); // Release the guard. @@ -291,26 +285,22 @@ switch (message_type) { case content::JAVASCRIPT_MESSAGE_TYPE_ALERT: { devtools_instrumentation::ScopedEmbedderCallbackTask("onJsAlert"); - Java_AwContentsClientBridge_handleJsAlert( - env, obj.obj(), jurl.obj(), jmessage.obj(), callback_id); + Java_AwContentsClientBridge_handleJsAlert(env, obj, jurl, jmessage, + callback_id); break; } case content::JAVASCRIPT_MESSAGE_TYPE_CONFIRM: { devtools_instrumentation::ScopedEmbedderCallbackTask("onJsConfirm"); - Java_AwContentsClientBridge_handleJsConfirm( - env, obj.obj(), jurl.obj(), jmessage.obj(), callback_id); + Java_AwContentsClientBridge_handleJsConfirm(env, obj, jurl, jmessage, + callback_id); break; } case content::JAVASCRIPT_MESSAGE_TYPE_PROMPT: { ScopedJavaLocalRef<jstring> jdefault_value( ConvertUTF16ToJavaString(env, default_prompt_text)); devtools_instrumentation::ScopedEmbedderCallbackTask("onJsPrompt"); - Java_AwContentsClientBridge_handleJsPrompt(env, - obj.obj(), - jurl.obj(), - jmessage.obj(), - jdefault_value.obj(), - callback_id); + Java_AwContentsClientBridge_handleJsPrompt(env, obj, jurl, jmessage, + jdefault_value, callback_id); break; } default: @@ -341,8 +331,8 @@ ConvertUTF16ToJavaString(env, message_text)); devtools_instrumentation::ScopedEmbedderCallbackTask("onJsBeforeUnload"); - Java_AwContentsClientBridge_handleJsBeforeUnload( - env, obj.obj(), jurl.obj(), jmessage.obj(), callback_id); + Java_AwContentsClientBridge_handleJsBeforeUnload(env, obj, jurl, jmessage, + callback_id); } bool AwContentsClientBridge::ShouldOverrideUrlLoading(const base::string16& url, @@ -357,7 +347,7 @@ devtools_instrumentation::ScopedEmbedderCallbackTask( "shouldOverrideUrlLoading"); return Java_AwContentsClientBridge_shouldOverrideUrlLoading( - env, obj.obj(), jurl.obj(), has_user_gesture, is_redirect, is_main_frame); + env, obj, jurl, has_user_gesture, is_redirect, is_main_frame); } void AwContentsClientBridge::ConfirmJsResult(JNIEnv* env,
diff --git a/android_webview/native/aw_contents_client_bridge_unittest.cc b/android_webview/native/aw_contents_client_bridge_unittest.cc index 71fe7d29..cad777c 100644 --- a/android_webview/native/aw_contents_client_bridge_unittest.cc +++ b/android_webview/native/aw_contents_client_bridge_unittest.cc
@@ -111,7 +111,7 @@ base::RunLoop().RunUntilIdle(); EXPECT_EQ(0, cert_selected_callbacks_); ScopedJavaLocalRef<jobjectArray> key_types = - Java_MockAwContentsClientBridge_getKeyTypes(env_, jbridge_.obj()); + Java_MockAwContentsClientBridge_getKeyTypes(env_, jbridge_); std::vector<std::string> vec; base::android::AppendJavaStringArrayToStringVector(env_, key_types.obj(), @@ -131,8 +131,8 @@ base::WrapUnique(new TestClientCertificateDelegate(this))); bridge_->ProvideClientCertificateResponse( env_, jbridge_, - Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_.obj()), - Java_MockAwContentsClientBridge_createTestCertChain(env_, jbridge_.obj()), + Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_), + Java_MockAwContentsClientBridge_createTestCertChain(env_, jbridge_), nullptr); base::RunLoop().RunUntilIdle(); EXPECT_EQ(nullptr, selected_cert_); @@ -148,8 +148,7 @@ bridge_->SelectClientCertificate( cert_request_info_.get(), base::WrapUnique(new TestClientCertificateDelegate(this))); - int requestId = - Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_.obj()); + int requestId = Java_MockAwContentsClientBridge_getRequestId(env_, jbridge_); bridge_->ProvideClientCertificateResponse(env_, jbridge_, requestId, nullptr, nullptr); base::RunLoop().RunUntilIdle();
diff --git a/android_webview/native/aw_contents_io_thread_client_impl.cc b/android_webview/native/aw_contents_io_thread_client_impl.cc index a56c2bc..2640667 100644 --- a/android_webview/native/aw_contents_io_thread_client_impl.cc +++ b/android_webview/native/aw_contents_io_thread_client_impl.cc
@@ -307,8 +307,7 @@ JNIEnv* env = AttachCurrentThread(); return static_cast<AwContentsIoThreadClient::CacheMode>( - Java_AwContentsIoThreadClient_getCacheMode( - env, java_object_.obj())); + Java_AwContentsIoThreadClient_getCacheMode(env, java_object_)); } @@ -356,8 +355,8 @@ JNIEnv* env = AttachCurrentThread(); if (bg_thread_client_object_.is_null() && !java_object_.is_null()) { bg_thread_client_object_.Reset( - Java_AwContentsIoThreadClient_getBackgroundThreadClient( - env, java_object_.obj())); + Java_AwContentsIoThreadClient_getBackgroundThreadClient(env, + java_object_)); } if (!bg_thread_client_object_.is_null()) { get_response = base::Bind( @@ -374,8 +373,8 @@ return false; JNIEnv* env = AttachCurrentThread(); - return Java_AwContentsIoThreadClient_shouldBlockContentUrls( - env, java_object_.obj()); + return Java_AwContentsIoThreadClient_shouldBlockContentUrls(env, + java_object_); } bool AwContentsIoThreadClientImpl::ShouldBlockFileUrls() const { @@ -384,8 +383,7 @@ return false; JNIEnv* env = AttachCurrentThread(); - return Java_AwContentsIoThreadClient_shouldBlockFileUrls( - env, java_object_.obj()); + return Java_AwContentsIoThreadClient_shouldBlockFileUrls(env, java_object_); } bool AwContentsIoThreadClientImpl::ShouldAcceptThirdPartyCookies() const { @@ -395,7 +393,7 @@ JNIEnv* env = AttachCurrentThread(); return Java_AwContentsIoThreadClient_shouldAcceptThirdPartyCookies( - env, java_object_.obj()); + env, java_object_); } bool AwContentsIoThreadClientImpl::ShouldBlockNetworkLoads() const { @@ -404,8 +402,8 @@ return false; JNIEnv* env = AttachCurrentThread(); - return Java_AwContentsIoThreadClient_shouldBlockNetworkLoads( - env, java_object_.obj()); + return Java_AwContentsIoThreadClient_shouldBlockNetworkLoads(env, + java_object_); } void AwContentsIoThreadClientImpl::NewDownload( @@ -429,13 +427,8 @@ ConvertUTF8ToJavaString(env, mime_type); Java_AwContentsIoThreadClient_onDownloadStart( - env, - java_object_.obj(), - jstring_url.obj(), - jstring_user_agent.obj(), - jstring_content_disposition.obj(), - jstring_mime_type.obj(), - content_length); + env, java_object_, jstring_url, jstring_user_agent, + jstring_content_disposition, jstring_mime_type, content_length); } void AwContentsIoThreadClientImpl::NewLoginRequest(const string& realm, @@ -453,8 +446,8 @@ if (!account.empty()) jaccount = ConvertUTF8ToJavaString(env, account); - Java_AwContentsIoThreadClient_newLoginRequest( - env, java_object_.obj(), jrealm.obj(), jaccount.obj(), jargs.obj()); + Java_AwContentsIoThreadClient_newLoginRequest(env, java_object_, jrealm, + jaccount, jargs); } void AwContentsIoThreadClientImpl::OnReceivedError( @@ -471,16 +464,10 @@ env, net::ErrorToString(request->status().error())); Java_AwContentsIoThreadClient_onReceivedError( - env, - java_object_.obj(), - web_request.jstring_url.obj(), - web_request.is_main_frame, - web_request.has_user_gesture, - web_request.jstring_method.obj(), - web_request.jstringArray_header_names.obj(), - web_request.jstringArray_header_values.obj(), - error_code, - jstring_description.obj()); + env, java_object_, web_request.jstring_url, web_request.is_main_frame, + web_request.has_user_gesture, web_request.jstring_method, + web_request.jstringArray_header_names, + web_request.jstringArray_header_values, error_code, jstring_description); } void AwContentsIoThreadClientImpl::OnReceivedHttpError( @@ -520,20 +507,12 @@ ToJavaArrayOfStrings(env, response_header_values); Java_AwContentsIoThreadClient_onReceivedHttpError( - env, - java_object_.obj(), - web_request.jstring_url.obj(), - web_request.is_main_frame, - web_request.has_user_gesture, - web_request.jstring_method.obj(), - web_request.jstringArray_header_names.obj(), - web_request.jstringArray_header_values.obj(), - jstring_mime_type.obj(), - jstring_encoding.obj(), - status_code, - jstring_reason.obj(), - jstringArray_response_header_names.obj(), - jstringArray_response_header_values.obj()); + env, java_object_, web_request.jstring_url, web_request.is_main_frame, + web_request.has_user_gesture, web_request.jstring_method, + web_request.jstringArray_header_names, + web_request.jstringArray_header_values, jstring_mime_type, + jstring_encoding, status_code, jstring_reason, + jstringArray_response_header_names, jstringArray_response_header_values); } } // namespace android_webview
diff --git a/android_webview/native/aw_gl_functor.cc b/android_webview/native/aw_gl_functor.cc index 2a92546e..b9470f3 100644 --- a/android_webview/native/aw_gl_functor.cc +++ b/android_webview/native/aw_gl_functor.cc
@@ -51,7 +51,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return false; - return Java_AwGLFunctor_requestInvokeGL(env, obj.obj(), wait_for_completion); + return Java_AwGLFunctor_requestInvokeGL(env, obj, wait_for_completion); } void AwGLFunctor::DetachFunctorFromView() { @@ -59,7 +59,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_AwGLFunctor_detachFunctorFromView(env, obj.obj()); + Java_AwGLFunctor_detachFunctorFromView(env, obj); } void AwGLFunctor::Destroy(JNIEnv* env,
diff --git a/android_webview/native/aw_http_auth_handler.cc b/android_webview/native/aw_http_auth_handler.cc index a310863..263bf7f 100644 --- a/android_webview/native/aw_http_auth_handler.cc +++ b/android_webview/native/aw_http_auth_handler.cc
@@ -35,7 +35,7 @@ AwHttpAuthHandler:: ~AwHttpAuthHandler() { DCHECK_CURRENTLY_ON(BrowserThread::UI); Java_AwHttpAuthHandler_handlerDestroyed(base::android::AttachCurrentThread(), - http_auth_handler_.obj()); + http_auth_handler_); } void AwHttpAuthHandler::Proceed(JNIEnv* env,
diff --git a/android_webview/native/aw_message_port_service_impl.cc b/android_webview/native/aw_message_port_service_impl.cc index 3aaa580..2836530 100644 --- a/android_webview/native/aw_message_port_service_impl.cc +++ b/android_webview/native/aw_message_port_service_impl.cc
@@ -40,8 +40,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwMessagePortService_unregisterNativeAwMessagePortService(env, - obj.obj()); + Java_AwMessagePortService_unregisterNativeAwMessagePortService(env, obj); } void AwMessagePortServiceImpl::Init(JNIEnv* env, jobject obj) { @@ -105,11 +104,8 @@ ScopedJavaLocalRef<jstring> jmsg = ConvertUTF16ToJavaString(env, value); ScopedJavaLocalRef<jintArray> jports = ToJavaIntArray(env, sent_message_port_ids); - Java_AwMessagePortService_onReceivedMessage(env, - jobj.obj(), - message_port_id, - jmsg.obj(), - jports.obj()); + Java_AwMessagePortService_onReceivedMessage(env, jobj, message_port_id, jmsg, + jports); } void AwMessagePortServiceImpl::OnMessagePortMessageFilterClosing( @@ -218,8 +214,8 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwMessagePortService_onMessageChannelCreated(env, obj.obj(), *port1, - *port2, ports->obj()); + Java_AwMessagePortService_onMessageChannelCreated(env, obj, *port1, *port2, + ports->obj()); } // Adds a new port to the message port service.
diff --git a/android_webview/native/aw_pdf_exporter.cc b/android_webview/native/aw_pdf_exporter.cc index 05aef83..a30bac6 100644 --- a/android_webview/native/aw_pdf_exporter.cc +++ b/android_webview/native/aw_pdf_exporter.cc
@@ -32,7 +32,7 @@ if (obj.is_null()) return; // Clear the Java peer's weak pointer to |this| object. - Java_AwPdfExporter_setNativeAwPdfExporter(env, obj.obj(), 0); + Java_AwPdfExporter_setNativeAwPdfExporter(env, obj, 0); } void AwPdfExporter::ExportToPdf(JNIEnv* env, @@ -98,7 +98,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_AwPdfExporter_didExportPdf(env, obj.obj(), success); + Java_AwPdfExporter_didExportPdf(env, obj, success); } bool RegisterAwPdfExporter(JNIEnv* env) {
diff --git a/android_webview/native/aw_quota_manager_bridge_impl.cc b/android_webview/native/aw_quota_manager_bridge_impl.cc index b53b032..85d45b6 100644 --- a/android_webview/native/aw_quota_manager_bridge_impl.cc +++ b/android_webview/native/aw_quota_manager_bridge_impl.cc
@@ -284,12 +284,9 @@ return; Java_AwQuotaManagerBridge_onGetOriginsCallback( - env, - obj.obj(), - jcallback_id, - base::android::ToJavaArrayOfStrings(env, origin).obj(), - base::android::ToJavaLongArray(env, usage).obj(), - base::android::ToJavaLongArray(env, quota).obj()); + env, obj, jcallback_id, base::android::ToJavaArrayOfStrings(env, origin), + base::android::ToJavaLongArray(env, usage), + base::android::ToJavaLongArray(env, quota)); } namespace { @@ -360,7 +357,7 @@ return; Java_AwQuotaManagerBridge_onGetUsageAndQuotaForOriginCallback( - env, obj.obj(), jcallback_id, is_quota, usage, quota); + env, obj, jcallback_id, is_quota, usage, quota); } bool RegisterAwQuotaManagerBridge(JNIEnv* env) {
diff --git a/android_webview/native/aw_web_contents_delegate.cc b/android_webview/native/aw_web_contents_delegate.cc index a586e44c..9588586 100644 --- a/android_webview/native/aw_web_contents_delegate.cc +++ b/android_webview/native/aw_web_contents_delegate.cc
@@ -143,8 +143,8 @@ bool create_popup = false; if (java_delegate.obj()) { - create_popup = Java_AwWebContentsDelegate_addNewContents(env, - java_delegate.obj(), is_dialog, user_gesture); + create_popup = Java_AwWebContentsDelegate_addNewContents( + env, java_delegate, is_dialog, user_gesture); } if (create_popup) { @@ -178,7 +178,7 @@ ScopedJavaLocalRef<jobject> java_delegate = GetJavaDelegate(env); if (java_delegate.obj()) { - Java_AwWebContentsDelegate_navigationStateChanged(env, java_delegate.obj(), + Java_AwWebContentsDelegate_navigationStateChanged(env, java_delegate, changed_flags); } } @@ -199,7 +199,7 @@ ScopedJavaLocalRef<jobject> java_delegate = GetJavaDelegate(env); if (java_delegate.obj()) { - Java_AwWebContentsDelegate_closeContents(env, java_delegate.obj()); + Java_AwWebContentsDelegate_closeContents(env, java_delegate); } } @@ -208,7 +208,7 @@ ScopedJavaLocalRef<jobject> java_delegate = GetJavaDelegate(env); if (java_delegate.obj()) { - Java_AwWebContentsDelegate_activateContents(env, java_delegate.obj()); + Java_AwWebContentsDelegate_activateContents(env, java_delegate); } } @@ -220,7 +220,7 @@ ScopedJavaLocalRef<jobject> java_delegate = GetJavaDelegate(env); if (java_delegate.obj()) { - Java_AwWebContentsDelegate_loadingStateChanged(env, java_delegate.obj()); + Java_AwWebContentsDelegate_loadingStateChanged(env, java_delegate); } }
diff --git a/android_webview/native/aw_web_resource_response_impl.cc b/android_webview/native/aw_web_resource_response_impl.cc index 16def09a..1ea1411 100644 --- a/android_webview/native/aw_web_resource_response_impl.cc +++ b/android_webview/native/aw_web_resource_response_impl.cc
@@ -30,7 +30,7 @@ std::unique_ptr<InputStream> AwWebResourceResponseImpl::GetInputStream( JNIEnv* env) const { ScopedJavaLocalRef<jobject> jstream = - Java_AwWebResourceResponse_getData(env, java_object_.obj()); + Java_AwWebResourceResponse_getData(env, java_object_); if (jstream.is_null()) return std::unique_ptr<InputStream>(); return base::WrapUnique(new InputStreamImpl(jstream)); @@ -39,7 +39,7 @@ bool AwWebResourceResponseImpl::GetMimeType(JNIEnv* env, std::string* mime_type) const { ScopedJavaLocalRef<jstring> jstring_mime_type = - Java_AwWebResourceResponse_getMimeType(env, java_object_.obj()); + Java_AwWebResourceResponse_getMimeType(env, java_object_); if (jstring_mime_type.is_null()) return false; *mime_type = ConvertJavaStringToUTF8(jstring_mime_type); @@ -49,7 +49,7 @@ bool AwWebResourceResponseImpl::GetCharset( JNIEnv* env, std::string* charset) const { ScopedJavaLocalRef<jstring> jstring_charset = - Java_AwWebResourceResponse_getCharset(env, java_object_.obj()); + Java_AwWebResourceResponse_getCharset(env, java_object_); if (jstring_charset.is_null()) return false; *charset = ConvertJavaStringToUTF8(jstring_charset); @@ -60,10 +60,9 @@ JNIEnv* env, int* status_code, std::string* reason_phrase) const { - int status = - Java_AwWebResourceResponse_getStatusCode(env, java_object_.obj()); + int status = Java_AwWebResourceResponse_getStatusCode(env, java_object_); ScopedJavaLocalRef<jstring> jstring_reason_phrase = - Java_AwWebResourceResponse_getReasonPhrase(env, java_object_.obj()); + Java_AwWebResourceResponse_getReasonPhrase(env, java_object_); if (status < 100 || status >= 600 || jstring_reason_phrase.is_null()) return false; *status_code = status; @@ -75,11 +74,9 @@ JNIEnv* env, net::HttpResponseHeaders* headers) const { ScopedJavaLocalRef<jobjectArray> jstringArray_headerNames = - Java_AwWebResourceResponse_getResponseHeaderNames(env, - java_object_.obj()); + Java_AwWebResourceResponse_getResponseHeaderNames(env, java_object_); ScopedJavaLocalRef<jobjectArray> jstringArray_headerValues = - Java_AwWebResourceResponse_getResponseHeaderValues(env, - java_object_.obj()); + Java_AwWebResourceResponse_getResponseHeaderValues(env, java_object_); if (jstringArray_headerNames.is_null() || jstringArray_headerValues.is_null()) return false; std::vector<std::string> header_names;
diff --git a/android_webview/native/cookie_manager.cc b/android_webview/native/cookie_manager.cc index 05bb0ce..df5b1c86c 100644 --- a/android_webview/native/cookie_manager.cc +++ b/android_webview/native/cookie_manager.cc
@@ -79,8 +79,7 @@ void Invoke(bool result) { if (!callback_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_AwCookieManager_invokeBooleanCookieCallback(env, callback_.obj(), - result); + Java_AwCookieManager_invokeBooleanCookieCallback(env, callback_, result); } }
diff --git a/android_webview/native/input_stream_impl.cc b/android_webview/native/input_stream_impl.cc index 0adbaab..efcf3118 100644 --- a/android_webview/native/input_stream_impl.cc +++ b/android_webview/native/input_stream_impl.cc
@@ -49,12 +49,12 @@ InputStreamImpl::~InputStreamImpl() { JNIEnv* env = AttachCurrentThread(); - Java_InputStreamUtil_close(env, jobject_.obj()); + Java_InputStreamUtil_close(env, jobject_); } bool InputStreamImpl::BytesAvailable(int* bytes_available) const { JNIEnv* env = AttachCurrentThread(); - int bytes = Java_InputStreamUtil_available(env, jobject_.obj()); + int bytes = Java_InputStreamUtil_available(env, jobject_); if (bytes == kExceptionThrownStatusCode) return false; *bytes_available = bytes; @@ -63,7 +63,7 @@ bool InputStreamImpl::Skip(int64_t n, int64_t* bytes_skipped) { JNIEnv* env = AttachCurrentThread(); - int bytes = Java_InputStreamUtil_skip(env, jobject_.obj(), n); + int bytes = Java_InputStreamUtil_skip(env, jobject_, n); if (bytes < 0) return false; if (bytes > n) @@ -91,7 +91,7 @@ while (remaining_length > 0) { const int max_transfer_length = std::min(remaining_length, kBufferSize); const int transfer_length = Java_InputStreamUtil_read( - env, jobject_.obj(), buffer, 0, max_transfer_length); + env, jobject_, buffer, 0, max_transfer_length); if (transfer_length == kExceptionThrownStatusCode) return false;
diff --git a/android_webview/native/java_browser_view_renderer_helper.cc b/android_webview/native/java_browser_view_renderer_helper.cc index 0387b58..8d8ee8d 100644 --- a/android_webview/native/java_browser_view_renderer_helper.cc +++ b/android_webview/native/java_browser_view_renderer_helper.cc
@@ -101,7 +101,7 @@ DCHECK(size.width() > 0); DCHECK(size.height() > 0); jbitmap_ = Java_JavaBrowserViewRendererHelper_createBitmap( - env, size.width(), size.height(), jcanvas_.obj()); + env, size.width(), size.height(), jcanvas_); if (!jbitmap_.obj()) return; @@ -134,7 +134,7 @@ } Java_JavaBrowserViewRendererHelper_drawBitmapIntoCanvas( - env, jbitmap_.obj(), jcanvas_.obj(), scroll_.x(), scroll_.y()); + env, jbitmap_, jcanvas_, scroll_.x(), scroll_.y()); } SkCanvas* AuxiliaryCanvasHolder::GetCanvas() {
diff --git a/android_webview/native/permission/aw_permission_request.cc b/android_webview/native/permission/aw_permission_request.cc index 1c1e34b..4f2f09b 100644 --- a/android_webview/native/permission/aw_permission_request.cc +++ b/android_webview/native/permission/aw_permission_request.cc
@@ -38,7 +38,7 @@ JNIEnv* env = AttachCurrentThread(); *java_peer = Java_AwPermissionRequest_create( env, reinterpret_cast<jlong>(this), - ConvertUTF8ToJavaString(env, GetOrigin().spec()).obj(), GetResources()); + ConvertUTF8ToJavaString(env, GetOrigin().spec()), GetResources()); java_ref_ = JavaObjectWeakGlobalRef(env, java_peer->obj()); } @@ -63,8 +63,7 @@ ScopedJavaLocalRef<jobject> j_request = GetJavaObject(); if (j_request.is_null()) return; - Java_AwPermissionRequest_destroyNative(AttachCurrentThread(), - j_request.obj()); + Java_AwPermissionRequest_destroyNative(AttachCurrentThread(), j_request); } void AwPermissionRequest::Destroy(JNIEnv* env,
diff --git a/android_webview/native/token_binding_manager_bridge.cc b/android_webview/native/token_binding_manager_bridge.cc index 7f4d4aa..2e71a06 100644 --- a/android_webview/native/token_binding_manager_bridge.cc +++ b/android_webview/native/token_binding_manager_bridge.cc
@@ -33,8 +33,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); if (status != net::OK || !key) { - Java_AwTokenBindingManager_onKeyReady(env, callback.obj(), nullptr, - nullptr); + Java_AwTokenBindingManager_onKeyReady(env, callback, nullptr, nullptr); return; } @@ -48,8 +47,8 @@ ScopedJavaLocalRef<jbyteArray> jpublic_key = base::android::ToJavaByteArray( env, public_key.data(), public_key.size()); - Java_AwTokenBindingManager_onKeyReady(env, callback.obj(), jprivate_key.obj(), - jpublic_key.obj()); + Java_AwTokenBindingManager_onKeyReady(env, callback, jprivate_key, + jpublic_key); } // Indicates webview client that key deletion is complete. @@ -58,7 +57,7 @@ if (callback.is_null()) return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_AwTokenBindingManager_onDeletionComplete(env, callback.obj()); + Java_AwTokenBindingManager_onDeletionComplete(env, callback); } } // namespace
diff --git a/android_webview/system_webview_apk_tmpl.gni b/android_webview/system_webview_apk_tmpl.gni index 92c7676..548536ea 100644 --- a/android_webview/system_webview_apk_tmpl.gni +++ b/android_webview/system_webview_apk_tmpl.gni
@@ -28,7 +28,10 @@ if (!is_java_debug) { proguard_enabled = true - proguard_configs = [ + if (!defined(proguard_configs)) { + proguard_configs = [] + } + proguard_configs += [ "//android_webview/apk/java/proguard.flags", "//base/android/base_proguard_config.flags", ]
diff --git a/ash/common/wm/window_cycle_list.cc b/ash/common/wm/window_cycle_list.cc index 848cffb..70620fbf 100644 --- a/ash/common/wm/window_cycle_list.cc +++ b/ash/common/wm/window_cycle_list.cc
@@ -18,6 +18,7 @@ #include "base/command_line.h" #include "ui/accessibility/ax_view_state.h" #include "ui/compositor/scoped_layer_animation_settings.h" +#include "ui/display/display.h" #include "ui/views/background.h" #include "ui/views/border.h" #include "ui/views/controls/label.h" @@ -254,6 +255,7 @@ DCHECK(!windows.empty()); SetPaintToLayer(true); layer()->SetFillsBoundsOpaquely(false); + layer()->SetMasksToBounds(true); layer()->SetOpacity(0.0); { ui::ScopedLayerAnimationSettings animate_fade(layer()->GetAnimator()); @@ -275,10 +277,6 @@ mirror_container_->SetLayoutManager(layout); mirror_container_->SetPaintToLayer(true); mirror_container_->layer()->SetFillsBoundsOpaquely(false); - // The preview list animates bounds changes (other animatable properties - // never change). - mirror_container_->layer()->SetAnimator( - ui::LayerAnimator::CreateImplicitAnimator()); for (WmWindow* window : windows) { // |mirror_container_| owns |view|. @@ -297,10 +295,6 @@ kHighlightCornerRadius)))); highlight_view_->SetPaintToLayer(true); highlight_view_->layer()->SetFillsBoundsOpaquely(false); - // The selection highlight also animates all bounds changes and never - // changes other animatable properties. - highlight_view_->layer()->SetAnimator( - ui::LayerAnimator::CreateImplicitAnimator()); AddChildView(highlight_view_); AddChildView(mirror_container_); @@ -347,6 +341,13 @@ if (!target_window_ || bounds().IsEmpty()) return; + bool first_layout = mirror_container_->bounds().IsEmpty(); + // If |mirror_container_| has not yet been laid out, we must lay it and its + // descendants out so that the calculations based on |target_view| work + // properly. + if (first_layout) + mirror_container_->SizeToPreferredSize(); + // The preview list (|mirror_container_|) starts flush to the left of // the screen but moves to the left (off the edge of the screen) as the use // iterates over the previews. The list will move just enough to ensure the @@ -373,6 +374,18 @@ target_bounds.set_x( GetMirroredXWithWidthInView(target_bounds.x(), target_bounds.width())); highlight_view_->SetBoundsRect(gfx::ToEnclosingRect(target_bounds)); + + // Enable animations only after the first Layout() pass. + if (first_layout) { + // The preview list animates bounds changes (other animatable properties + // never change). + mirror_container_->layer()->SetAnimator( + ui::LayerAnimator::CreateImplicitAnimator()); + // The selection highlight also animates all bounds changes and never + // changes other animatable properties. + highlight_view_->layer()->SetAnimator( + ui::LayerAnimator::CreateImplicitAnimator()); + } } View* GetContentsView() override { return this; } @@ -575,10 +588,8 @@ widget, kShellWindowId_OverlayContainer, ¶ms); widget->Init(params); - // TODO(estade): right now this just extends past the edge of the screen if - // there are too many windows. Handle this more gracefully. Also, if - // the display metrics change, cancel the UI. - gfx::Rect widget_rect = widget->GetWorkAreaBoundsInScreen(); + // TODO(estade): If the display metrics change, cancel the UI. + gfx::Rect widget_rect = root_window->GetDisplayNearestWindow().bounds(); int widget_height = cycle_view_->GetPreferredSize().height(); widget_rect.set_y((widget_rect.height() - widget_height) / 2); widget_rect.set_height(widget_height);
diff --git a/ash/wm/window_cycle_event_filter_aura.cc b/ash/wm/window_cycle_event_filter_aura.cc index c0504e9..69bf11b 100644 --- a/ash/wm/window_cycle_event_filter_aura.cc +++ b/ash/wm/window_cycle_event_filter_aura.cc
@@ -28,6 +28,19 @@ event->type() == ui::ET_KEY_RELEASED) { WmShell::Get()->window_cycle_controller()->StopCycling(); // Warning: |this| will be deleted from here on. + } else if (event->key_code() == ui::VKEY_TAB) { + if (event->type() == ui::ET_KEY_RELEASED) { + repeat_timer_.Stop(); + } else if (event->type() == ui::ET_KEY_PRESSED && event->is_repeat() && + !repeat_timer_.IsRunning()) { + repeat_timer_.Start( + FROM_HERE, base::TimeDelta::FromMilliseconds(180), + base::Bind( + &WindowCycleController::HandleCycleWindow, + base::Unretained(WmShell::Get()->window_cycle_controller()), + event->IsShiftDown() ? WindowCycleController::BACKWARD + : WindowCycleController::FORWARD)); + } } }
diff --git a/ash/wm/window_cycle_event_filter_aura.h b/ash/wm/window_cycle_event_filter_aura.h index 0045dd1d..d3a8e44 100644 --- a/ash/wm/window_cycle_event_filter_aura.h +++ b/ash/wm/window_cycle_event_filter_aura.h
@@ -7,6 +7,7 @@ #include "ash/common/wm/window_cycle_event_filter.h" #include "base/macros.h" +#include "base/timer/timer.h" #include "ui/events/event_handler.h" namespace ash { @@ -21,6 +22,12 @@ void OnKeyEvent(ui::KeyEvent* event) override; private: + // When the user holds Alt+Tab, this timer is used to send repeated + // cycle commands to WindowCycleController. Note this is not accomplished + // by marking the Alt+Tab accelerator as "repeatable" in the accelerator + // table because we wish to control the repeat interval. + base::RepeatingTimer repeat_timer_; + DISALLOW_COPY_AND_ASSIGN(WindowCycleEventFilterAura); };
diff --git a/base/allocator/debugallocation_shim.cc b/base/allocator/debugallocation_shim.cc index 1ca3049c..479cfca 100644 --- a/base/allocator/debugallocation_shim.cc +++ b/base/allocator/debugallocation_shim.cc
@@ -7,7 +7,9 @@ // AFDO can mess with them. Better not to use AFDO there. This is a // temporary hack. We will add a mechanism in the build system to // avoid using -fauto-profile for tcmalloc files. -#if !defined(__clang__) +#if !defined(__clang__) && (defined(OS_CHROMEOS) || __GNUC__ > 5) +// Note that this option only seems to be available in the chromeos GCC 4.9 +// toolchain, and stock GCC 5 and up. #pragma GCC optimize ("no-auto-profile") #endif
diff --git a/base/android/apk_assets.cc b/base/android/apk_assets.cc index ec89b2d..2a433cc 100644 --- a/base/android/apk_assets.cc +++ b/base/android/apk_assets.cc
@@ -21,9 +21,8 @@ // raw resources :(. JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jlongArray> jarr = Java_ApkAssets_open( - env, - base::android::GetApplicationContext(), - base::android::ConvertUTF8ToJavaString(env, file_path).obj()); + env, base::android::GetApplicationContext(), + base::android::ConvertUTF8ToJavaString(env, file_path)); std::vector<jlong> results; base::android::JavaLongArrayToLongVector(env, jarr.obj(), &results); CHECK_EQ(3U, results.size());
diff --git a/base/android/base_proguard_config.flags b/base/android/base_proguard_config.flags index 6ff4351..f69f09c 100644 --- a/base/android/base_proguard_config.flags +++ b/base/android/base_proguard_config.flags
@@ -51,27 +51,6 @@ static *** isLoggable(...); } -# The following chart was created on July 20, 2016, to decide on 3 optimization -# passes. -# optimization passes | time | .dex size | dirty memory per process -# ----------------------------------------------------------------- -# 1 | 0:48 | 5805676 | 488972 -# 2 | 1:07 | 5777376 | 487092 -# 3 | 1:24 | 5772192 | 486596 -# 4 | 1:42 | 5771124 | 486484 -# 5 | 1:56 | 5770504 | 486432 --optimizationpasses 3 - -# Class merging provides negligible .dex size reduction and method count -# reduction (about 0.3% improvement on method count, and 0.1% savings on size), -# and it messes up stack traces if the classes are optimized. Thus, it is in our -# best interests to turn it off. See crbug.com/620323 --optimizations !class/merging/* - -# Allowing Proguard to change modifiers. This change shrinks the .dex size by -# ~1.1%, and reduces the method count by ~4.3%. --allowaccessmodification - # Keep all enum values and valueOf methods. See # http://proguard.sourceforge.net/index.html#manual/examples.html # for the reason for this. Also, see http://crbug.com/248037.
diff --git a/base/android/callback_android.cc b/base/android/callback_android.cc index 8c56f98..2326d85 100644 --- a/base/android/callback_android.cc +++ b/base/android/callback_android.cc
@@ -12,19 +12,17 @@ void RunCallbackAndroid(const JavaRef<jobject>& callback, const JavaRef<jobject>& arg) { Java_Callback_onResultFromNativeV_JLO(base::android::AttachCurrentThread(), - callback.obj(), - arg.obj()); + callback, arg); } void RunCallbackAndroid(const JavaRef<jobject>& callback, bool arg) { Java_Callback_onResultFromNativeV_Z(base::android::AttachCurrentThread(), - callback.obj(), - static_cast<jboolean>(arg)); + callback, static_cast<jboolean>(arg)); } void RunCallbackAndroid(const JavaRef<jobject>& callback, int arg) { Java_Callback_onResultFromNativeV_I(base::android::AttachCurrentThread(), - callback.obj(), arg); + callback, arg); } } // namespace android
diff --git a/base/android/content_uri_utils.cc b/base/android/content_uri_utils.cc index e35505fe..f7484cf 100644 --- a/base/android/content_uri_utils.cc +++ b/base/android/content_uri_utils.cc
@@ -19,7 +19,7 @@ ScopedJavaLocalRef<jstring> j_uri = ConvertUTF8ToJavaString(env, content_uri.value()); return Java_ContentUriUtils_contentUriExists( - env, base::android::GetApplicationContext(), j_uri.obj()); + env, base::android::GetApplicationContext(), j_uri); } File OpenContentUriForRead(const FilePath& content_uri) { @@ -27,7 +27,7 @@ ScopedJavaLocalRef<jstring> j_uri = ConvertUTF8ToJavaString(env, content_uri.value()); jint fd = Java_ContentUriUtils_openContentUriForRead( - env, base::android::GetApplicationContext(), j_uri.obj()); + env, base::android::GetApplicationContext(), j_uri); if (fd < 0) return File(); return File(fd); @@ -37,9 +37,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_uri = ConvertUTF8ToJavaString(env, content_uri.value()); - ScopedJavaLocalRef<jstring> j_mime = - Java_ContentUriUtils_getMimeType( - env, base::android::GetApplicationContext(), j_uri.obj()); + ScopedJavaLocalRef<jstring> j_mime = Java_ContentUriUtils_getMimeType( + env, base::android::GetApplicationContext(), j_uri); if (j_mime.is_null()) return std::string();
diff --git a/base/android/context_utils.cc b/base/android/context_utils.cc index e9ab723..e2c4ed0b 100644 --- a/base/android/context_utils.cc +++ b/base/android/context_utils.cc
@@ -33,9 +33,9 @@ } // namespace -jobject GetApplicationContext() { +const JavaRef<jobject>& GetApplicationContext() { DCHECK(!g_application_context.Get().is_null()); - return g_application_context.Get().obj(); + return g_application_context.Get(); } static void InitNativeSideApplicationContext(
diff --git a/base/android/context_utils.h b/base/android/context_utils.h index f172d93..c5289f1 100644 --- a/base/android/context_utils.h +++ b/base/android/context_utils.h
@@ -16,7 +16,7 @@ // Gets a global ref to the application context set with // InitApplicationContext(). Ownership is retained by the function - the caller // must NOT release it. -BASE_EXPORT jobject GetApplicationContext(); +BASE_EXPORT const JavaRef<jobject>& GetApplicationContext(); bool RegisterContextUtils(JNIEnv* env);
diff --git a/base/android/java_handler_thread.cc b/base/android/java_handler_thread.cc index 75270348e..16c8158 100644 --- a/base/android/java_handler_thread.cc +++ b/base/android/java_handler_thread.cc
@@ -20,8 +20,8 @@ JavaHandlerThread::JavaHandlerThread(const char* name) { JNIEnv* env = base::android::AttachCurrentThread(); - java_thread_.Reset(Java_JavaHandlerThread_create( - env, ConvertUTF8ToJavaString(env, name).obj())); + java_thread_.Reset( + Java_JavaHandlerThread_create(env, ConvertUTF8ToJavaString(env, name))); } JavaHandlerThread::~JavaHandlerThread() { @@ -35,8 +35,7 @@ base::WaitableEvent initialize_event( WaitableEvent::ResetPolicy::AUTOMATIC, WaitableEvent::InitialState::NOT_SIGNALED); - Java_JavaHandlerThread_start(env, - java_thread_.obj(), + Java_JavaHandlerThread_start(env, java_thread_, reinterpret_cast<intptr_t>(this), reinterpret_cast<intptr_t>(&initialize_event)); // Wait for thread to be initialized so it is ready to be used when Start @@ -49,8 +48,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::WaitableEvent shutdown_event(WaitableEvent::ResetPolicy::AUTOMATIC, WaitableEvent::InitialState::NOT_SIGNALED); - Java_JavaHandlerThread_stop(env, - java_thread_.obj(), + Java_JavaHandlerThread_stop(env, java_thread_, reinterpret_cast<intptr_t>(this), reinterpret_cast<intptr_t>(&shutdown_event)); // Wait for thread to shut down before returning.
diff --git a/base/android/java_runtime.cc b/base/android/java_runtime.cc index bc67978b..5fae49a 100644 --- a/base/android/java_runtime.cc +++ b/base/android/java_runtime.cc
@@ -13,8 +13,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> runtime = JNI_Runtime::Java_Runtime_getRuntime(env); - *total_memory = JNI_Runtime::Java_Runtime_totalMemory(env, runtime.obj()); - *free_memory = JNI_Runtime::Java_Runtime_freeMemory(env, runtime.obj()); + *total_memory = JNI_Runtime::Java_Runtime_totalMemory(env, runtime); + *free_memory = JNI_Runtime::Java_Runtime_freeMemory(env, runtime); } } // namespace android
diff --git a/base/android/jni_generator/sample_for_tests.cc b/base/android/jni_generator/sample_for_tests.cc index 56c07121..e0818b6 100644 --- a/base/android/jni_generator/sample_for_tests.cc +++ b/base/android/jni_generator/sample_for_tests.cc
@@ -51,8 +51,8 @@ const JavaParamRef<jobject>& caller, const JavaParamRef<jobject>& structb) { long key = Java_InnerStructB_getKey(env, structb); - std::string value = ConvertJavaStringToUTF8( - env, Java_InnerStructB_getValue(env, structb).obj()); + std::string value = + ConvertJavaStringToUTF8(env, Java_InnerStructB_getValue(env, structb)); map_[key] = value; } @@ -127,9 +127,9 @@ // Creates a "struct" that will then be used by the java side. ScopedJavaLocalRef<jobject> struct_a = base::android::Java_InnerStructA_create( - env, 0, 1, ConvertUTF8ToJavaString(env, "test").obj()); - base::android::Java_SampleForTests_addStructA( - env, my_java_object, struct_a.obj()); + env, 0, 1, ConvertUTF8ToJavaString(env, "test")); + base::android::Java_SampleForTests_addStructA(env, my_java_object, + struct_a); } base::android::Java_SampleForTests_iterateAndDoSomething(env, my_java_object); base::android::Java_SampleForTests_packagePrivateJavaMethod(env,
diff --git a/base/debug/activity_analyzer_unittest.cc b/base/debug/activity_analyzer_unittest.cc index ff656f60..6fb6b3f4 100644 --- a/base/debug/activity_analyzer_unittest.cc +++ b/base/debug/activity_analyzer_unittest.cc
@@ -4,6 +4,7 @@ #include "base/debug/activity_analyzer.h" +#include <atomic> #include <memory> #include "base/bind.h" @@ -90,6 +91,8 @@ source_(source), activity_(activity), data_(data), + ready_(false), + exit_(false), exit_condition_(&lock_) {} ~SimpleActivityThread() override {} @@ -101,8 +104,8 @@ { AutoLock auto_lock(lock_); - ready_ = true; - while (!exit_) + ready_.store(true, std::memory_order_relaxed); + while (!exit_.load(std::memory_order_relaxed)) exit_condition_.Wait(); } @@ -113,12 +116,12 @@ void Exit() { AutoLock auto_lock(lock_); - exit_ = true; + exit_.store(true, std::memory_order_relaxed); exit_condition_.Signal(); } void WaitReady() { - SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(ready_); + SPIN_FOR_1_SECOND_OR_UNTIL_TRUE(ready_.load(std::memory_order_relaxed)); } private: @@ -126,8 +129,8 @@ Activity::Type activity_; ActivityData data_; - bool ready_ = false; - bool exit_ = false; + std::atomic<bool> ready_; + std::atomic<bool> exit_; Lock lock_; ConditionVariable exit_condition_;
diff --git a/base/debug/activity_tracker.cc b/base/debug/activity_tracker.cc index 7b3b185..6fcb1bca 100644 --- a/base/debug/activity_tracker.cc +++ b/base/debug/activity_tracker.cc
@@ -25,10 +25,10 @@ namespace { // A number that identifies the memory as having been initialized. It's -// arbitrary but happens to be the first 8 bytes of SHA1(ThreadActivityTracker). +// arbitrary but happens to be the first 4 bytes of SHA1(ThreadActivityTracker). // A version number is added on so that major structure changes won't try to // read an older version (since the cookie won't match). -const uint64_t kHeaderCookie = 0xC0029B240D4A3092ULL + 1; // v1 +const uint32_t kHeaderCookie = 0xC0029B24UL + 2; // v2 // The minimum depth a stack should support. const int kMinStackDepth = 2; @@ -101,7 +101,8 @@ // so there is no issue moving between 32 and 64-bit builds. struct ThreadActivityTracker::Header { // This unique number indicates a valid initialization of the memory. - uint64_t cookie; + std::atomic<uint32_t> cookie; + uint32_t reserved; // pad out to 64 bits // The process-id and thread-id (thread_ref.as_id) to which this data belongs. // These identifiers are not guaranteed to mean anything but are unique, in @@ -182,7 +183,7 @@ "ActivityData.data is not 64-bit aligned"); // Provided memory should either be completely initialized or all zeros. - if (header_->cookie == 0) { + if (header_->cookie.load(std::memory_order_relaxed) == 0) { // This is a new file. Double-check other fields and then initialize. DCHECK_EQ(0, header_->process_id.load(std::memory_order_relaxed)); DCHECK_EQ(0, header_->thread_ref.as_id); @@ -202,16 +203,17 @@ header_->thread_ref.as_handle = PlatformThread::CurrentHandle().platform_handle(); #endif + header_->process_id.store(GetCurrentProcId(), std::memory_order_relaxed); + header_->start_time = base::Time::Now().ToInternalValue(); header_->start_ticks = base::TimeTicks::Now().ToInternalValue(); header_->stack_slots = stack_slots_; strlcpy(header_->thread_name, PlatformThread::GetName(), sizeof(header_->thread_name)); - header_->cookie = kHeaderCookie; // This is done last so as to guarantee that everything above is "released" // by the time this value gets written. - header_->process_id.store(GetCurrentProcId(), std::memory_order_release); + header_->cookie.store(kHeaderCookie, std::memory_order_release); valid_ = true; DCHECK(IsValid()); @@ -305,7 +307,7 @@ } bool ThreadActivityTracker::IsValid() const { - if (header_->cookie != kHeaderCookie || + if (header_->cookie.load(std::memory_order_acquire) != kHeaderCookie || header_->process_id.load(std::memory_order_relaxed) == 0 || header_->thread_ref.as_id == 0 || header_->start_time == 0 ||
diff --git a/base/message_loop/message_pump_android.cc b/base/message_loop/message_pump_android.cc index ab56949a..7189dc2 100644 --- a/base/message_loop/message_pump_android.cc +++ b/base/message_loop/message_pump_android.cc
@@ -120,8 +120,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); - Java_SystemMessageHandler_removeAllPendingMessages(env, - system_message_handler_obj_.obj()); + Java_SystemMessageHandler_removeAllPendingMessages( + env, system_message_handler_obj_); system_message_handler_obj_.Reset(); } @@ -138,8 +138,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); - Java_SystemMessageHandler_scheduleWork(env, - system_message_handler_obj_.obj()); + Java_SystemMessageHandler_scheduleWork(env, system_message_handler_obj_); } void MessagePumpForUI::ScheduleDelayedWork(const TimeTicks& delayed_work_time) { @@ -152,9 +151,9 @@ (delayed_work_time - TimeTicks::Now()).InMillisecondsRoundedUp(); // Note that we're truncating to milliseconds as required by the java side, // even though delayed_work_time is microseconds resolution. - Java_SystemMessageHandler_scheduleDelayedWork(env, - system_message_handler_obj_.obj(), - delayed_work_time.ToInternalValue(), millis); + Java_SystemMessageHandler_scheduleDelayedWork( + env, system_message_handler_obj_, delayed_work_time.ToInternalValue(), + millis); } // static
diff --git a/base/test/test_file_util_android.cc b/base/test/test_file_util_android.cc index 71f5dc5..f773af9 100644 --- a/base/test/test_file_util_android.cc +++ b/base/test/test_file_util_android.cc
@@ -20,7 +20,7 @@ base::android::ConvertUTF8ToJavaString(env, path.value()); ScopedJavaLocalRef<jstring> j_uri = Java_ContentUriTestUtils_insertImageIntoMediaStore( - env, base::android::GetApplicationContext(), j_path.obj()); + env, base::android::GetApplicationContext(), j_path); std::string uri = base::android::ConvertJavaStringToUTF8(j_uri); return FilePath(uri); }
diff --git a/blimp/client/app/android/blimp_client_session_android.cc b/blimp/client/app/android/blimp_client_session_android.cc index d1bfafc..2a269ee 100644 --- a/blimp/client/app/android/blimp_client_session_android.cc +++ b/blimp/client/app/android/blimp_client_session_android.cc
@@ -87,14 +87,14 @@ void BlimpClientSessionAndroid::OnConnected() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_BlimpClientSession_onConnected(env, java_obj_.obj()); + Java_BlimpClientSession_onConnected(env, java_obj_); } void BlimpClientSessionAndroid::OnDisconnected(int result) { JNIEnv* env = base::android::AttachCurrentThread(); Java_BlimpClientSession_onDisconnected( - env, java_obj_.obj(), base::android::ConvertUTF8ToJavaString( - env, net::ErrorToShortString(result)).obj()); + env, java_obj_, base::android::ConvertUTF8ToJavaString( + env, net::ErrorToShortString(result))); } void BlimpClientSessionAndroid::Destroy(JNIEnv* env, @@ -110,11 +110,10 @@ assignment.engine_endpoint.address(), assignment.engine_endpoint.port()); JNIEnv* env = base::android::AttachCurrentThread(); Java_BlimpClientSession_onAssignmentReceived( - env, java_obj_.obj(), static_cast<jint>(result), - base::android::ConvertUTF8ToJavaString(env, engine_ip).obj(), + env, java_obj_, static_cast<jint>(result), + base::android::ConvertUTF8ToJavaString(env, engine_ip), base::android::ConvertUTF8ToJavaString(env, - version_info::GetVersionNumber()) - .obj()); + version_info::GetVersionNumber())); BlimpClientSession::OnAssignmentConnectionAttempted(result, assignment); }
diff --git a/blimp/client/app/android/blimp_view.cc b/blimp/client/app/android/blimp_view.cc index a2c84218..27f20612 100644 --- a/blimp/client/app/android/blimp_view.cc +++ b/blimp/client/app/android/blimp_view.cc
@@ -180,7 +180,7 @@ void BlimpView::OnSwapBuffersCompleted() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_BlimpView_onSwapBuffersCompleted(env, java_obj_.obj()); + Java_BlimpView_onSwapBuffersCompleted(env, java_obj_); } void BlimpView::DidCommitAndDrawFrame() {
diff --git a/blimp/client/app/android/toolbar.cc b/blimp/client/app/android/toolbar.cc index f9f8f05..864d410 100644 --- a/blimp/client/app/android/toolbar.cc +++ b/blimp/client/app/android/toolbar.cc
@@ -92,14 +92,14 @@ ScopedJavaLocalRef<jstring> jurl( base::android::ConvertUTF8ToJavaString(env, url.spec())); - Java_Toolbar_onEngineSentUrl(env, java_obj_.obj(), jurl.obj()); + Java_Toolbar_onEngineSentUrl(env, java_obj_, jurl); } void Toolbar::OnFaviconChanged(int tab_id, const SkBitmap& favicon) { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> jfavicon(gfx::ConvertToJavaBitmap(&favicon)); - Java_Toolbar_onEngineSentFavicon(env, java_obj_.obj(), jfavicon.obj()); + Java_Toolbar_onEngineSentFavicon(env, java_obj_, jfavicon); } void Toolbar::OnTitleChanged(int tab_id, const std::string& title) { @@ -107,14 +107,13 @@ ScopedJavaLocalRef<jstring> jtitle( base::android::ConvertUTF8ToJavaString(env, title)); - Java_Toolbar_onEngineSentTitle(env, java_obj_.obj(), jtitle.obj()); + Java_Toolbar_onEngineSentTitle(env, java_obj_, jtitle); } void Toolbar::OnLoadingChanged(int tab_id, bool loading) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Toolbar_onEngineSentLoading(env, - java_obj_.obj(), + Java_Toolbar_onEngineSentLoading(env, java_obj_, static_cast<jboolean>(loading)); } @@ -122,9 +121,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_Toolbar_onEngineSentPageLoadStatusUpdate( - env, - java_obj_.obj(), - static_cast<jboolean>(completed)); + env, java_obj_, static_cast<jboolean>(completed)); } } // namespace client
diff --git a/blimp/client/app/android/web_input_box.cc b/blimp/client/app/android/web_input_box.cc index c84ee73..e3b2de9 100644 --- a/blimp/client/app/android/web_input_box.cc +++ b/blimp/client/app/android/web_input_box.cc
@@ -50,13 +50,13 @@ JNIEnv* env = base::android::AttachCurrentThread(); DCHECK_NE(ui::TEXT_INPUT_TYPE_NONE, input_type); Java_WebInputBox_onShowImeRequested( - env, java_obj_.obj(), input_type, - base::android::ConvertUTF8ToJavaString(env, text).obj()); + env, java_obj_, input_type, + base::android::ConvertUTF8ToJavaString(env, text)); } void WebInputBox::OnHideImeRequested() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_WebInputBox_onHideImeRequested(env, java_obj_.obj()); + Java_WebInputBox_onHideImeRequested(env, java_obj_); } void WebInputBox::OnImeTextEntered(JNIEnv* env,
diff --git a/blimp/client/core/android/blimp_client_context_impl_android.cc b/blimp/client/core/android/blimp_client_context_impl_android.cc index 3eb10d66..5f51d68 100644 --- a/blimp/client/core/android/blimp_client_context_impl_android.cc +++ b/blimp/client/core/android/blimp_client_context_impl_android.cc
@@ -52,7 +52,7 @@ BlimpClientContextImplAndroid::~BlimpClientContextImplAndroid() { Java_BlimpClientContextImpl_clearNativePtr( - base::android::AttachCurrentThread(), java_obj_.obj()); + base::android::AttachCurrentThread(), java_obj_); } base::android::ScopedJavaLocalRef<jobject> @@ -74,7 +74,7 @@ GURL BlimpClientContextImplAndroid::GetAssignerURL() { JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> jurl = - Java_BlimpClientContextImpl_getAssignerUrl(env, java_obj_.obj()); + Java_BlimpClientContextImpl_getAssignerUrl(env, java_obj_); GURL assigner_url = GURL(ConvertJavaStringToUTF8(env, jurl)); DCHECK(assigner_url.is_valid()); return assigner_url;
diff --git a/blimp/client/core/android/dummy_blimp_client_context_android.cc b/blimp/client/core/android/dummy_blimp_client_context_android.cc index 4fff74a..17a0906 100644 --- a/blimp/client/core/android/dummy_blimp_client_context_android.cc +++ b/blimp/client/core/android/dummy_blimp_client_context_android.cc
@@ -42,7 +42,7 @@ DummyBlimpClientContextAndroid::~DummyBlimpClientContextAndroid() { Java_DummyBlimpClientContext_clearNativePtr( - base::android::AttachCurrentThread(), java_obj_.obj()); + base::android::AttachCurrentThread(), java_obj_); } base::android::ScopedJavaLocalRef<jobject>
diff --git a/blimp/client/core/contents/android/blimp_contents_impl_android.cc b/blimp/client/core/contents/android/blimp_contents_impl_android.cc index 6868198..172dba2 100644 --- a/blimp/client/core/contents/android/blimp_contents_impl_android.cc +++ b/blimp/client/core/contents/android/blimp_contents_impl_android.cc
@@ -38,11 +38,11 @@ &(blimp_contents_impl->GetNavigationController()))) { JNIEnv* env = base::android::AttachCurrentThread(); - java_obj_.Reset( - env, Java_BlimpContentsImpl_create( - env, reinterpret_cast<intptr_t>(this), - blimp_navigation_controller_impl_android_.GetJavaObject().obj()) - .obj()); + java_obj_.Reset(env, + Java_BlimpContentsImpl_create( + env, reinterpret_cast<intptr_t>(this), + blimp_navigation_controller_impl_android_.GetJavaObject()) + .obj()); } void BlimpContentsImplAndroid::Destroy(JNIEnv* env, jobject jobj) { @@ -51,7 +51,7 @@ BlimpContentsImplAndroid::~BlimpContentsImplAndroid() { Java_BlimpContentsImpl_clearNativePtr(base::android::AttachCurrentThread(), - java_obj_.obj()); + java_obj_); } } // namespace client
diff --git a/blimp/client/core/contents/android/blimp_contents_observer_proxy.cc b/blimp/client/core/contents/android/blimp_contents_observer_proxy.cc index e53c09f..1e57b3c 100644 --- a/blimp/client/core/contents/android/blimp_contents_observer_proxy.cc +++ b/blimp/client/core/contents/android/blimp_contents_observer_proxy.cc
@@ -49,8 +49,7 @@ void BlimpContentsObserverProxy::OnNavigationStateChanged() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_BlimpContentsObserverProxy_onNavigationStateChanged(env, - java_obj_.obj()); + Java_BlimpContentsObserverProxy_onNavigationStateChanged(env, java_obj_); } } // namespace client
diff --git a/blimp/client/core/contents/android/blimp_navigation_controller_impl_android.cc b/blimp/client/core/contents/android/blimp_navigation_controller_impl_android.cc index f8abded0..c922327 100644 --- a/blimp/client/core/contents/android/blimp_navigation_controller_impl_android.cc +++ b/blimp/client/core/contents/android/blimp_navigation_controller_impl_android.cc
@@ -46,7 +46,7 @@ BlimpNavigationControllerImplAndroid::~BlimpNavigationControllerImplAndroid() { Java_BlimpNavigationControllerImpl_clearNativePtr( - base::android::AttachCurrentThread(), java_obj_.obj()); + base::android::AttachCurrentThread(), java_obj_); } void BlimpNavigationControllerImplAndroid::LoadURL(
diff --git a/build/android/lint/suppressions.xml b/build/android/lint/suppressions.xml index 2111f9a..806f4371 100644 --- a/build/android/lint/suppressions.xml +++ b/build/android/lint/suppressions.xml
@@ -79,6 +79,13 @@ <!-- http://crbug.com/450548 --> <ignore regexp=".*restriction_values.xml.*" /> </issue> + <!-- + TODO(estevenson) remove this once translations are added for + IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE (http://crbug.com/635677) + --> + <issue id="MissingQuantity"> + <ignore regexp=".*android_chrome_strings.xml" /> + </issue> <issue id="MissingVersion"> <ignore path="AndroidManifest.xml"/> </issue> @@ -118,6 +125,13 @@ </issue> <issue id="SignatureOrSystemPermissions" severity="ignore"/> <issue id="UnusedAttribute" severity="ignore"/> + <!-- + TODO(estevenson) remove this once translations are updated for + IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE (http://crbug.com/635677) + --> + <issue id="UnusedQuantity"> + <ignore regexp=".*android_chrome_strings.xml" /> + </issue> <issue id="ViewConstructor" severity="ignore"/> <issue id="WrongCall" severity="ignore"/> <issue id="UselessParent">
diff --git a/build/config/allocator.gni b/build/config/allocator.gni index 0edb47a09..0dd3dcf 100644 --- a/build/config/allocator.gni +++ b/build/config/allocator.gni
@@ -13,7 +13,11 @@ _default_allocator = "tcmalloc" } -if ((is_linux || is_android) && !is_asan && !is_lsan && !is_tsan && !is_msan) { +# The debug CRT on Windows has some debug features that are incompatible with +# the shim. NaCl in particular does seem to link some binaries statically +# against the debug CRT with "is_nacl=false". +if ((is_linux || is_android || (is_win && !is_component_build && !is_debug)) && + !is_asan && !is_lsan && !is_tsan && !is_msan) { _default_use_experimental_allocator_shim = true } else { _default_use_experimental_allocator_shim = false
diff --git a/chrome/android/java/proguard.flags b/chrome/android/java/proguard.flags index 8049da1..9b38f7a 100644 --- a/chrome/android/java/proguard.flags +++ b/chrome/android/java/proguard.flags
@@ -13,6 +13,25 @@ *; } +# The following chart was created on July 20, 2016, to decide on 3 optimization +# passes. +# optimization passes | time | .dex size | dirty memory per process +# ----------------------------------------------------------------- +# 1 | 0:48 | 5805676 | 488972 +# 2 | 1:07 | 5777376 | 487092 +# 3 | 1:24 | 5772192 | 486596 +# 4 | 1:42 | 5771124 | 486484 +# 5 | 1:56 | 5770504 | 486432 +-optimizationpasses 3 + +# Class merging messes up stacktraces beyond the point of them being +# deobfuscatable. If turned on, it would give us a 2% reduction in .dex size. +-optimizations !class/merging/* + +# Allowing Proguard to change modifiers. This change shrinks the .dex size by +# ~1.1%, and reduces the method count by ~4.3%. +-allowaccessmodification + # Fragments are loaded using reflection via Fragment.instantiate(Context,String) # This can be improved upon - see crbug.com/622023. -keep public class com.google.android.apps.chrome** extends android.app.Fragment
diff --git a/chrome/android/java/res/layout-sw600dp/toolbar.xml b/chrome/android/java/res/layout-sw600dp/toolbar.xml index 499a35d..f93f93f7 100644 --- a/chrome/android/java/res/layout-sw600dp/toolbar.xml +++ b/chrome/android/java/res/layout-sw600dp/toolbar.xml
@@ -59,7 +59,7 @@ <ImageButton android:id="@+id/tab_switcher_button" style="@style/ToolbarButton" - android:contentDescription="@string/accessibility_toolbar_btn_tabswitcher_toggle" + android:contentDescription="@string/accessibility_toolbar_btn_tabswitcher_toggle_default" android:visibility="gone" /> <FrameLayout
diff --git a/chrome/android/java/res/layout/new_tab_page_progress_indicator.xml b/chrome/android/java/res/layout/new_tab_page_progress_indicator.xml index 0f15f83..ebf808b 100644 --- a/chrome/android/java/res/layout/new_tab_page_progress_indicator.xml +++ b/chrome/android/java/res/layout/new_tab_page_progress_indicator.xml
@@ -6,11 +6,11 @@ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingTop="40dp"> + android:layout_height="wrap_content"> <org.chromium.chrome.browser.ntp.cards.ProgressIndicatorView android:id="@+id/snippets_progress" + android:layout_marginTop="40dp" android:layout_width="match_parent" android:layout_height="@dimen/ntp_progress_indicator_diameter" /> </FrameLayout>
diff --git a/chrome/android/java/res/layout/toolbar.xml b/chrome/android/java/res/layout/toolbar.xml index a60dfc6..83feb109 100644 --- a/chrome/android/java/res/layout/toolbar.xml +++ b/chrome/android/java/res/layout/toolbar.xml
@@ -56,7 +56,7 @@ <ImageButton android:id="@+id/tab_switcher_button" style="@style/ToolbarButton" android:layout_gravity="top" - android:contentDescription="@string/accessibility_toolbar_btn_tabswitcher_toggle" /> + android:contentDescription="@string/accessibility_toolbar_btn_tabswitcher_toggle_default" /> <FrameLayout android:layout_width="wrap_content"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskBridge.java index 2032fec1..38b40649 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskBridge.java
@@ -24,7 +24,8 @@ public CardUnmaskBridge(long nativeCardUnmaskPromptViewAndroid, String title, String instructions, String confirmButtonLabel, int iconId, boolean shouldRequestExpirationDate, boolean canStoreLocally, - boolean defaultToStoringLocally, WindowAndroid windowAndroid) { + boolean defaultToStoringLocally, long successMessageDurationMilliseconds, + WindowAndroid windowAndroid) { mNativeCardUnmaskPromptViewAndroid = nativeCardUnmaskPromptViewAndroid; Activity activity = windowAndroid.getActivity().get(); if (activity == null) { @@ -40,7 +41,8 @@ } else { mCardUnmaskPrompt = new CardUnmaskPrompt(activity, this, title, instructions, confirmButtonLabel, ResourceId.mapToDrawableId(iconId), - shouldRequestExpirationDate, canStoreLocally, defaultToStoringLocally); + shouldRequestExpirationDate, canStoreLocally, defaultToStoringLocally, + successMessageDurationMilliseconds); } } @@ -48,10 +50,11 @@ private static CardUnmaskBridge create(long nativeUnmaskPrompt, String title, String instructions, String confirmButtonLabel, int iconId, boolean shouldRequestExpirationDate, boolean canStoreLocally, - boolean defaultToStoringLocally, WindowAndroid windowAndroid) { + boolean defaultToStoringLocally, long successMessageDurationMilliseconds, + WindowAndroid windowAndroid) { return new CardUnmaskBridge(nativeUnmaskPrompt, title, instructions, confirmButtonLabel, iconId, shouldRequestExpirationDate, canStoreLocally, defaultToStoringLocally, - windowAndroid); + successMessageDurationMilliseconds, windowAndroid); } @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java index 6e9fe936..56eb25b6 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/CardUnmaskPrompt.java
@@ -67,6 +67,7 @@ private final View mVerificationOverlay; private final ProgressBar mVerificationProgressBar; private final TextView mVerificationView; + private final long mSuccessMessageDurationMilliseconds; private int mThisYear; private int mThisMonth; @@ -122,7 +123,7 @@ public CardUnmaskPrompt(Context context, CardUnmaskPromptDelegate delegate, String title, String instructions, String confirmButtonLabel, int drawableId, boolean shouldRequestExpirationDate, boolean canStoreLocally, - boolean defaultToStoringLocally) { + boolean defaultToStoringLocally, long successMessageDurationMilliseconds) { mDelegate = delegate; LayoutInflater inflater = LayoutInflater.from(context); @@ -148,6 +149,7 @@ mVerificationOverlay = v.findViewById(R.id.verification_overlay); mVerificationProgressBar = (ProgressBar) v.findViewById(R.id.verification_progress_bar); mVerificationView = (TextView) v.findViewById(R.id.verification_message); + mSuccessMessageDurationMilliseconds = successMessageDurationMilliseconds; ((ImageView) v.findViewById(R.id.cvc_hint_image)).setImageResource(drawableId); mDialog = new AlertDialog.Builder(context, R.style.AlertDialogTheme) @@ -244,17 +246,21 @@ setNoRetryError(errorMessage); } } else { - mVerificationProgressBar.setVisibility(View.GONE); - mDialog.findViewById(R.id.verification_success).setVisibility(View.VISIBLE); - mVerificationView.setText(R.string.autofill_card_unmask_verification_success); - mVerificationView.announceForAccessibility(mVerificationView.getText()); - Handler h = new Handler(); - h.postDelayed(new Runnable() { + Runnable dismissRunnable = new Runnable() { @Override public void run() { dismiss(); } - }, 1000); + }; + if (mSuccessMessageDurationMilliseconds > 0) { + mVerificationProgressBar.setVisibility(View.GONE); + mDialog.findViewById(R.id.verification_success).setVisibility(View.VISIBLE); + mVerificationView.setText(R.string.autofill_card_unmask_verification_success); + mVerificationView.announceForAccessibility(mVerificationView.getText()); + new Handler().postDelayed(dismissRunnable, mSuccessMessageDurationMilliseconds); + } else { + new Handler().post(dismissRunnable); + } } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ProgressIndicatorView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ProgressIndicatorView.java index 17d7486..763bdb0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ProgressIndicatorView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/ProgressIndicatorView.java
@@ -75,7 +75,7 @@ mProgressDrawable.stop(); removeCallbacks(mShowSpinnerRunnable); mPostedCallback = false; - setVisibility(View.INVISIBLE); + setVisibility(View.GONE); } public void showDelayed() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java index 21fe224..d121fca 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java
@@ -156,7 +156,8 @@ // Create a context menu akin to the one shown for MostVisitedItems. if (mNewTabPageManager.isOpenInNewWindowEnabled()) { - addContextMenuItem(menu, ID_OPEN_IN_NEW_WINDOW, R.string.contextmenu_open_in_new_tab); + addContextMenuItem( + menu, ID_OPEN_IN_NEW_WINDOW, R.string.contextmenu_open_in_other_window); } addContextMenuItem(menu, ID_OPEN_IN_NEW_TAB, R.string.contextmenu_open_in_new_tab);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java index 93a16a2..d952c79 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
@@ -1804,8 +1804,9 @@ mToggleTabStackButton.setEnabled(numberOfTabs >= 1); mToggleTabStackButton.setContentDescription( - getResources().getString(R.string.accessibility_toolbar_btn_tabswitcher_toggle, - numberOfTabs)); + getResources().getQuantityString( + R.plurals.accessibility_toolbar_btn_tabswitcher_toggle, + numberOfTabs, numberOfTabs)); mTabSwitcherButtonDrawableLight.updateForTabCount(numberOfTabs, isIncognito()); mTabSwitcherButtonDrawable.updateForTabCount(numberOfTabs, isIncognito());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java index e6fea14..34e1f49 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarTablet.java
@@ -447,8 +447,9 @@ @Override protected void updateTabCountVisuals(int numberOfTabs) { mAccessibilitySwitcherButton.setContentDescription( - getResources().getString(R.string.accessibility_toolbar_btn_tabswitcher_toggle, - numberOfTabs)); + getResources().getQuantityString( + R.plurals.accessibility_toolbar_btn_tabswitcher_toggle, + numberOfTabs, numberOfTabs)); mTabSwitcherButtonDrawable.updateForTabCount(numberOfTabs, isIncognito()); mTabSwitcherButtonDrawableLight.updateForTabCount(numberOfTabs, isIncognito()); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java index 6abd100e..15da5bdd 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogHelper.java
@@ -73,8 +73,8 @@ @CalledByNative private void onIconAvailable(Bitmap icon) { - mObserver.onIconAvailable(icon); mIsInitialized = true; + mObserver.onIconAvailable(icon); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/OWNERS b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/OWNERS new file mode 100644 index 0000000..69d7926d --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/OWNERS
@@ -0,0 +1,2 @@ +ianwen@chromium.org +twellington@chromium.org
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java index 637b722..775530f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/selection/SelectionToolbar.java
@@ -104,6 +104,12 @@ boolean wasSelectionEnabled = mIsSelectionEnabled; mIsSelectionEnabled = mSelectionDelegate.isSelectionEnabled(); + // If onSelectionStateChange() gets called before onFinishInflate(), mNumberRollView + // will be uninitialized. See crbug.com/637948. + if (mNumberRollView == null) { + mNumberRollView = (NumberRollView) findViewById(R.id.selection_mode_number); + } + if (mIsSelectionEnabled) { // TODO(twellington): add the concept of normal & selected tint to apply to all // toolbar buttons.
diff --git a/chrome/android/java/strings/android_chrome_strings.grd b/chrome/android/java/strings/android_chrome_strings.grd index 633d716..060904d7 100644 --- a/chrome/android/java/strings/android_chrome_strings.grd +++ b/chrome/android/java/strings/android_chrome_strings.grd
@@ -2212,8 +2212,11 @@ <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_NEW_INCOGNITO_TAB" desc="Content description for the new incognito tab button."> New incognito tab </message> - <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE" desc="Content description for the button that enters or leaves the tab switcher."> - <ph name="OPEN_TABS">%1$d<ex>3</ex></ph> open tabs + <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE" desc="Content description for the button that enters or leaves the tab switcher. [ICU Syntax]"> + {OPEN_TABS, plural, =1 {%1$d open tab} other {%1$d open tabs}} + </message> + <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_TABSWITCHER_TOGGLE_DEFAULT" desc="Placeholder content description for the button that enters or leaves the tab switcher."> + open tabs </message> <message name="IDS_ACCESSIBILITY_TOOLBAR_BTN_HOME" desc="Content description for the home button."> Home
diff --git a/chrome/app/chrome_command_ids.h b/chrome/app/chrome_command_ids.h index 6f29d61..268f57c 100644 --- a/chrome/app/chrome_command_ids.h +++ b/chrome/app/chrome_command_ids.h
@@ -374,7 +374,7 @@ #define IDC_MEDIA_ROUTER_HELP 51201 #define IDC_MEDIA_ROUTER_LEARN_MORE 51202 #define IDC_MEDIA_ROUTER_REPORT_ISSUE 51203 -#define IDC_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION 51204 +#define IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION 51204 #if defined(GOOGLE_CHROME_BUILD) #define IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE 51205 #endif // defined(GOOGLE_CHROME_BUILD)
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index a4753662..9188c19 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -7907,100 +7907,6 @@ <message name="IDS_FLAGS_ENABLE_CLEAR_BROWSING_DATA_COUNTERS_DESCRIPTION" desc="Description of the flag that enables the data volume counters in the Clear browsing data dialog."> Shows data volume counters in the Clear browsing data dialog. </message> - <message name="IDS_CLEAR_BROWSING_DATA_CALCULATING" desc="A text that is shown while the data volume is being counted."> - Calculating... - </message> - <message name="IDS_CLEAR_BROWSING_DATA_UNKNOWN_SIZE" desc="A text that is shown when the data volume could not be calculated. This string refers to uncountable objects, such as cache."> - unknown size - </message> - <message name="IDS_CLEAR_BROWSING_DATA_UNKNOWN_AMOUNT" desc="A text that is shown when the data volume could not be calculated. This string refers to countable objects, such as history entries or passwords."> - unknown amount - </message> - <message name="IDS_DEL_BROWSING_HISTORY_COUNTER" desc="A counter showing how many items of browsing history the user has."> - {COUNT, plural, - =0 {none} - =1 {1 item} - other {# items}} - </message> - <message name="IDS_DEL_BROWSING_HISTORY_COUNTER_SYNCED" desc="A counter showing the user how many local items of browsing history they have, and informing them that more items might be synced. In the case when COUNT is zero, the counter only mentions existence of synced items."> - {COUNT, plural, - =0 {at least 1 item on synced devices} - =1 {1 item (and more on synced devices)} - other {# items (and more on synced devices)}} - </message> - <message name="IDS_DEL_CACHE_COUNTER_UPPER_ESTIMATE" desc="A counter showing that the user has less than X megabytes of cache. The value X will be substituted."> - less than <ph name="UPPER_ESTIMATE">$1<ex>328 MB</ex></ph> - </message> - <message name="IDS_DEL_CACHE_COUNTER_ALMOST_EMPTY" desc="A counter showing that the user's cache is almost empty, having less than 1 MB of data."> - less than 1 MB - </message> - <message name="IDS_DEL_PASSWORDS_COUNTER" desc="A counter showing how many passwords the user has."> - {COUNT, plural, - =0 {none} - =1 {1} - other {#}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_EMPTY" desc="A counter showing that the user has no form data stored."> - none - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_CREDIT_CARDS" desc="A counter showing how many credit cards the user has."> - {COUNT, plural, - =1 {1 credit card} - other {# credit cards}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_ADDRESSES" desc="A counter showing how many addresses the user has."> - {COUNT, plural, - =1 {1 address} - other {# addresses}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS" desc="A counter showing how many form autocompletion suggestions the user has."> - {COUNT, plural, - =1 {1 suggestion} - other {# suggestions}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_LONG" desc="A counter showing how many other form autocompletion suggestions the user has. Note that this message is shown at the end of an enumeration of form data types, such as '2 addresses, 5 others suggestions'."> - {COUNT, plural, - =1 {1 other suggestion} - other {# other suggestions}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_SHORT" desc="A counter showing how many other items of form data the user has. Note that this message is shown at the end of an enumeration of form data types, such as '3 credit cards, 2 addresses, 5 others'."> - {COUNT, plural, - =1 {1 other} - other {# others}} - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_TWO_TYPES" desc="A counter showing that the user has two types of form data. The types and their counts will be substituted, this message only provides the comma separator."> - <ph name="TYPE_1">$1<ex>2 credit cards</ex></ph>, <ph name="TYPE_2">$2<ex>1 address</ex></ph> - </message> - <message name="IDS_DEL_AUTOFILL_COUNTER_THREE_TYPES" desc="A counter showing that the user has three types of form data. The types and their counts will be substituted, this message only provides the comma separators."> - <ph name="TYPE_1">$1<ex>2 credit cards</ex></ph>, <ph name="TYPE_2">$2<ex>1 address</ex></ph>, <ph name="TYPE_3">$3<ex>5 others</ex></ph> - </message> - <message name="IDS_DEL_COOKIES_COUNTER" desc="A static message shown in the Clear Browsing Data dialog explaining to the user that deleting cookies and site data will result in the user being signed out of most websites."> - This will sign you out of most websites. - </message> - <message name="IDS_DEL_DOWNLOADS_COUNTER" desc="A counter showing how many items of downloads history the user has."> - {COUNT, plural, - =0 {none} - =1 {1 item} - other {# items}} - </message> - <message name="IDS_DEL_HOSTED_APPS_COUNTER" desc="A counter showing how many hosted apps the user has. We show the number of apps, and in the cases where there is one or two apps, we will also give two example app names, denoted as placeholders $1 and $2. If there are more than two apps, we will give two examples and say 'and X more'. The 'and X more' string, denoted by the placeholder $3, will be supplied from another message."> - {COUNT, plural, - =0 {none} - =1 {1 app ($1)} - =2 {2 apps ($1, $2)} - other {# apps ($1, $2, $3)}} - </message> - <message name="IDS_DEL_HOSTED_APPS_COUNTER_AND_X_MORE" desc="This message stands at the end of a sentence enumerating hosted apps the user has installed, e.g.: 'App1, App2, and 5 more'"> - {COUNT, plural, - =1 {and 1 more} - other {and # more}} - </message> - <message name="IDS_DEL_MEDIA_LICENSES_COUNTER_GENERAL_COMMENT" desc="A static message shown in the Clear Browsing Data dialog explaining to the user that clearing media licenses will result in the user being unable to play some premium content"> - You may lose access to premium content from some sites. - </message> - <message name="IDS_DEL_MEDIA_LICENSES_COUNTER_SITE_COMMENT" desc="A message shown in the Clear Browsing Data dialog explaining to the user that clearing media licenses will result in the user being unable to play some premium content from at least one specific web site"> - You may lose access to premium content from <ph name="SITE">$1<ex>youtube.com</ex></ph> and some other sites. - </message> <!-- Supervised User (Legacy and Accounts for Kids) Avatar Menu --> <message name="IDS_LEGACY_SUPERVISED_USER_INFO" desc="Text which explains that a supervised user is managed by a custodian.">
diff --git a/chrome/app/mash/BUILD.gn b/chrome/app/mash/BUILD.gn index d49d1cc..961a4e8 100644 --- a/chrome/app/mash/BUILD.gn +++ b/chrome/app/mash/BUILD.gn
@@ -14,6 +14,7 @@ "//ash/resources", "//ash/touch_hud/mus:lib", "//base:i18n", + "//components/tracing:startup_tracing", "//content/public/common", "//mash/app_driver:lib", "//mash/quick_launch:lib",
diff --git a/chrome/app/mash/DEPS b/chrome/app/mash/DEPS index 55f349c..180ebfb 100644 --- a/chrome/app/mash/DEPS +++ b/chrome/app/mash/DEPS
@@ -6,6 +6,7 @@ "-chrome", "+chrome/app/mash", "+components/font_service", + "+components/tracing", "+services/ui", "+mash", "+services/shell",
diff --git a/chrome/app/mash/mash_runner.cc b/chrome/app/mash/mash_runner.cc index a0860be1..5d1a97d 100644 --- a/chrome/app/mash/mash_runner.cc +++ b/chrome/app/mash/mash_runner.cc
@@ -15,6 +15,9 @@ #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/process/launch.h" +#include "base/trace_event/trace_event.h" +#include "components/tracing/common/trace_to_console.h" +#include "components/tracing/common/tracing_switches.h" #include "content/public/common/content_switches.h" #include "mash/app_driver/app_driver.h" #include "mash/quick_launch/quick_launch.h" @@ -231,6 +234,16 @@ #endif if (!IsChild()) message_loop.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI)); + + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kTraceToConsole)) { + base::trace_event::TraceConfig trace_config = + tracing::GetConfigForTraceToConsole(); + base::trace_event::TraceLog::GetInstance()->SetEnabled( + trace_config, + base::trace_event::TraceLog::RECORDING_MODE); + } + MashRunner mash_runner; mash_runner.Run(); return 0;
diff --git a/chrome/app/media_router_strings.grdp b/chrome/app/media_router_strings.grdp index b438bf56..4ef63f0 100644 --- a/chrome/app/media_router_strings.grdp +++ b/chrome/app/media_router_strings.grdp
@@ -66,8 +66,8 @@ <message name="IDS_MEDIA_ROUTER_HELP" desc="Title of a menu item which, on click, opens a page to the Chromecast help center."> Help </message> - <message name="IDS_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION" desc="Title of a menu item which, on click, removes the Media Router Action icon from the toolbar."> - Remove icon + <message name="IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION" desc="Title of a menu item which, on click, toggles whether or not the Media Router action icon is always shown. When toggled off, the icon is shown only when the Media Router dialog is open or if there is an active local Media Route."> + Always show icon </message> <message name="IDS_MEDIA_ROUTER_REPORT_ISSUE" desc="Title of a menu item which, on click, opens a page to give feedback or report an issue with Chromecast integration."> Report an issue
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index ef8bdc4..ad465fe 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1194,6 +1194,9 @@ <message name="IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS" desc="Label for the unsandboxed plugin access site settings."> Unsandboxed plugin access </message> + <message name="IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES" desc="Label for the USB devices in site settings."> + USB devices + </message> <message name="IDS_SETTINGS_SITE_SETTINGS_FULLSCREEN" desc="Label for the fullscreen site settings."> Fullscreen </message>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 9f30beaf..e29a6f66 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -8,6 +8,7 @@ import("//build/config/ui.gni") import("//build/split_static_library.gni") import("//chrome/common/features.gni") +import("//components/os_crypt/features.gni") import("//media/media_options.gni") import("//third_party/protobuf/proto_library.gni") @@ -568,7 +569,7 @@ if (use_cups) { configs += [ "//printing:cups" ] } - if (is_desktop_linux) { + if (use_gnome_keyring) { sources += rebase_path(gypi_values.chrome_browser_gnome_keyring_sources, ".", "//chrome")
diff --git a/chrome/browser/android/accessibility/font_size_prefs_android.cc b/chrome/browser/android/accessibility/font_size_prefs_android.cc index d0d446ce..f271db4 100644 --- a/chrome/browser/android/accessibility/font_size_prefs_android.cc +++ b/chrome/browser/android/accessibility/font_size_prefs_android.cc
@@ -72,11 +72,11 @@ void FontSizePrefsAndroid::OnFontScaleFactorChanged() { JNIEnv* env = base::android::AttachCurrentThread(); float factor = GetFontScaleFactor(env, java_ref_); - Java_FontSizePrefs_onFontScaleFactorChanged(env, java_ref_.obj(), factor); + Java_FontSizePrefs_onFontScaleFactorChanged(env, java_ref_, factor); } void FontSizePrefsAndroid::OnForceEnableZoomChanged() { JNIEnv* env = base::android::AttachCurrentThread(); bool enabled = GetForceEnableZoom(env, java_ref_); - Java_FontSizePrefs_onForceEnableZoomChanged(env, java_ref_.obj(), enabled); + Java_FontSizePrefs_onForceEnableZoomChanged(env, java_ref_, enabled); }
diff --git a/chrome/browser/android/background_sync_launcher_android.cc b/chrome/browser/android/background_sync_launcher_android.cc index 7ca787a..0b13a14 100644 --- a/chrome/browser/android/background_sync_launcher_android.cc +++ b/chrome/browser/android/background_sync_launcher_android.cc
@@ -44,7 +44,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_BackgroundSyncLauncher_launchBrowserIfStopped( - env, java_launcher_.obj(), base::android::GetApplicationContext(), + env, java_launcher_, base::android::GetApplicationContext(), launch_when_next_online, min_delay_ms); } @@ -78,5 +78,5 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = base::android::AttachCurrentThread(); - Java_BackgroundSyncLauncher_destroy(env, java_launcher_.obj()); + Java_BackgroundSyncLauncher_destroy(env, java_launcher_); }
diff --git a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc index 0ad21075..aa03a7d8 100644 --- a/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc +++ b/chrome/browser/android/banners/app_banner_infobar_delegate_android.cc
@@ -87,8 +87,7 @@ TrackDismissEvent(DISMISS_EVENT_DISMISSED); JNIEnv* env = base::android::AttachCurrentThread(); - Java_AppBannerInfoBarDelegateAndroid_destroy(env, - java_delegate_.obj()); + Java_AppBannerInfoBarDelegateAndroid_destroy(env, java_delegate_); java_delegate_.Reset(); } @@ -99,9 +98,7 @@ return; int newState = Java_AppBannerInfoBarDelegateAndroid_determineInstallState( - env, - java_delegate_.obj(), - native_app_data_.obj()); + env, java_delegate_, native_app_data_); static_cast<AppBannerInfoBarAndroid*>(infobar()) ->OnInstallStateChanged(newState); } @@ -232,12 +229,10 @@ ScopedJavaLocalRef<jstring> jreferrer( ConvertUTF8ToJavaString(env, referrer_)); - bool was_opened = Java_AppBannerInfoBarDelegateAndroid_installOrOpenNativeApp( - env, - java_delegate_.obj(), - tab->GetJavaObject().obj(), - native_app_data_.obj(), - jreferrer.obj()); + bool was_opened = + Java_AppBannerInfoBarDelegateAndroid_installOrOpenNativeApp( + env, java_delegate_, tab->GetJavaObject(), native_app_data_, + jreferrer); if (was_opened) { TrackDismissEvent(DISMISS_EVENT_APP_OPEN); @@ -290,10 +285,8 @@ return true; } - Java_AppBannerInfoBarDelegateAndroid_showAppDetails(env, - java_delegate_.obj(), - tab->GetJavaObject().obj(), - native_app_data_.obj()); + Java_AppBannerInfoBarDelegateAndroid_showAppDetails( + env, java_delegate_, tab->GetJavaObject(), native_app_data_); TrackDismissEvent(DISMISS_EVENT_BANNER_CLICK); return true;
diff --git a/chrome/browser/android/banners/app_banner_manager_android.cc b/chrome/browser/android/banners/app_banner_manager_android.cc index fe993cc4..b25d564 100644 --- a/chrome/browser/android/banners/app_banner_manager_android.cc +++ b/chrome/browser/android/banners/app_banner_manager_android.cc
@@ -50,7 +50,7 @@ AppBannerManagerAndroid::~AppBannerManagerAndroid() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_AppBannerManager_destroy(env, java_banner_manager_.obj()); + Java_AppBannerManager_destroy(env, java_banner_manager_); java_banner_manager_.Reset(); } @@ -104,7 +104,7 @@ void AppBannerManagerAndroid::RequestAppBanner(const GURL& validated_url, bool is_debug_mode) { JNIEnv* env = base::android::AttachCurrentThread(); - if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_.obj())) + if (!Java_AppBannerManager_isEnabledForTab(env, java_banner_manager_)) return; AppBannerManager::RequestAppBanner(validated_url, is_debug_mode); @@ -245,9 +245,9 @@ ConvertUTF8ToJavaString(env, validated_url_.spec())); ScopedJavaLocalRef<jstring> jpackage(ConvertUTF8ToJavaString(env, id)); ScopedJavaLocalRef<jstring> jreferrer(ConvertUTF8ToJavaString(env, referrer)); - Java_AppBannerManager_fetchAppDetails( - env, java_banner_manager_.obj(), jurl.obj(), jpackage.obj(), - jreferrer.obj(), GetIdealIconSizeInDp()); + Java_AppBannerManager_fetchAppDetails(env, java_banner_manager_, jurl, + jpackage, jreferrer, + GetIdealIconSizeInDp()); return true; }
diff --git a/chrome/browser/android/blimp/chrome_blimp_client_context_delegate_android.cc b/chrome/browser/android/blimp/chrome_blimp_client_context_delegate_android.cc index 1c7f6a1..c38dccc 100644 --- a/chrome/browser/android/blimp/chrome_blimp_client_context_delegate_android.cc +++ b/chrome/browser/android/blimp/chrome_blimp_client_context_delegate_android.cc
@@ -42,5 +42,5 @@ ChromeBlimpClientContextDelegateAndroid:: ~ChromeBlimpClientContextDelegateAndroid() { Java_ChromeBlimpClientContextDelegate_clearNativePtr( - base::android::AttachCurrentThread(), java_obj_.obj()); + base::android::AttachCurrentThread(), java_obj_); }
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc index 7e603442..476203d8 100644 --- a/chrome/browser/android/bookmarks/bookmark_bridge.cc +++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -581,8 +581,8 @@ } if (j_callback_obj) { - Java_BookmarksCallback_onBookmarksAvailable( - env, j_callback_obj, folder_id_obj.obj(), j_result_obj); + Java_BookmarksCallback_onBookmarksAvailable(env, j_callback_obj, + folder_id_obj, j_result_obj); } } @@ -631,7 +631,7 @@ } Java_BookmarksCallback_onBookmarksFolderHierarchyAvailable( - env, j_callback_obj, folder_id_obj.obj(), j_result_obj); + env, j_callback_obj, folder_id_obj, j_result_obj); } void BookmarkBridge::SearchBookmarks(JNIEnv* env, @@ -666,10 +666,10 @@ Java_BookmarkBridge_addToBookmarkMatchList( env, j_list, node->id(), node->type(), - ToJavaIntArray(env, title_match_start_positions).obj(), - ToJavaIntArray(env, title_match_end_positions).obj(), - ToJavaIntArray(env, url_match_start_positions).obj(), - ToJavaIntArray(env, url_match_end_positions).obj()); + ToJavaIntArray(env, title_match_start_positions), + ToJavaIntArray(env, title_match_end_positions), + ToJavaIntArray(env, url_match_start_positions), + ToJavaIntArray(env, url_match_end_positions)); } } @@ -819,16 +819,10 @@ url = node->url().spec(); return Java_BookmarkBridge_createBookmarkItem( - env, - node->id(), - GetBookmarkType(node), - ConvertUTF16ToJavaString(env, GetTitle(node)).obj(), - ConvertUTF8ToJavaString(env, url).obj(), - node->is_folder(), - parent_id, - GetBookmarkType(parent), - IsEditable(node), - IsManaged(node)); + env, node->id(), GetBookmarkType(node), + ConvertUTF16ToJavaString(env, GetTitle(node)), + ConvertUTF8ToJavaString(env, url), node->is_folder(), parent_id, + GetBookmarkType(parent), IsEditable(node), IsManaged(node)); } void BookmarkBridge::ExtractBookmarkNodeInformation(const BookmarkNode* node, @@ -836,8 +830,7 @@ JNIEnv* env = AttachCurrentThread(); if (!IsReachable(node)) return; - Java_BookmarkBridge_addToList( - env, j_result_obj, CreateJavaBookmark(node).obj()); + Java_BookmarkBridge_addToList(env, j_result_obj, CreateJavaBookmark(node)); } const BookmarkNode* BookmarkBridge::GetNodeByID(long node_id, int type) { @@ -874,7 +867,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_editBookmarksEnabledChanged(env, obj.obj()); + Java_BookmarkBridge_editBookmarksEnabledChanged(env, obj); } bool BookmarkBridge::IsEditable(const BookmarkNode* node) const { @@ -945,7 +938,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkModelLoaded(env, obj.obj()); + Java_BookmarkBridge_bookmarkModelLoaded(env, obj); } // ------------- Observer-related methods ------------- // @@ -960,7 +953,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkModelChanged(env, obj.obj()); + Java_BookmarkBridge_bookmarkModelChanged(env, obj); } void BookmarkBridge::BookmarkModelLoaded(BookmarkModel* model, @@ -976,7 +969,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkModelDeleted(env, obj.obj()); + Java_BookmarkBridge_bookmarkModelDeleted(env, obj); } void BookmarkBridge::BookmarkNodeMoved(BookmarkModel* model, @@ -992,12 +985,8 @@ if (obj.is_null()) return; Java_BookmarkBridge_bookmarkNodeMoved( - env, - obj.obj(), - CreateJavaBookmark(old_parent).obj(), - old_index, - CreateJavaBookmark(new_parent).obj(), - new_index); + env, obj, CreateJavaBookmark(old_parent), old_index, + CreateJavaBookmark(new_parent), new_index); } void BookmarkBridge::BookmarkNodeAdded(BookmarkModel* model, @@ -1010,11 +999,8 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkNodeAdded( - env, - obj.obj(), - CreateJavaBookmark(parent).obj(), - index); + Java_BookmarkBridge_bookmarkNodeAdded(env, obj, CreateJavaBookmark(parent), + index); } void BookmarkBridge::BookmarkNodeRemoved(BookmarkModel* model, @@ -1029,12 +1015,8 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkNodeRemoved( - env, - obj.obj(), - CreateJavaBookmark(parent).obj(), - old_index, - CreateJavaBookmark(node).obj()); + Java_BookmarkBridge_bookmarkNodeRemoved(env, obj, CreateJavaBookmark(parent), + old_index, CreateJavaBookmark(node)); } void BookmarkBridge::BookmarkAllUserNodesRemoved( @@ -1047,7 +1029,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkAllUserNodesRemoved(env, obj.obj()); + Java_BookmarkBridge_bookmarkAllUserNodesRemoved(env, obj); } void BookmarkBridge::BookmarkNodeChanged(BookmarkModel* model, @@ -1059,10 +1041,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkNodeChanged( - env, - obj.obj(), - CreateJavaBookmark(node).obj()); + Java_BookmarkBridge_bookmarkNodeChanged(env, obj, CreateJavaBookmark(node)); } void BookmarkBridge::BookmarkNodeChildrenReordered(BookmarkModel* model, @@ -1074,10 +1053,8 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_bookmarkNodeChildrenReordered( - env, - obj.obj(), - CreateJavaBookmark(node).obj()); + Java_BookmarkBridge_bookmarkNodeChildrenReordered(env, obj, + CreateJavaBookmark(node)); } void BookmarkBridge::ExtensiveBookmarkChangesBeginning(BookmarkModel* model) { @@ -1088,7 +1065,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_extensiveBookmarkChangesBeginning(env, obj.obj()); + Java_BookmarkBridge_extensiveBookmarkChangesBeginning(env, obj); } void BookmarkBridge::ExtensiveBookmarkChangesEnded(BookmarkModel* model) { @@ -1099,7 +1076,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_BookmarkBridge_extensiveBookmarkChangesEnded(env, obj.obj()); + Java_BookmarkBridge_extensiveBookmarkChangesEnded(env, obj); } void BookmarkBridge::PartnerShimChanged(PartnerBookmarksShim* shim) {
diff --git a/chrome/browser/android/bottombar/overlay_panel_content.cc b/chrome/browser/android/bottombar/overlay_panel_content.cc index 95ee5d0..2ec9bda 100644 --- a/chrome/browser/android/bottombar/overlay_panel_content.cc +++ b/chrome/browser/android/bottombar/overlay_panel_content.cc
@@ -46,8 +46,7 @@ OverlayPanelContent::~OverlayPanelContent() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_OverlayPanelContent_clearNativePanelContentPtr( - env, java_manager_.obj()); + Java_OverlayPanelContent_clearNativePanelContentPtr(env, java_manager_); } void OverlayPanelContent::Destroy(JNIEnv* env,
diff --git a/chrome/browser/android/browsing_data/browsing_data_counter_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_counter_bridge.cc index 67ffe5d..a0b005b 100644 --- a/chrome/browser/android/browsing_data/browsing_data_counter_bridge.cc +++ b/chrome/browser/android/browsing_data/browsing_data_counter_bridge.cc
@@ -59,9 +59,9 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> result_string = base::android::ConvertUTF16ToJavaString( - env, GetCounterTextFromResult(result.get())); - Java_BrowsingDataCounterBridge_onBrowsingDataCounterFinished( - env, jobject_.obj(), result_string.obj()); + env, GetChromeCounterTextFromResult(result.get())); + Java_BrowsingDataCounterBridge_onBrowsingDataCounterFinished(env, jobject_, + result_string); } static jlong Init(
diff --git a/chrome/browser/android/chrome_application.cc b/chrome/browser/android/chrome_application.cc index a8c057a..7f8228f 100644 --- a/chrome/browser/android/chrome_application.cc +++ b/chrome/browser/android/chrome_application.cc
@@ -120,8 +120,7 @@ DCHECK(tab); Java_ChromeApplication_openClearBrowsingData( base::android::AttachCurrentThread(), - base::android::GetApplicationContext(), - tab->GetJavaObject().obj()); + base::android::GetApplicationContext(), tab->GetJavaObject()); } bool ChromeApplication::AreParentalControlsEnabled() {
diff --git a/chrome/browser/android/compositor/compositor_view.cc b/chrome/browser/android/compositor/compositor_view.cc index acb5fc3..ab69538f 100644 --- a/chrome/browser/android/compositor/compositor_view.cc +++ b/chrome/browser/android/compositor/compositor_view.cc
@@ -122,13 +122,12 @@ void CompositorView::UpdateLayerTreeHost() { JNIEnv* env = base::android::AttachCurrentThread(); // TODO(wkorman): Rename JNI interface to onCompositorUpdateLayerTreeHost. - Java_CompositorView_onCompositorLayout(env, obj_.obj()); + Java_CompositorView_onCompositorLayout(env, obj_); } void CompositorView::OnSwapBuffersCompleted(int pending_swap_buffers) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_CompositorView_onSwapBuffersCompleted(env, obj_.obj(), - pending_swap_buffers); + Java_CompositorView_onSwapBuffersCompleted(env, obj_, pending_swap_buffers); } ui::UIResourceProvider* CompositorView::GetUIResourceProvider() { @@ -255,7 +254,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); compositor_->SetSurface(nullptr); Java_CompositorView_onJellyBeanSurfaceDisconnectWorkaround( - env, obj_.obj(), overlay_video_mode_); + env, obj_, overlay_video_mode_); } }
diff --git a/chrome/browser/android/compositor/scene_layer/scene_layer.cc b/chrome/browser/android/compositor/scene_layer/scene_layer.cc index b5a7cd0..7c57e5d 100644 --- a/chrome/browser/android/compositor/scene_layer/scene_layer.cc +++ b/chrome/browser/android/compositor/scene_layer/scene_layer.cc
@@ -38,8 +38,7 @@ return; Java_SceneLayer_setNativePtr( - env, jobj.obj(), - reinterpret_cast<intptr_t>(static_cast<SceneLayer*>(NULL))); + env, jobj, reinterpret_cast<intptr_t>(static_cast<SceneLayer*>(NULL))); } void SceneLayer::OnDetach() {
diff --git a/chrome/browser/android/compositor/tab_content_manager.cc b/chrome/browser/android/compositor/tab_content_manager.cc index e14bbed9..8d50678 100644 --- a/chrome/browser/android/compositor/tab_content_manager.cc +++ b/chrome/browser/android/compositor/tab_content_manager.cc
@@ -199,8 +199,7 @@ java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); Java_TabContentManager_notifyDecompressBitmapFinished( - env, weak_java_tab_content_manager_.get(env).obj(), tab_id, - java_bitmap.obj()); + env, weak_java_tab_content_manager_.get(env), tab_id, java_bitmap); } jboolean TabContentManager::HasFullCachedThumbnail( @@ -311,7 +310,7 @@ void TabContentManager::OnFinishedThumbnailRead(int tab_id) { JNIEnv* env = base::android::AttachCurrentThread(); Java_TabContentManager_notifyListenersOfThumbnailChange( - env, weak_java_tab_content_manager_.get(env).obj(), tab_id); + env, weak_java_tab_content_manager_.get(env), tab_id); } void TabContentManager::PutThumbnailIntoCache(int tab_id,
diff --git a/chrome/browser/android/contextualsearch/contextual_search_manager.cc b/chrome/browser/android/contextualsearch/contextual_search_manager.cc index 8c6299cf..6a86cae7 100644 --- a/chrome/browser/android/contextualsearch/contextual_search_manager.cc +++ b/chrome/browser/android/contextualsearch/contextual_search_manager.cc
@@ -52,7 +52,7 @@ ContextualSearchManager::~ContextualSearchManager() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ContextualSearchManager_clearNativeManager(env, java_manager_.obj()); + Java_ContextualSearchManager_clearNativeManager(env, java_manager_); } void ContextualSearchManager::Destroy(JNIEnv* env, @@ -138,12 +138,11 @@ base::android::ConvertUTF8ToJavaString( env, resolved_search_term.context_language.c_str()); Java_ContextualSearchManager_onSearchTermResolutionResponse( - env, java_manager_.obj(), resolved_search_term.is_invalid, - resolved_search_term.response_code, j_search_term.obj(), - j_display_text.obj(), j_alternate_term.obj(), j_mid.obj(), - resolved_search_term.prevent_preload, + env, java_manager_, resolved_search_term.is_invalid, + resolved_search_term.response_code, j_search_term, j_display_text, + j_alternate_term, j_mid, resolved_search_term.prevent_preload, resolved_search_term.selection_start_adjust, - resolved_search_term.selection_end_adjust, j_context_language.obj()); + resolved_search_term.selection_end_adjust, j_context_language); } void ContextualSearchManager::OnSurroundingTextAvailable( @@ -151,10 +150,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> j_after_text = base::android::ConvertUTF8ToJavaString(env, after_text.c_str()); - Java_ContextualSearchManager_onSurroundingTextAvailable( - env, - java_manager_.obj(), - j_after_text.obj()); + Java_ContextualSearchManager_onSurroundingTextAvailable(env, java_manager_, + j_after_text); } void ContextualSearchManager::OnIcingSelectionAvailable( @@ -168,8 +165,8 @@ base::android::ScopedJavaLocalRef<jstring> j_surrounding_text = base::android::ConvertUTF16ToJavaString(env, surrounding_text.c_str()); Java_ContextualSearchManager_onIcingSelectionAvailable( - env, java_manager_.obj(), j_encoding.obj(), j_surrounding_text.obj(), - start_offset, end_offset); + env, java_manager_, j_encoding, j_surrounding_text, start_offset, + end_offset); } void ContextualSearchManager::EnableContextualSearchJsApiForOverlay( @@ -208,6 +205,6 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> j_caption = base::android::ConvertUTF8ToJavaString(env, caption.c_str()); - Java_ContextualSearchManager_onSetCaption(env, java_manager_.obj(), - j_caption.obj(), does_answer); + Java_ContextualSearchManager_onSetCaption(env, java_manager_, j_caption, + does_answer); }
diff --git a/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc b/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc index 66b4b6d..e39a905 100644 --- a/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc +++ b/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc
@@ -35,7 +35,7 @@ void ContextualSearchTabHelper::OnContextualSearchPrefChanged() { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> jobj = weak_java_ref_.get(env); - Java_ContextualSearchTabHelper_onContextualSearchPrefChanged(env, jobj.obj()); + Java_ContextualSearchTabHelper_onContextualSearchPrefChanged(env, jobj); } void ContextualSearchTabHelper::Destroy(JNIEnv* env,
diff --git a/chrome/browser/android/cookies/cookies_fetcher.cc b/chrome/browser/android/cookies/cookies_fetcher.cc index 4fdf13f..1711d79 100644 --- a/chrome/browser/android/cookies/cookies_fetcher.cc +++ b/chrome/browser/android/cookies/cookies_fetcher.cc
@@ -74,8 +74,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobjectArray> joa = - Java_CookiesFetcher_createCookiesArray( - env, jobject_.obj(), cookies.size()); + Java_CookiesFetcher_createCookiesArray(env, jobject_, cookies.size()); int index = 0; for (net::CookieList::const_iterator i = cookies.begin(); @@ -84,18 +83,17 @@ if (domain.length() > 1 && domain[0] == '.') domain = domain.substr(1); ScopedJavaLocalRef<jobject> java_cookie = Java_CookiesFetcher_createCookie( - env, jobject_.obj(), - base::android::ConvertUTF8ToJavaString(env, i->Name()).obj(), - base::android::ConvertUTF8ToJavaString(env, i->Value()).obj(), - base::android::ConvertUTF8ToJavaString(env, i->Domain()).obj(), - base::android::ConvertUTF8ToJavaString(env, i->Path()).obj(), + env, jobject_, base::android::ConvertUTF8ToJavaString(env, i->Name()), + base::android::ConvertUTF8ToJavaString(env, i->Value()), + base::android::ConvertUTF8ToJavaString(env, i->Domain()), + base::android::ConvertUTF8ToJavaString(env, i->Path()), i->CreationDate().ToInternalValue(), i->ExpiryDate().ToInternalValue(), i->LastAccessDate().ToInternalValue(), i->IsSecure(), i->IsHttpOnly(), static_cast<int>(i->SameSite()), i->Priority()); env->SetObjectArrayElement(joa.obj(), index++, java_cookie.obj()); } - Java_CookiesFetcher_onCookieFetchFinished(env, jobject_.obj(), joa.obj()); + Java_CookiesFetcher_onCookieFetchFinished(env, jobject_, joa); // Give up the reference. jobject_.Reset();
diff --git a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc index d501350..b9438e94 100644 --- a/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc +++ b/chrome/browser/android/data_usage/external_data_use_observer_bridge.cc
@@ -52,8 +52,7 @@ if (j_external_data_use_observer_.is_null()) return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_ExternalDataUseObserver_onDestroy(env, - j_external_data_use_observer_.obj()); + Java_ExternalDataUseObserver_onDestroy(env, j_external_data_use_observer_); } void ExternalDataUseObserverBridge::Init( @@ -79,8 +78,8 @@ DCHECK(!j_external_data_use_observer_.is_null()); Java_ExternalDataUseObserver_initControlAppManager( - env, j_external_data_use_observer_.obj(), - ConvertUTF8ToJavaString(env, GetControlAppPackageName()).obj()); + env, j_external_data_use_observer_, + ConvertUTF8ToJavaString(env, GetControlAppPackageName())); } void ExternalDataUseObserverBridge::FetchMatchingRules() const { @@ -88,7 +87,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_ExternalDataUseObserver_fetchMatchingRules( - env, j_external_data_use_observer_.obj()); + env, j_external_data_use_observer_); } void ExternalDataUseObserverBridge::FetchMatchingRulesDone( @@ -151,10 +150,9 @@ start_time_milliseconds = end_time_milliseconds - 1; Java_ExternalDataUseObserver_reportDataUse( - env, j_external_data_use_observer_.obj(), - ConvertUTF8ToJavaString(env, label).obj(), - ConvertUTF8ToJavaString(env, tag).obj(), connection_type, - ConvertUTF8ToJavaString(env, mcc_mnc).obj(), start_time_milliseconds, + env, j_external_data_use_observer_, ConvertUTF8ToJavaString(env, label), + ConvertUTF8ToJavaString(env, tag), connection_type, + ConvertUTF8ToJavaString(env, mcc_mnc), start_time_milliseconds, end_time_milliseconds, bytes_downloaded, bytes_uploaded); }
diff --git a/chrome/browser/android/dom_distiller/distiller_ui_handle_android.cc b/chrome/browser/android/dom_distiller/distiller_ui_handle_android.cc index bf4c357b..494ef52 100644 --- a/chrome/browser/android/dom_distiller/distiller_ui_handle_android.cc +++ b/chrome/browser/android/dom_distiller/distiller_ui_handle_android.cc
@@ -31,7 +31,7 @@ env, url_utils::GetOriginalUrlFromDistillerUrl(url).spec()); Java_DomDistillerUIUtils_reportFeedbackWithWebContents( - env, web_contents->GetJavaWebContents().obj(), jurl.obj(), good); + env, web_contents->GetJavaWebContents(), jurl, good); } // static @@ -39,7 +39,7 @@ content::WebContents* web_contents) { JNIEnv* env = base::android::AttachCurrentThread(); Java_DomDistillerUIUtils_openSettings(env, - web_contents->GetJavaWebContents().obj()); + web_contents->GetJavaWebContents()); } // static
diff --git a/chrome/browser/android/download/chrome_download_delegate.cc b/chrome/browser/android/download/chrome_download_delegate.cc index e8398e7..256e6f45 100644 --- a/chrome/browser/android/download/chrome_download_delegate.cc +++ b/chrome/browser/android/download/chrome_download_delegate.cc
@@ -171,10 +171,9 @@ ScopedJavaLocalRef<jstring> jfilename = base::android::ConvertUTF16ToJavaString(env, file_name); Java_ChromeDownloadDelegate_requestHttpGetDownload( - env, java_ref_, - jurl.obj(), juser_agent.obj(), jcontent_disposition.obj(), - jmime_type.obj(), jcookie.obj(), jreferer.obj(), has_user_gesture, - jfilename.obj(), content_length, must_download); + env, java_ref_, jurl, juser_agent, jcontent_disposition, jmime_type, + jcookie, jreferer, has_user_gesture, jfilename, content_length, + must_download); } void ChromeDownloadDelegate::OnDownloadStarted(const std::string& filename, @@ -184,8 +183,8 @@ env, filename); ScopedJavaLocalRef<jstring> jmime_type = ConvertUTF8ToJavaString(env, mime_type); - Java_ChromeDownloadDelegate_onDownloadStarted( - env, java_ref_, jfilename.obj(), jmime_type.obj()); + Java_ChromeDownloadDelegate_onDownloadStarted(env, java_ref_, jfilename, + jmime_type); } void ChromeDownloadDelegate::OnDangerousDownload(const std::string& filename, @@ -194,8 +193,8 @@ ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString( env, filename); ScopedJavaLocalRef<jstring> jguid = ConvertUTF8ToJavaString(env, guid); - Java_ChromeDownloadDelegate_onDangerousDownload( - env, java_ref_, jfilename.obj(), jguid.obj()); + Java_ChromeDownloadDelegate_onDangerousDownload(env, java_ref_, jfilename, + jguid); } void ChromeDownloadDelegate::RequestFileAccess(intptr_t callback_id) {
diff --git a/chrome/browser/android/download/download_controller.cc b/chrome/browser/android/download/download_controller.cc index 89f8bfbd..e327958 100644 --- a/chrome/browser/android/download/download_controller.cc +++ b/chrome/browser/android/download/download_controller.cc
@@ -231,7 +231,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); return Java_DownloadController_hasFileAccess( - env, GetJavaObject()->Controller(env).obj(), jwindow_android.obj()); + env, GetJavaObject()->Controller(env), jwindow_android); } void DownloadController::CreateGETDownload( @@ -345,11 +345,9 @@ base::TimeDelta time_delta; item->TimeRemaining(&time_delta); Java_DownloadController_onDownloadUpdated( - env, GetJavaObject()->Controller(env).obj(), jurl.obj(), - jmime_type.obj(), jfilename.obj(), jpath.obj(), - item->GetReceivedBytes(), jguid.obj(), - item->PercentComplete(), time_delta.InMilliseconds(), - hasUserGesture, item->IsPaused(), + env, GetJavaObject()->Controller(env), jurl, jmime_type, jfilename, + jpath, item->GetReceivedBytes(), jguid, item->PercentComplete(), + time_delta.InMilliseconds(), hasUserGesture, item->IsPaused(), item->GetBrowserContext()->IsOffTheRecord()); break; } @@ -360,26 +358,24 @@ // Call onDownloadCompleted Java_DownloadController_onDownloadCompleted( - env, GetJavaObject()->Controller(env).obj(), jurl.obj(), - jmime_type.obj(), jfilename.obj(), jpath.obj(), - item->GetReceivedBytes(), jguid.obj(), - joriginal_url.obj(), jreferrer_url.obj(), hasUserGesture); + env, GetJavaObject()->Controller(env), jurl, jmime_type, jfilename, + jpath, item->GetReceivedBytes(), jguid, joriginal_url, jreferrer_url, + hasUserGesture); DownloadController::RecordDownloadCancelReason( DownloadController::CANCEL_REASON_NOT_CANCELED); break; case DownloadItem::CANCELLED: Java_DownloadController_onDownloadCancelled( - env, GetJavaObject()->Controller(env).obj(), jguid.obj()); + env, GetJavaObject()->Controller(env), jguid); break; case DownloadItem::INTERRUPTED: // When device loses/changes network, we get a NETWORK_TIMEOUT, // NETWORK_FAILED or NETWORK_DISCONNECTED error. Download should auto // resume in this case. Java_DownloadController_onDownloadInterrupted( - env, GetJavaObject()->Controller(env).obj(), jurl.obj(), - jmime_type.obj(), jfilename.obj(), jpath.obj(), - item->GetReceivedBytes(), jguid.obj(), - item->CanResume(), IsInterruptedDownloadAutoResumable(item), + env, GetJavaObject()->Controller(env), jurl, jmime_type, jfilename, + jpath, item->GetReceivedBytes(), jguid, item->CanResume(), + IsInterruptedDownloadAutoResumable(item), item->GetBrowserContext()->IsOffTheRecord()); item->RemoveObserver(this); break;
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc index f7aab95..7999c0fe 100644 --- a/chrome/browser/android/download/download_manager_service.cc +++ b/chrome/browser/android/download/download_manager_service.cc
@@ -49,8 +49,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> jname = ConvertUTF8ToJavaString(env, download->GetURL().ExtractFileName()); - Java_DownloadManagerService_onDownloadItemCanceled( - env, jname.obj(), has_no_external_storage); + Java_DownloadManagerService_onDownloadItemCanceled(env, jname, + has_no_external_storage); DownloadController::RecordDownloadCancelReason(reason); } @@ -144,17 +144,12 @@ continue; Java_DownloadManagerService_onDownloadItemUpdated( - env, - java_ref_.obj(), - ConvertUTF8ToJavaString(env, item->GetGuid()).obj(), - ConvertUTF8ToJavaString( - env, item->GetFileNameToReportUser().value()).obj(), - ConvertUTF8ToJavaString( - env, item->GetTargetFilePath().value()).obj(), - ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()).obj(), - ConvertUTF8ToJavaString(env, item->GetMimeType()).obj(), - item->GetStartTime().ToJavaTime(), - item->GetTotalBytes()); + env, java_ref_, ConvertUTF8ToJavaString(env, item->GetGuid()), + ConvertUTF8ToJavaString(env, item->GetFileNameToReportUser().value()), + ConvertUTF8ToJavaString(env, item->GetTargetFilePath().value()), + ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()), + ConvertUTF8ToJavaString(env, item->GetMimeType()), + item->GetStartTime().ToJavaTime(), item->GetTotalBytes()); break; } } @@ -170,7 +165,7 @@ // Create a Java array of all of the visible DownloadItems. JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_download_item_list = - Java_DownloadManagerService_createDownloadItemList(env, java_ref_.obj()); + Java_DownloadManagerService_createDownloadItemList(env, java_ref_); for (size_t i = 0; i < all_items.size(); i++) { content::DownloadItem* item = all_items[i]; @@ -178,22 +173,17 @@ continue; Java_DownloadManagerService_addDownloadItemToList( - env, - java_ref_.obj(), - j_download_item_list.obj(), - ConvertUTF8ToJavaString(env, item->GetGuid()).obj(), - ConvertUTF8ToJavaString( - env, item->GetFileNameToReportUser().value()).obj(), - ConvertUTF8ToJavaString( - env, item->GetTargetFilePath().value()).obj(), - ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()).obj(), - ConvertUTF8ToJavaString(env, item->GetMimeType()).obj(), - item->GetStartTime().ToJavaTime(), - item->GetTotalBytes()); + env, java_ref_, j_download_item_list, + ConvertUTF8ToJavaString(env, item->GetGuid()), + ConvertUTF8ToJavaString(env, item->GetFileNameToReportUser().value()), + ConvertUTF8ToJavaString(env, item->GetTargetFilePath().value()), + ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()), + ConvertUTF8ToJavaString(env, item->GetMimeType()), + item->GetStartTime().ToJavaTime(), item->GetTotalBytes()); } - Java_DownloadManagerService_onAllDownloadsRetrieved( - env, java_ref_.obj(), j_download_item_list.obj()); + Java_DownloadManagerService_onAllDownloadsRetrieved(env, java_ref_, + j_download_item_list); } @@ -250,9 +240,7 @@ content::DownloadManager* manager, content::DownloadItem* item) { JNIEnv* env = base::android::AttachCurrentThread(); Java_DownloadManagerService_onDownloadItemRemoved( - env, - java_ref_.obj(), - ConvertUTF8ToJavaString(env, item->GetGuid()).obj()); + env, java_ref_, ConvertUTF8ToJavaString(env, item->GetGuid())); } void DownloadManagerService::ResumeDownloadInternal( @@ -357,8 +345,7 @@ if (!java_ref_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); Java_DownloadManagerService_onResumptionFailed( - env, java_ref_.obj(), - ConvertUTF8ToJavaString(env, download_guid).obj()); + env, java_ref_, ConvertUTF8ToJavaString(env, download_guid)); } if (!resume_callback_for_testing_.is_null()) resume_callback_for_testing_.Run(false);
diff --git a/chrome/browser/android/favicon_helper.cc b/chrome/browser/android/favicon_helper.cc index 273d339..58807252 100644 --- a/chrome/browser/android/favicon_helper.cc +++ b/chrome/browser/android/favicon_helper.cc
@@ -64,10 +64,8 @@ } // Call java side OnLocalFaviconAvailable method. - Java_FaviconImageCallback_onFaviconAvailable(env, - j_favicon_image_callback->obj(), - j_favicon_bitmap.obj(), - j_icon_url.obj()); + Java_FaviconImageCallback_onFaviconAvailable( + env, j_favicon_image_callback->obj(), j_favicon_bitmap, j_icon_url); } size_t GetLargestSizeIndex(const std::vector<gfx::Size>& sizes) { @@ -107,7 +105,7 @@ JNIEnv* env = AttachCurrentThread(); Java_IconAvailabilityCallback_onIconAvailabilityChecked( - env, j_availability_callback.obj(), success); + env, j_availability_callback, success); } void OnFaviconImageResultAvailable( @@ -123,7 +121,7 @@ if (!result.image.IsEmpty()) { JNIEnv* env = AttachCurrentThread(); Java_IconAvailabilityCallback_onIconAvailabilityChecked( - env, j_availability_callback.obj(), false); + env, j_availability_callback, false); return; }
diff --git a/chrome/browser/android/foreign_session_helper.cc b/chrome/browser/android/foreign_session_helper.cc index 0722bf3..8b0bd4e 100644 --- a/chrome/browser/android/foreign_session_helper.cc +++ b/chrome/browser/android/foreign_session_helper.cc
@@ -98,11 +98,9 @@ GURL tab_url = current_navigation.virtual_url(); Java_ForeignSessionHelper_pushTab( - env, j_window.obj(), - ConvertUTF8ToJavaString(env, tab_url.spec()).obj(), - ConvertUTF16ToJavaString(env, current_navigation.title()).obj(), - tab.timestamp.ToJavaTime(), - tab.tab_id.id()); + env, j_window, ConvertUTF8ToJavaString(env, tab_url.spec()), + ConvertUTF16ToJavaString(env, current_navigation.title()), + tab.timestamp.ToJavaTime(), tab.tab_id.id()); } void CopyWindowToJava( @@ -132,11 +130,8 @@ continue; ScopedJavaLocalRef<jobject> last_pushed_window; - last_pushed_window.Reset( - Java_ForeignSessionHelper_pushWindow( - env, j_session.obj(), - window.timestamp.ToJavaTime(), - window.window_id.id())); + last_pushed_window.Reset(Java_ForeignSessionHelper_pushWindow( + env, j_session, window.timestamp.ToJavaTime(), window.window_id.id())); CopyWindowToJava(env, window, last_pushed_window); } @@ -202,7 +197,7 @@ return; JNIEnv* env = AttachCurrentThread(); - Java_ForeignSessionCallback_onUpdated(env, callback_.obj()); + Java_ForeignSessionCallback_onUpdated(env, callback_); } void ForeignSessionHelper::OnSyncConfigurationCompleted() { @@ -248,14 +243,10 @@ if (is_collapsed) pref_collapsed_sessions->SetBoolean(session.session_tag, true); - last_pushed_session.Reset( - Java_ForeignSessionHelper_pushSession( - env, - result, - ConvertUTF8ToJavaString(env, session.session_tag).obj(), - ConvertUTF8ToJavaString(env, session.session_name).obj(), - session.device_type, - session.modified_time.ToJavaTime())); + last_pushed_session.Reset(Java_ForeignSessionHelper_pushSession( + env, result, ConvertUTF8ToJavaString(env, session.session_tag), + ConvertUTF8ToJavaString(env, session.session_name), session.device_type, + session.modified_time.ToJavaTime())); const std::string group_name = base::FieldTrialList::FindFullName("TabSyncByRecency"); @@ -266,8 +257,7 @@ open_tabs->GetForeignSessionTabs(session.session_tag, &tabs); ScopedJavaLocalRef<jobject> last_pushed_window( Java_ForeignSessionHelper_pushWindow( - env, last_pushed_session.obj(), - session.modified_time.ToJavaTime(), 0)); + env, last_pushed_session, session.modified_time.ToJavaTime(), 0)); for (const sessions::SessionTab* tab : tabs) { if (ShouldSkipTab(*tab)) continue;
diff --git a/chrome/browser/android/history_report/history_report_jni_bridge.cc b/chrome/browser/android/history_report/history_report_jni_bridge.cc index 3892b58..9009662f 100644 --- a/chrome/browser/android/history_report/history_report_jni_bridge.cc +++ b/chrome/browser/android/history_report/history_report_jni_bridge.cc
@@ -101,13 +101,12 @@ const DeltaFileEntryWithData& entry = (*entries)[i]; max_seq_no = max_seq_no < entry.SeqNo() ? entry.SeqNo() : max_seq_no; history_report::Java_HistoryReportJniBridge_setDeltaFileEntry( - env, jentries_array.obj(), i, entry.SeqNo(), - base::android::ConvertUTF8ToJavaString(env, entry.Type()).obj(), - base::android::ConvertUTF8ToJavaString(env, entry.Id()).obj(), - base::android::ConvertUTF8ToJavaString(env, entry.Url()).obj(), - entry.Score(), - base::android::ConvertUTF16ToJavaString(env, entry.Title()).obj(), - base::android::ConvertUTF8ToJavaString(env, entry.IndexedUrl()).obj()); + env, jentries_array, i, entry.SeqNo(), + base::android::ConvertUTF8ToJavaString(env, entry.Type()), + base::android::ConvertUTF8ToJavaString(env, entry.Id()), + base::android::ConvertUTF8ToJavaString(env, entry.Url()), entry.Score(), + base::android::ConvertUTF16ToJavaString(env, entry.Title()), + base::android::ConvertUTF8ToJavaString(env, entry.IndexedUrl())); } // Check if all entries from delta file were synced and start reporting usage @@ -132,9 +131,9 @@ const UsageReport& report = (*reports)[i]; std::string key = usage_report_util::ReportToKey(report); history_report::Java_HistoryReportJniBridge_setUsageReport( - env, jreports_array.obj(), i, - base::android::ConvertUTF8ToJavaString(env, key).obj(), - base::android::ConvertUTF8ToJavaString(env, report.id()).obj(), + env, jreports_array, i, + base::android::ConvertUTF8ToJavaString(env, key), + base::android::ConvertUTF8ToJavaString(env, report.id()), report.timestamp_ms(), report.typed_visit()); } return jreports_array; @@ -153,30 +152,28 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (!obj.is_null()) - history_report::Java_HistoryReportJniBridge_onDataChanged(env, obj.obj()); + history_report::Java_HistoryReportJniBridge_onDataChanged(env, obj); } void HistoryReportJniBridge::NotifyDataCleared() { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (!obj.is_null()) - history_report::Java_HistoryReportJniBridge_onDataCleared(env, obj.obj()); + history_report::Java_HistoryReportJniBridge_onDataCleared(env, obj); } void HistoryReportJniBridge::StopReporting() { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (!obj.is_null()) - history_report::Java_HistoryReportJniBridge_stopReportingTask(env, - obj.obj()); + history_report::Java_HistoryReportJniBridge_stopReportingTask(env, obj); } void HistoryReportJniBridge::StartReporting() { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (!obj.is_null()) - history_report::Java_HistoryReportJniBridge_startReportingTask(env, - obj.obj()); + history_report::Java_HistoryReportJniBridge_startReportingTask(env, obj); } jboolean HistoryReportJniBridge::AddHistoricVisitsToUsageReportsBuffer(
diff --git a/chrome/browser/android/intent_helper.cc b/chrome/browser/android/intent_helper.cc index 923995b..367b250 100644 --- a/chrome/browser/android/intent_helper.cc +++ b/chrome/browser/android/intent_helper.cc
@@ -33,13 +33,9 @@ ConvertUTF16ToJavaString(env, d_chooser_title); ScopedJavaLocalRef<jstring> j_file_to_attach = ConvertUTF16ToJavaString(env, d_file_to_attach); - Java_IntentHelper_sendEmail(env, - base::android::GetApplicationContext(), - j_email.obj(), - j_subject.obj(), - j_body.obj(), - j_chooser_title.obj(), - j_file_to_attach.obj()); + Java_IntentHelper_sendEmail(env, base::android::GetApplicationContext(), + j_email, j_subject, j_body, j_chooser_title, + j_file_to_attach); } void OpenDateAndTimeSettings() {
diff --git a/chrome/browser/android/large_icon_bridge.cc b/chrome/browser/android/large_icon_bridge.cc index 65e32ee5..cbff92d 100644 --- a/chrome/browser/android/large_icon_bridge.cc +++ b/chrome/browser/android/large_icon_bridge.cc
@@ -52,9 +52,7 @@ if (result.fallback_icon_style) background_color = result.fallback_icon_style->background_color; - Java_LargeIconCallback_onLargeIconAvailable(env, - j_callback->obj(), - j_bitmap.obj(), + Java_LargeIconCallback_onLargeIconAvailable(env, j_callback->obj(), j_bitmap, background_color); }
diff --git a/chrome/browser/android/location_settings_impl.cc b/chrome/browser/android/location_settings_impl.cc index 7079a4b1..9da10a1 100644 --- a/chrome/browser/android/location_settings_impl.cc +++ b/chrome/browser/android/location_settings_impl.cc
@@ -18,5 +18,5 @@ content::WebContents* web_contents) { JNIEnv* env = AttachCurrentThread(); return Java_LocationSettings_canSitesRequestLocationPermission( - env, web_contents->GetJavaWebContents().obj()); + env, web_contents->GetJavaWebContents()); }
diff --git a/chrome/browser/android/logo_bridge.cc b/chrome/browser/android/logo_bridge.cc index e80a7a4a..9927834 100644 --- a/chrome/browser/android/logo_bridge.cc +++ b/chrome/browser/android/logo_bridge.cc
@@ -52,8 +52,8 @@ if (!logo->metadata.animated_url.empty()) j_animated_url = ConvertUTF8ToJavaString(env, logo->metadata.animated_url); - return Java_LogoBridge_createLogo(env, j_bitmap.obj(), j_on_click_url.obj(), - j_alt_text.obj(), j_animated_url.obj()); + return Java_LogoBridge_createLogo(env, j_bitmap, j_on_click_url, j_alt_text, + j_animated_url); } class LogoObserverAndroid : public search_provider_logos::LogoObserver { @@ -75,8 +75,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_logo = ConvertLogoToJavaObject(env, logo); - Java_LogoObserver_onLogoAvailable( - env, j_logo_observer_.obj(), j_logo.obj(), from_cache); + Java_LogoObserver_onLogoAvailable(env, j_logo_observer_, j_logo, + from_cache); } void OnObserverRemoved() override { delete this; } @@ -164,9 +164,9 @@ ToJavaByteArray(env, reinterpret_cast<const uint8_t*>(response.data()), response.length()); ScopedJavaLocalRef<jobject> j_gif_image = - Java_LogoBridge_createGifImage(env, j_bytes.obj()); - Java_AnimatedLogoCallback_onAnimatedLogoAvailable(env, j_callback_.obj(), - j_gif_image.obj()); + Java_LogoBridge_createGifImage(env, j_bytes); + Java_AnimatedLogoCallback_onAnimatedLogoAvailable(env, j_callback_, + j_gif_image); ClearFetcher(); }
diff --git a/chrome/browser/android/mojo/chrome_interface_registrar_android.cc b/chrome/browser/android/mojo/chrome_interface_registrar_android.cc index 26868270..f0cc1dc 100644 --- a/chrome/browser/android/mojo/chrome_interface_registrar_android.cc +++ b/chrome/browser/android/mojo/chrome_interface_registrar_android.cc
@@ -24,6 +24,6 @@ Java_ChromeInterfaceRegistrar_exposeInterfacesToFrame( base::android::AttachCurrentThread(), - content::InterfaceRegistryAndroid::Create(registry)->GetObj().obj(), - web_contents->GetJavaWebContents().obj()); + content::InterfaceRegistryAndroid::Create(registry)->GetObj(), + web_contents->GetJavaWebContents()); }
diff --git a/chrome/browser/android/net/external_estimate_provider_android.cc b/chrome/browser/android/net/external_estimate_provider_android.cc index d81bd32..a460651 100644 --- a/chrome/browser/android/net/external_estimate_provider_android.cc +++ b/chrome/browser/android/net/external_estimate_provider_android.cc
@@ -35,8 +35,7 @@ ExternalEstimateProviderAndroid::~ExternalEstimateProviderAndroid() { DCHECK(thread_checker_.CalledOnValidThread()); Java_ExternalEstimateProviderAndroid_destroy( - base::android::AttachCurrentThread(), - j_external_estimate_provider_.obj()); + base::android::AttachCurrentThread(), j_external_estimate_provider_); } bool ExternalEstimateProviderAndroid::GetRTT(base::TimeDelta* rtt) const { @@ -44,7 +43,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); int32_t milliseconds = Java_ExternalEstimateProviderAndroid_getRTTMilliseconds( - env, j_external_estimate_provider_.obj()); + env, j_external_estimate_provider_); DCHECK_GE(milliseconds, no_value_); if (milliseconds == no_value_) return false; @@ -58,7 +57,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); int32_t kbps = Java_ExternalEstimateProviderAndroid_getDownstreamThroughputKbps( - env, j_external_estimate_provider_.obj()); + env, j_external_estimate_provider_); DCHECK_GE(kbps, no_value_); if (kbps == no_value_) return false; @@ -71,7 +70,7 @@ DCHECK(thread_checker_.CalledOnValidThread()); JNIEnv* env = base::android::AttachCurrentThread(); int32_t kbps = Java_ExternalEstimateProviderAndroid_getUpstreamThroughputKbps( - env, j_external_estimate_provider_.obj()); + env, j_external_estimate_provider_); DCHECK_GE(kbps, no_value_); if (kbps == no_value_) return false; @@ -85,7 +84,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); int32_t seconds = Java_ExternalEstimateProviderAndroid_getTimeSinceLastUpdateSeconds( - env, j_external_estimate_provider_.obj()); + env, j_external_estimate_provider_); DCHECK_GE(seconds, no_value_); if (seconds == no_value_) { *time_since_last_update = base::TimeDelta::Max(); @@ -104,7 +103,7 @@ DCHECK(thread_checker_.CalledOnValidThread()); JNIEnv* env = base::android::AttachCurrentThread(); Java_ExternalEstimateProviderAndroid_requestUpdate( - env, j_external_estimate_provider_.obj()); + env, j_external_estimate_provider_); } void ExternalEstimateProviderAndroid::
diff --git a/chrome/browser/android/ntp/most_visited_sites_bridge.cc b/chrome/browser/android/ntp/most_visited_sites_bridge.cc index 802adee..7c0676f 100644 --- a/chrome/browser/android/ntp/most_visited_sites_bridge.cc +++ b/chrome/browser/android/ntp/most_visited_sites_bridge.cc
@@ -133,10 +133,10 @@ sources.emplace_back(static_cast<int>(tile.source)); } Java_MostVisitedURLsObserver_onMostVisitedURLsAvailable( - env, observer_.obj(), ToJavaArrayOfStrings(env, titles).obj(), - ToJavaArrayOfStrings(env, urls).obj(), - ToJavaArrayOfStrings(env, whitelist_icon_paths).obj(), - ToJavaIntArray(env, sources).obj()); + env, observer_, ToJavaArrayOfStrings(env, titles), + ToJavaArrayOfStrings(env, urls), + ToJavaArrayOfStrings(env, whitelist_icon_paths), + ToJavaIntArray(env, sources)); } void MostVisitedSitesBridge::JavaObserver::OnPopularURLsAvailable( @@ -151,9 +151,9 @@ large_icon_urls.emplace_back(site.large_icon_url.spec()); } Java_MostVisitedURLsObserver_onPopularURLsAvailable( - env, observer_.obj(), ToJavaArrayOfStrings(env, urls).obj(), - ToJavaArrayOfStrings(env, favicon_urls).obj(), - ToJavaArrayOfStrings(env, large_icon_urls).obj()); + env, observer_, ToJavaArrayOfStrings(env, urls), + ToJavaArrayOfStrings(env, favicon_urls), + ToJavaArrayOfStrings(env, large_icon_urls)); } MostVisitedSitesBridge::MostVisitedSitesBridge(Profile* profile)
diff --git a/chrome/browser/android/ntp/ntp_snippets_bridge.cc b/chrome/browser/android/ntp/ntp_snippets_bridge.cc index ad10f01d..03e5c0ad 100644 --- a/chrome/browser/android/ntp/ntp_snippets_bridge.cc +++ b/chrome/browser/android/ntp/ntp_snippets_bridge.cc
@@ -140,7 +140,7 @@ if (!info) return base::android::ScopedJavaLocalRef<jobject>(env, nullptr); return Java_SnippetsBridge_createSuggestionsCategoryInfo( - env, ConvertUTF16ToJavaString(env, info->title()).obj(), + env, ConvertUTF16ToJavaString(env, info->title()), static_cast<int>(info->card_layout()), info->has_more_button()); } @@ -163,12 +163,12 @@ Java_SnippetsBridge_createSuggestionList(env); for (const ContentSuggestion& suggestion : suggestions) { Java_SnippetsBridge_addSuggestion( - env, result.obj(), ConvertUTF8ToJavaString(env, suggestion.id()).obj(), - ConvertUTF16ToJavaString(env, suggestion.title()).obj(), - ConvertUTF16ToJavaString(env, suggestion.publisher_name()).obj(), - ConvertUTF16ToJavaString(env, suggestion.snippet_text()).obj(), - ConvertUTF8ToJavaString(env, suggestion.url().spec()).obj(), - ConvertUTF8ToJavaString(env, suggestion.amp_url().spec()).obj(), + env, result, ConvertUTF8ToJavaString(env, suggestion.id()), + ConvertUTF16ToJavaString(env, suggestion.title()), + ConvertUTF16ToJavaString(env, suggestion.publisher_name()), + ConvertUTF16ToJavaString(env, suggestion.snippet_text()), + ConvertUTF8ToJavaString(env, suggestion.url().spec()), + ConvertUTF8ToJavaString(env, suggestion.amp_url().spec()), suggestion.publish_date().ToJavaTime(), suggestion.score(), static_cast<int>(info->card_layout())); } @@ -213,7 +213,7 @@ return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_SnippetsBridge_onNewSuggestions(env, observer_.obj(), + Java_SnippetsBridge_onNewSuggestions(env, observer_, static_cast<int>(category.id())); } @@ -223,7 +223,7 @@ return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_SnippetsBridge_onCategoryStatusChanged(env, observer_.obj(), + Java_SnippetsBridge_onCategoryStatusChanged(env, observer_, static_cast<int>(category.id()), static_cast<int>(new_status)); }
diff --git a/chrome/browser/android/ntp/ntp_snippets_launcher.cc b/chrome/browser/android/ntp/ntp_snippets_launcher.cc index fe278eaf..91eecd9 100644 --- a/chrome/browser/android/ntp/ntp_snippets_launcher.cc +++ b/chrome/browser/android/ntp/ntp_snippets_launcher.cc
@@ -31,7 +31,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); return Java_SnippetsLauncher_schedule( - env, java_launcher_.obj(), period_wifi_charging.InSeconds(), + env, java_launcher_, period_wifi_charging.InSeconds(), period_wifi.InSeconds(), period_fallback.InSeconds(), reschedule_time.ToJavaTime()); } @@ -40,7 +40,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = base::android::AttachCurrentThread(); - return Java_SnippetsLauncher_unschedule(env, java_launcher_.obj()); + return Java_SnippetsLauncher_unschedule(env, java_launcher_); } NTPSnippetsLauncher::NTPSnippetsLauncher() { @@ -55,6 +55,6 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = base::android::AttachCurrentThread(); - Java_SnippetsLauncher_destroy(env, java_launcher_.obj()); + Java_SnippetsLauncher_destroy(env, java_launcher_); java_launcher_.Reset(); }
diff --git a/chrome/browser/android/offline_pages/background_scheduler_bridge.cc b/chrome/browser/android/offline_pages/background_scheduler_bridge.cc index 17243f0..c6af2da 100644 --- a/chrome/browser/android/offline_pages/background_scheduler_bridge.cc +++ b/chrome/browser/android/offline_pages/background_scheduler_bridge.cc
@@ -62,7 +62,7 @@ CreateTriggerConditions(env, trigger_conditions.require_power_connected, trigger_conditions.minimum_battery_percentage, trigger_conditions.require_unmetered_network); - Java_BackgroundSchedulerBridge_schedule(env, j_conditions.obj()); + Java_BackgroundSchedulerBridge_schedule(env, j_conditions); } void BackgroundSchedulerBridge::Unschedule() {
diff --git a/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc b/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc index f18362aa..7bdeaa0 100644 --- a/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc +++ b/chrome/browser/android/offline_pages/downloads/offline_page_download_bridge.cc
@@ -40,9 +40,9 @@ const std::vector<const DownloadUIItem*>& items) { for (const auto item : items) { Java_OfflinePageDownloadBridge_createDownloadItemAndAddToList( - env, j_result_obj, ConvertUTF8ToJavaString(env, item->guid).obj(), - ConvertUTF8ToJavaString(env, item->url.spec()).obj(), - ConvertUTF8ToJavaString(env, item->target_path.value()).obj(), + env, j_result_obj, ConvertUTF8ToJavaString(env, item->guid), + ConvertUTF8ToJavaString(env, item->url.spec()), + ConvertUTF8ToJavaString(env, item->target_path.value()), item->start_time.ToJavaTime(), item->total_bytes); } } @@ -51,9 +51,9 @@ JNIEnv* env, const DownloadUIItem& item) { return Java_OfflinePageDownloadBridge_createDownloadItem( - env, ConvertUTF8ToJavaString(env, item.guid).obj(), - ConvertUTF8ToJavaString(env, item.url.spec()).obj(), - ConvertUTF8ToJavaString(env, item.target_path.value()).obj(), + env, ConvertUTF8ToJavaString(env, item.guid), + ConvertUTF8ToJavaString(env, item.url.spec()), + ConvertUTF8ToJavaString(env, item.target_path.value()), item.start_time.ToJavaTime(), item.total_bytes); } } // namespace @@ -158,7 +158,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_ref_.get(env); if (obj.is_null()) return; - Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj.obj()); + Java_OfflinePageDownloadBridge_downloadItemsLoaded(env, obj); } void OfflinePageDownloadBridge::ItemAdded(const DownloadUIItem& item) { @@ -167,7 +167,7 @@ if (obj.is_null()) return; Java_OfflinePageDownloadBridge_downloadItemAdded( - env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj()); + env, obj, ToJavaOfflinePageDownloadItem(env, item)); } void OfflinePageDownloadBridge::ItemDeleted(const std::string& guid) { @@ -176,7 +176,7 @@ if (obj.is_null()) return; Java_OfflinePageDownloadBridge_downloadItemDeleted( - env, obj.obj(), ConvertUTF8ToJavaString(env, guid).obj()); + env, obj, ConvertUTF8ToJavaString(env, guid)); } void OfflinePageDownloadBridge::ItemUpdated(const DownloadUIItem& item) { @@ -185,7 +185,7 @@ if (obj.is_null()) return; Java_OfflinePageDownloadBridge_downloadItemUpdated( - env, obj.obj(), ToJavaOfflinePageDownloadItem(env, item).obj()); + env, obj, ToJavaOfflinePageDownloadItem(env, item)); } void OfflinePageDownloadBridge::SavePageCallback(
diff --git a/chrome/browser/android/offline_pages/offline_page_bridge.cc b/chrome/browser/android/offline_pages/offline_page_bridge.cc index b5be9a6..f6d72df 100644 --- a/chrome/browser/android/offline_pages/offline_page_bridge.cc +++ b/chrome/browser/android/offline_pages/offline_page_bridge.cc
@@ -50,12 +50,12 @@ for (const OfflinePageItem& offline_page : offline_pages) { Java_OfflinePageBridge_createOfflinePageAndAddToList( env, j_result_obj, - ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), + ConvertUTF8ToJavaString(env, offline_page.url.spec()), offline_page.offline_id, - ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), - ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), - ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), - ConvertUTF8ToJavaString(env, offline_page.file_path.value()).obj(), + ConvertUTF8ToJavaString(env, offline_page.client_id.name_space), + ConvertUTF8ToJavaString(env, offline_page.client_id.id), + ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()), + ConvertUTF8ToJavaString(env, offline_page.file_path.value()), offline_page.file_size, offline_page.creation_time.ToJavaTime(), offline_page.access_count, offline_page.last_access_time.ToJavaTime()); } @@ -65,12 +65,12 @@ JNIEnv* env, const OfflinePageItem& offline_page) { return Java_OfflinePageBridge_createOfflinePageItem( - env, ConvertUTF8ToJavaString(env, offline_page.url.spec()).obj(), + env, ConvertUTF8ToJavaString(env, offline_page.url.spec()), offline_page.offline_id, - ConvertUTF8ToJavaString(env, offline_page.client_id.name_space).obj(), - ConvertUTF8ToJavaString(env, offline_page.client_id.id).obj(), - ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()).obj(), - ConvertUTF8ToJavaString(env, offline_page.file_path.value()).obj(), + ConvertUTF8ToJavaString(env, offline_page.client_id.name_space), + ConvertUTF8ToJavaString(env, offline_page.client_id.id), + ConvertUTF8ToJavaString(env, offline_page.GetOfflineURL().spec()), + ConvertUTF8ToJavaString(env, offline_page.file_path.value()), offline_page.file_size, offline_page.creation_time.ToJavaTime(), offline_page.access_count, offline_page.last_access_time.ToJavaTime()); } @@ -88,8 +88,8 @@ base::android::ToJavaArrayOfStrings(env, offline_pages_vector); DCHECK(j_result_array.obj()); - Java_CheckPagesExistOfflineCallbackInternal_onResult( - env, j_callback_obj.obj(), j_result_array.obj()); + Java_CheckPagesExistOfflineCallbackInternal_onResult(env, j_callback_obj, + j_result_array); } void GetAllPagesCallback( @@ -113,8 +113,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_SavePageCallback_onSavePageDone( - env, j_callback_obj.obj(), static_cast<int>(result), - ConvertUTF8ToJavaString(env, url.spec()).obj(), offline_id); + env, j_callback_obj, static_cast<int>(result), + ConvertUTF8ToJavaString(env, url.spec()), offline_id); } void DeletePageCallback(const ScopedJavaGlobalRef<jobject>& j_callback_obj, @@ -208,7 +208,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); // Native shutdown causes the destruction of |this|. - Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_.obj()); + Java_OfflinePageBridge_offlinePageBridgeDestroyed(env, java_ref_); } void OfflinePageBridge::OfflinePageModelLoaded(OfflinePageModel* model) { @@ -219,14 +219,14 @@ void OfflinePageBridge::OfflinePageModelChanged(OfflinePageModel* model) { DCHECK_EQ(offline_page_model_, model); JNIEnv* env = base::android::AttachCurrentThread(); - Java_OfflinePageBridge_offlinePageModelChanged(env, java_ref_.obj()); + Java_OfflinePageBridge_offlinePageModelChanged(env, java_ref_); } void OfflinePageBridge::OfflinePageDeleted(int64_t offline_id, const ClientId& client_id) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_OfflinePageBridge_offlinePageDeleted( - env, java_ref_.obj(), offline_id, CreateClientId(env, client_id).obj()); + Java_OfflinePageBridge_offlinePageDeleted(env, java_ref_, offline_id, + CreateClientId(env, client_id)); } void OfflinePageBridge::HasPages(JNIEnv* env, @@ -419,7 +419,7 @@ if (!offline_page_model_->is_loaded()) return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_.obj()); + Java_OfflinePageBridge_offlinePageModelLoaded(env, java_ref_); } @@ -427,9 +427,8 @@ JNIEnv* env, const ClientId& client_id) const { return Java_OfflinePageBridge_createClientId( - env, - ConvertUTF8ToJavaString(env, client_id.name_space).obj(), - ConvertUTF8ToJavaString(env, client_id.id).obj()); + env, ConvertUTF8ToJavaString(env, client_id.name_space), + ConvertUTF8ToJavaString(env, client_id.id)); } bool RegisterOfflinePageBridge(JNIEnv* env) {
diff --git a/chrome/browser/android/omnibox/answers_image_bridge.cc b/chrome/browser/android/omnibox/answers_image_bridge.cc index 09a6791..e21164e 100644 --- a/chrome/browser/android/omnibox/answers_image_bridge.cc +++ b/chrome/browser/android/omnibox/answers_image_bridge.cc
@@ -43,7 +43,7 @@ ScopedJavaLocalRef<jobject> java_bitmap = gfx::ConvertToJavaBitmap(&answers_image); Java_AnswersImageObserver_onAnswersImageChanged( - env, java_answers_image_observer_.obj(), java_bitmap.obj()); + env, java_answers_image_observer_, java_bitmap); } private:
diff --git a/chrome/browser/android/omnibox/autocomplete_controller_android.cc b/chrome/browser/android/omnibox/autocomplete_controller_android.cc index 6d49b822..8b195a53 100644 --- a/chrome/browser/android/omnibox/autocomplete_controller_android.cc +++ b/chrome/browser/android/omnibox/autocomplete_controller_android.cc
@@ -290,7 +290,7 @@ ScopedJavaLocalRef<jobject> java_bridge = weak_java_autocomplete_controller_android_.get(env); if (java_bridge.obj()) - Java_AutocompleteController_notifyNativeDestroyed(env, java_bridge.obj()); + Java_AutocompleteController_notifyNativeDestroyed(env, java_bridge); weak_java_autocomplete_controller_android_.reset(); } @@ -385,7 +385,7 @@ ScopedJavaLocalRef<jobject> j_omnibox_suggestion = BuildOmniboxSuggestion(env, autocomplete_result.match_at(i)); Java_AutocompleteController_addOmniboxSuggestionToList( - env, suggestion_list_obj.obj(), j_omnibox_suggestion.obj()); + env, suggestion_list_obj, j_omnibox_suggestion); } // Get the inline-autocomplete text. @@ -399,11 +399,9 @@ ConvertUTF16ToJavaString(env, inline_autocomplete_text); jlong j_autocomplete_result = reinterpret_cast<intptr_t>(&(autocomplete_result)); - Java_AutocompleteController_onSuggestionsReceived(env, - java_bridge.obj(), - suggestion_list_obj.obj(), - inline_text.obj(), - j_autocomplete_result); + Java_AutocompleteController_onSuggestionsReceived( + env, java_bridge, suggestion_list_obj, inline_text, + j_autocomplete_result); } OmniboxEventProto::PageClassification @@ -534,21 +532,13 @@ BookmarkModel* bookmark_model = BookmarkModelFactory::GetForBrowserContext(profile_); return Java_AutocompleteController_buildOmniboxSuggestion( - env, - match.type, - AutocompleteMatch::IsSearchType(match.type), - match.relevance, - match.transition, - jcontents.obj(), - ToJavaIntArray(env, contents_class_offsets).obj(), - ToJavaIntArray(env, contents_class_styles).obj(), - description.obj(), - ToJavaIntArray(env, description_class_offsets).obj(), - ToJavaIntArray(env, description_class_styles).obj(), - answer_contents.obj(), - answer_type.obj(), - fill_into_edit.obj(), - destination_url.obj(), + env, match.type, AutocompleteMatch::IsSearchType(match.type), + match.relevance, match.transition, jcontents, + ToJavaIntArray(env, contents_class_offsets), + ToJavaIntArray(env, contents_class_styles), description, + ToJavaIntArray(env, description_class_offsets), + ToJavaIntArray(env, description_class_styles), answer_contents, + answer_type, fill_into_edit, destination_url, bookmark_model && bookmark_model->IsBookmarked(match.destination_url), match.SupportsDeletion()); }
diff --git a/chrome/browser/android/password_ui_view_android.cc b/chrome/browser/android/password_ui_view_android.cc index 84db6852..49062ad 100644 --- a/chrome/browser/android/password_ui_view_android.cc +++ b/chrome/browser/android/password_ui_view_android.cc
@@ -79,7 +79,7 @@ ScopedJavaLocalRef<jobject> ui_controller = weak_java_ui_controller_.get(env); if (!ui_controller.is_null()) { Java_PasswordUIView_passwordListAvailable( - env, ui_controller.obj(), static_cast<int>(password_list.size())); + env, ui_controller, static_cast<int>(password_list.size())); } } @@ -90,9 +90,7 @@ ScopedJavaLocalRef<jobject> ui_controller = weak_java_ui_controller_.get(env); if (!ui_controller.is_null()) { Java_PasswordUIView_passwordExceptionListAvailable( - env, - ui_controller.obj(), - static_cast<int>(password_exception_list.size())); + env, ui_controller, static_cast<int>(password_exception_list.size())); } } @@ -109,14 +107,13 @@ password_manager_presenter_.GetPassword(index); if (!form) { return Java_PasswordUIView_createSavedPasswordEntry( - env, - ConvertUTF8ToJavaString(env, std::string()).obj(), - ConvertUTF16ToJavaString(env, base::string16()).obj()); + env, ConvertUTF8ToJavaString(env, std::string()), + ConvertUTF16ToJavaString(env, base::string16())); } std::string human_readable_origin = GetDisplayOriginForSettings(*form); return Java_PasswordUIView_createSavedPasswordEntry( - env, ConvertUTF8ToJavaString(env, human_readable_origin).obj(), - ConvertUTF16ToJavaString(env, form->username_value).obj()); + env, ConvertUTF8ToJavaString(env, human_readable_origin), + ConvertUTF16ToJavaString(env, form->username_value)); } ScopedJavaLocalRef<jstring> PasswordUIViewAndroid::GetSavedPasswordException(
diff --git a/chrome/browser/android/precache/precache_launcher.cc b/chrome/browser/android/precache/precache_launcher.cc index dad62cb..681d385 100644 --- a/chrome/browser/android/precache/precache_launcher.cc +++ b/chrome/browser/android/precache/precache_launcher.cc
@@ -77,7 +77,7 @@ void PrecacheLauncher::OnPrecacheCompleted(bool try_again_soon) { JNIEnv* env = AttachCurrentThread(); Java_PrecacheLauncher_onPrecacheCompletedCallback( - env, weak_java_precache_launcher_.get(env).obj(), + env, weak_java_precache_launcher_.get(env), try_again_soon ? JNI_TRUE : JNI_FALSE); }
diff --git a/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc b/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc index 3a9dca4..5c3e7e5 100644 --- a/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc +++ b/chrome/browser/android/preferences/autofill/autofill_profile_bridge.cc
@@ -67,11 +67,9 @@ } Java_AutofillProfileBridge_stringArrayToList( - env, ToJavaArrayOfStrings(env, known_country_codes).obj(), - j_country_code_list); + env, ToJavaArrayOfStrings(env, known_country_codes), j_country_code_list); Java_AutofillProfileBridge_stringArrayToList( - env, ToJavaArrayOfStrings(env, known_country_names).obj(), - j_country_name_list); + env, ToJavaArrayOfStrings(env, known_country_names), j_country_name_list); } static void GetRequiredFields( @@ -91,8 +89,8 @@ } } - Java_AutofillProfileBridge_intArrayToList( - env, ToJavaIntArray(env, required).obj(), j_required_fields_list); + Java_AutofillProfileBridge_intArrayToList(env, ToJavaIntArray(env, required), + j_required_fields_list); } static ScopedJavaLocalRef<jstring> GetAddressUiComponents( @@ -134,13 +132,13 @@ } Java_AutofillProfileBridge_intArrayToList( - env, ToJavaIntArray(env, component_ids).obj(), j_id_list); + env, ToJavaIntArray(env, component_ids), j_id_list); Java_AutofillProfileBridge_stringArrayToList( - env, ToJavaArrayOfStrings(env, component_labels).obj(), j_name_list); + env, ToJavaArrayOfStrings(env, component_labels), j_name_list); Java_AutofillProfileBridge_intArrayToList( - env, ToJavaIntArray(env, component_required).obj(), j_required_list); + env, ToJavaIntArray(env, component_required), j_required_list); Java_AutofillProfileBridge_intArrayToList( - env, ToJavaIntArray(env, component_length).obj(), j_length_list); + env, ToJavaIntArray(env, component_length), j_length_list); return ConvertUTF8ToJavaString(env, best_language_tag); }
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc index c83f95d..0a56020 100644 --- a/chrome/browser/android/preferences/pref_service_bridge.cc +++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -194,12 +194,9 @@ static_cast<ContentSettingsType>(content_settings_type), "", &entries); for (size_t i = 0; i < entries.size(); ++i) { Java_PrefServiceBridge_addContentSettingExceptionToList( - env, list, - content_settings_type, - ConvertUTF8ToJavaString( - env, entries[i].primary_pattern.ToString()).obj(), - entries[i].setting, - ConvertUTF8ToJavaString(env, entries[i].source).obj()); + env, list, content_settings_type, + ConvertUTF8ToJavaString(env, entries[i].primary_pattern.ToString()), + entries[i].setting, ConvertUTF8ToJavaString(env, entries[i].source)); } } @@ -513,19 +510,28 @@ namespace { -// Redirects a BrowsingDataRemover completion callback back into Java. +// Merges |task_count| BrowsingDataRemover completion callbacks and redirects +// them back into Java. class ClearBrowsingDataObserver : public BrowsingDataRemover::Observer { public: // |obj| is expected to be the object passed into ClearBrowsingData(); e.g. a // ChromePreference. ClearBrowsingDataObserver(JNIEnv* env, jobject obj, - BrowsingDataRemover* browsing_data_remover) - : weak_chrome_native_preferences_(env, obj), observer_(this) { + BrowsingDataRemover* browsing_data_remover, + int task_count) + : task_count_(task_count), + weak_chrome_native_preferences_(env, obj), + observer_(this) { + DCHECK_GT(task_count, 0); observer_.Add(browsing_data_remover); } void OnBrowsingDataRemoverDone() override { + DCHECK(task_count_); + if (--task_count_) + return; + // We delete ourselves when done. std::unique_ptr<ClearBrowsingDataObserver> auto_delete(this); @@ -534,10 +540,11 @@ return; Java_PrefServiceBridge_browsingDataCleared( - env, weak_chrome_native_preferences_.get(env).obj()); + env, weak_chrome_native_preferences_.get(env)); } private: + int task_count_; JavaObjectWeakGlobalRef weak_chrome_native_preferences_; ScopedObserver<BrowsingDataRemover, BrowsingDataRemover::Observer> observer_; }; @@ -637,8 +644,8 @@ } } std::vector<std::string> excluding_domains; - base::android::AppendJavaStringArrayToStringVector( - env, jexcluding_domains.obj(), &excluding_domains); + base::android::AppendJavaStringArrayToStringVector(env, jexcluding_domains, + &excluding_domains); std::unique_ptr<RegistrableDomainFilterBuilder> filter_builder( new RegistrableDomainFilterBuilder(BrowsingDataFilterBuilder::BLACKLIST)); for (const std::string& domain : excluding_domains) { @@ -650,16 +657,38 @@ excluding_domains); } - // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is - // done. - ClearBrowsingDataObserver* observer = - new ClearBrowsingDataObserver(env, obj, browsing_data_remover); + // Delete the filterable types with a filter, and the rest completely. + // TODO(msramek): This is only necessary until the filter is implemented in + // all data storage backends. + int filterable_mask = remove_mask & BrowsingDataRemover::FILTERABLE_DATATYPES; + int nonfilterable_mask = + remove_mask & ~BrowsingDataRemover::FILTERABLE_DATATYPES; - browsing_data_remover->RemoveWithFilterAndReply( - BrowsingDataRemover::Period( - static_cast<browsing_data::TimePeriod>(time_period)), - remove_mask, BrowsingDataHelper::UNPROTECTED_WEB, - std::move(filter_builder), observer); + // ClearBrowsingDataObserver deletes itself when |browsing_data_remover| is + // done with both removal tasks. + ClearBrowsingDataObserver* observer = new ClearBrowsingDataObserver( + env, obj, browsing_data_remover, 2 /* tasks_count */); + + if (filterable_mask) { + browsing_data_remover->RemoveWithFilterAndReply( + BrowsingDataRemover::Period( + static_cast<browsing_data::TimePeriod>(time_period)), + filterable_mask, BrowsingDataHelper::UNPROTECTED_WEB, + std::move(filter_builder), observer); + } else { + // Make sure |observer| doesn't wait for the filtered task. + observer->OnBrowsingDataRemoverDone(); + } + + if (nonfilterable_mask) { + browsing_data_remover->RemoveAndReply( + BrowsingDataRemover::Period( + static_cast<browsing_data::TimePeriod>(time_period)), + nonfilterable_mask, BrowsingDataHelper::UNPROTECTED_WEB, observer); + } else { + // Make sure |observer| doesn't wait for the non-filtered task. + observer->OnBrowsingDataRemoverDone(); + } } static jboolean CanDeleteBrowsingHistory(JNIEnv* env, @@ -687,7 +716,7 @@ base::android::ToJavaArrayOfStrings(env, important_domains); Java_ImportantSitesCallback_onImportantRegisterableDomainsReady( - env, java_callback.obj(), java_domains.obj(), java_origins.obj()); + env, java_callback, java_domains, java_origins); } // This value should not change during a sessions, as it's used for UMA metrics. @@ -1057,8 +1086,8 @@ application.append(version_info::GetVersionNumber()); return Java_PrefServiceBridge_createAboutVersionStrings( - env, ConvertUTF8ToJavaString(env, application).obj(), - ConvertUTF8ToJavaString(env, os_version).obj()); + env, ConvertUTF8ToJavaString(env, application), + ConvertUTF8ToJavaString(env, os_version)); } static ScopedJavaLocalRef<jstring> GetSupervisedUserCustodianName(
diff --git a/chrome/browser/android/preferences/website_preference_bridge.cc b/chrome/browser/android/preferences/website_preference_bridge.cc index db33672..9af686b3 100644 --- a/chrome/browser/android/preferences/website_preference_bridge.cc +++ b/chrome/browser/android/preferences/website_preference_bridge.cc
@@ -135,7 +135,7 @@ if (embedder != origin) jembedder = ConvertUTF8ToJavaString(env, embedder); - insertionFunc(env, list, jorigin.obj(), jembedder.obj()); + insertionFunc(env, list, jorigin, jembedder); } } @@ -479,8 +479,7 @@ ConvertUTF8ToJavaString(env, serialized); Java_WebsitePreferenceBridge_insertUsbInfoIntoList( - env, list, jorigin.obj(), jembedder.obj(), jname.obj(), - jserialized.obj()); + env, list, jorigin, jembedder, jname, jserialized); } } @@ -620,8 +619,8 @@ ScopedJavaLocalRef<jstring> host = ConvertUTF8ToJavaString(env_, i->host); - Java_WebsitePreferenceBridge_insertStorageInfoIntoList( - env_, list.obj(), host.obj(), i->type, i->usage); + Java_WebsitePreferenceBridge_insertStorageInfoIntoList(env_, list, host, + i->type, i->usage); } base::android::RunCallbackAndroid(java_callback_, list); @@ -643,8 +642,7 @@ void OnStorageInfoCleared(storage::QuotaStatusCode code) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - Java_StorageInfoClearedCallback_onStorageInfoCleared( - env_, java_callback_.obj()); + Java_StorageInfoClearedCallback_onStorageInfoCleared(env_, java_callback_); delete this; } @@ -699,7 +697,7 @@ ScopedJavaLocalRef<jstring> origin = ConvertUTF8ToJavaString(env_, origin_str); Java_WebsitePreferenceBridge_insertLocalStorageInfoIntoMap( - env_, map.obj(), origin.obj(), full_origin.obj(), i->size, important); + env_, map, origin, full_origin, i->size, important); } base::android::RunCallbackAndroid(java_callback_, map);
diff --git a/chrome/browser/android/profiles/profile_downloader_android.cc b/chrome/browser/android/profiles/profile_downloader_android.cc index 399b8f4..6df4612f 100644 --- a/chrome/browser/android/profiles/profile_downloader_android.cc +++ b/chrome/browser/android/profiles/profile_downloader_android.cc
@@ -88,11 +88,9 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_ProfileDownloader_onProfileDownloadSuccess( - env, - base::android::ConvertUTF8ToJavaString(env, email_).obj(), - base::android::ConvertUTF16ToJavaString(env, full_name).obj(), - base::android::ConvertUTF16ToJavaString(env, given_name).obj(), - jbitmap.obj()); + env, base::android::ConvertUTF8ToJavaString(env, email_), + base::android::ConvertUTF16ToJavaString(env, full_name), + base::android::ConvertUTF16ToJavaString(env, given_name), jbitmap); Shutdown(); }
diff --git a/chrome/browser/android/provider/chrome_browser_provider.cc b/chrome/browser/android/provider/chrome_browser_provider.cc index e1cda59..8cb67d5 100644 --- a/chrome/browser/android/provider/chrome_browser_provider.cc +++ b/chrome/browser/android/provider/chrome_browser_provider.cc
@@ -1176,7 +1176,7 @@ if (obj.is_null()) return; - Java_ChromeBrowserProvider_onBookmarkChanged(env, obj.obj()); + Java_ChromeBrowserProvider_onBookmarkChanged(env, obj); } void ChromeBrowserProvider::OnHistoryChanged() { @@ -1184,7 +1184,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (obj.is_null()) return; - Java_ChromeBrowserProvider_onHistoryChanged(env, obj.obj()); + Java_ChromeBrowserProvider_onHistoryChanged(env, obj); } void ChromeBrowserProvider::OnURLVisited( @@ -1214,7 +1214,7 @@ ScopedJavaLocalRef<jobject> obj = weak_java_provider_.get(env); if (obj.is_null()) return; - Java_ChromeBrowserProvider_onSearchTermChanged(env, obj.obj()); + Java_ChromeBrowserProvider_onSearchTermChanged(env, obj); } void ChromeBrowserProvider::OnKeywordSearchTermDeleted(
diff --git a/chrome/browser/android/recently_closed_tabs_bridge.cc b/chrome/browser/android/recently_closed_tabs_bridge.cc index 121bd16..5812266 100644 --- a/chrome/browser/android/recently_closed_tabs_bridge.cc +++ b/chrome/browser/android/recently_closed_tabs_bridge.cc
@@ -31,9 +31,8 @@ tab.navigations.at(tab.current_navigation_index); Java_RecentlyClosedBridge_pushTab( env, jtabs_list, tab.id, - ConvertUTF16ToJavaString(env, current_navigation.title()).obj(), - ConvertUTF8ToJavaString(env, current_navigation.virtual_url().spec()) - .obj()); + ConvertUTF16ToJavaString(env, current_navigation.title()), + ConvertUTF8ToJavaString(env, current_navigation.virtual_url().spec())); } void AddTabsToList(JNIEnv* env, @@ -156,7 +155,7 @@ if (callback_.is_null()) return; JNIEnv* env = AttachCurrentThread(); - Java_RecentlyClosedCallback_onUpdated(env, callback_.obj()); + Java_RecentlyClosedCallback_onUpdated(env, callback_); } void RecentlyClosedTabsBridge::TabRestoreServiceDestroyed(
diff --git a/chrome/browser/android/safe_browsing/safe_browsing_api_handler_bridge.cc b/chrome/browser/android/safe_browsing/safe_browsing_api_handler_bridge.cc index db19ef2..679521b0 100644 --- a/chrome/browser/android/safe_browsing/safe_browsing_api_handler_bridge.cc +++ b/chrome/browser/android/safe_browsing/safe_browsing_api_handler_bridge.cc
@@ -192,9 +192,8 @@ ScopedJavaLocalRef<jintArray> j_threat_types = SBThreatTypesToJavaArray(env, local_threat_types); - Java_SafeBrowsingApiBridge_startUriLookup(env, j_api_handler_.obj(), - callback_id, j_url.obj(), - j_threat_types.obj()); + Java_SafeBrowsingApiBridge_startUriLookup(env, j_api_handler_, callback_id, + j_url, j_threat_types); } } // namespace safe_browsing
diff --git a/chrome/browser/android/service_tab_launcher.cc b/chrome/browser/android/service_tab_launcher.cc index d8f219b..02ae62c 100644 --- a/chrome/browser/android/service_tab_launcher.cc +++ b/chrome/browser/android/service_tab_launcher.cc
@@ -64,16 +64,10 @@ new TabLaunchedCallback(callback)); DCHECK_GE(request_id, 1); - Java_ServiceTabLauncher_launchTab(env, - GetApplicationContext(), - request_id, - browser_context->IsOffTheRecord(), - url.obj(), - disposition, - referrer_url.obj(), - params.referrer.policy, - headers.obj(), - post_data.obj()); + Java_ServiceTabLauncher_launchTab(env, GetApplicationContext(), request_id, + browser_context->IsOffTheRecord(), url, + disposition, referrer_url, + params.referrer.policy, headers, post_data); } void ServiceTabLauncher::OnTabLaunched(int request_id,
diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc index 26000d2..6ac62f1db 100644 --- a/chrome/browser/android/shortcut_helper.cc +++ b/chrome/browser/android/shortcut_helper.cc
@@ -127,22 +127,11 @@ uintptr_t callback_pointer = reinterpret_cast<uintptr_t>(new base::Closure(splash_image_callback)); - Java_ShortcutHelper_addWebapp( - env, - java_webapp_id.obj(), - java_url.obj(), - java_scope_url.obj(), - java_user_title.obj(), - java_name.obj(), - java_short_name.obj(), - java_icon_url.obj(), - java_bitmap.obj(), - info.display, - info.orientation, - info.source, - info.theme_color, - info.background_color, - callback_pointer); + Java_ShortcutHelper_addWebapp(env, java_webapp_id, java_url, java_scope_url, + java_user_title, java_name, java_short_name, + java_icon_url, java_bitmap, info.display, + info.orientation, info.source, info.theme_color, + info.background_color, callback_pointer); } void ShortcutHelper::AddShortcutWithSkBitmap( @@ -157,8 +146,8 @@ if (icon_bitmap.getSize()) java_bitmap = gfx::ConvertToJavaBitmap(&icon_bitmap); - Java_ShortcutHelper_addShortcut(env, java_url.obj(), java_user_title.obj(), - java_bitmap.obj(), info.source); + Java_ShortcutHelper_addShortcut(env, java_url, java_user_title, java_bitmap, + info.source); } void ShortcutHelper::OnBuiltWebApk(bool success) { @@ -223,10 +212,8 @@ ScopedJavaLocalRef<jobject> java_splash_image = gfx::ConvertToJavaBitmap(&splash_image); - Java_ShortcutHelper_storeWebappSplashImage( - env, - java_webapp_id.obj(), - java_splash_image.obj()); + Java_ShortcutHelper_storeWebappSplashImage(env, java_webapp_id, + java_splash_image); } // static @@ -245,8 +232,8 @@ bitmap.height())) { ScopedJavaLocalRef<jobject> java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); - result = Java_ShortcutHelper_createHomeScreenIconFromWebIcon( - env, java_bitmap.obj()); + result = + Java_ShortcutHelper_createHomeScreenIconFromWebIcon(env, java_bitmap); } } @@ -261,7 +248,7 @@ *is_generated = true; result = Java_ShortcutHelper_generateHomeScreenIcon( - env, java_url.obj(), SkColorGetR(mean_color), SkColorGetG(mean_color), + env, java_url, SkColorGetR(mean_color), SkColorGetG(mean_color), SkColorGetB(mean_color)); } @@ -275,7 +262,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> java_url = base::android::ConvertUTF8ToJavaString(env, url.spec()); - return Java_ShortcutHelper_isWebApkInstalled(env, java_url.obj()); + return Java_ShortcutHelper_isWebApkInstalled(env, java_url); } GURL ShortcutHelper::GetScopeFromURL(const GURL& url) { @@ -283,7 +270,7 @@ ScopedJavaLocalRef<jstring> java_url = base::android::ConvertUTF8ToJavaString(env, url.spec()); ScopedJavaLocalRef<jstring> java_scope_url = - Java_ShortcutHelper_getScopeFromUrl(env, java_url.obj()); + Java_ShortcutHelper_getScopeFromUrl(env, java_url); return GURL(base::android::ConvertJavaStringToUTF16(env, java_scope_url)); }
diff --git a/chrome/browser/android/signin/account_management_screen_helper.cc b/chrome/browser/android/signin/account_management_screen_helper.cc index 512d18a..77c24c4 100644 --- a/chrome/browser/android/signin/account_management_screen_helper.cc +++ b/chrome/browser/android/signin/account_management_screen_helper.cc
@@ -24,7 +24,7 @@ Java_AccountManagementScreenHelper_openAccountManagementScreen( base::android::AttachCurrentThread(), base::android::GetApplicationContext(), - ProfileAndroid::FromProfile(profile)->GetJavaObject().obj(), + ProfileAndroid::FromProfile(profile)->GetJavaObject(), static_cast<int>(service_type)); }
diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc index bfeaaaa8..757cbf78a 100644 --- a/chrome/browser/android/signin/signin_manager_android.cc +++ b/chrome/browser/android/signin/signin_manager_android.cc
@@ -141,8 +141,7 @@ // This shouldn't be called when ShouldLoadPolicyForUser() is false, or when // CheckPolicyBeforeSignIn() failed. NOTREACHED(); - Java_SigninManager_onPolicyFetchedBeforeSignIn(env, - java_signin_manager_.obj()); + Java_SigninManager_onPolicyFetchedBeforeSignIn(env, java_signin_manager_); } void SigninManagerAndroid::AbortSignIn( @@ -217,15 +216,13 @@ username_.clear(); } - Java_SigninManager_onPolicyCheckedBeforeSignIn(env, - java_signin_manager_.obj(), - domain.obj()); + Java_SigninManager_onPolicyCheckedBeforeSignIn(env, java_signin_manager_, + domain); } void SigninManagerAndroid::OnPolicyFetchDone(bool success) { Java_SigninManager_onPolicyFetchedBeforeSignIn( - base::android::AttachCurrentThread(), - java_signin_manager_.obj()); + base::android::AttachCurrentThread(), java_signin_manager_); } void SigninManagerAndroid::OnBrowsingDataRemoverDone( @@ -238,8 +235,7 @@ ClearLastSignedInUser(); Java_SigninManager_onProfileDataWiped(base::android::AttachCurrentThread(), - java_signin_manager_.obj(), - callback.obj()); + java_signin_manager_, callback); } void SigninManagerAndroid::ClearLastSignedInUser( @@ -290,12 +286,12 @@ const std::string& username) { DCHECK(thread_checker_.CalledOnValidThread()); Java_SigninManager_onNativeSignOut(base::android::AttachCurrentThread(), - java_signin_manager_.obj()); + java_signin_manager_); } void SigninManagerAndroid::OnSigninAllowedPrefChanged() { Java_SigninManager_onSigninAllowedByPolicyChanged( - base::android::AttachCurrentThread(), java_signin_manager_.obj(), + base::android::AttachCurrentThread(), java_signin_manager_, SigninManagerFactory::GetForProfile(profile_)->IsSigninAllowed()); }
diff --git a/chrome/browser/android/signin/signin_promo_util_android.cc b/chrome/browser/android/signin/signin_promo_util_android.cc index a6d6d10..9aca04b 100644 --- a/chrome/browser/android/signin/signin_promo_util_android.cc +++ b/chrome/browser/android/signin/signin_promo_util_android.cc
@@ -19,7 +19,7 @@ if (content_view_core && content_view_core->GetWindowAndroid()) { Java_SigninPromoUtil_openAccountSigninActivityForPromo( base::android::AttachCurrentThread(), - content_view_core->GetWindowAndroid()->GetJavaObject().obj(), + content_view_core->GetWindowAndroid()->GetJavaObject(), jint(access_point)); } }
diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_android.cc index 13b4109b..8ea0ba73 100644 --- a/chrome/browser/android/tab_android.cc +++ b/chrome/browser/android/tab_android.cc
@@ -135,7 +135,7 @@ TabAndroid::~TabAndroid() { GetContentLayer()->RemoveAllChildren(); JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_clearNativePtr(env, weak_java_tab_.get(env).obj()); + Java_Tab_clearNativePtr(env, weak_java_tab_.get(env)); } base::android::ScopedJavaLocalRef<jobject> TabAndroid::GetJavaObject() { @@ -149,29 +149,29 @@ int TabAndroid::GetAndroidId() const { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_Tab_getId(env, weak_java_tab_.get(env).obj()); + return Java_Tab_getId(env, weak_java_tab_.get(env)); } int TabAndroid::GetSyncId() const { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_Tab_getSyncId(env, weak_java_tab_.get(env).obj()); + return Java_Tab_getSyncId(env, weak_java_tab_.get(env)); } base::string16 TabAndroid::GetTitle() const { JNIEnv* env = base::android::AttachCurrentThread(); return base::android::ConvertJavaStringToUTF16( - Java_Tab_getTitle(env, weak_java_tab_.get(env).obj())); + Java_Tab_getTitle(env, weak_java_tab_.get(env))); } GURL TabAndroid::GetURL() const { JNIEnv* env = base::android::AttachCurrentThread(); return GURL(base::android::ConvertJavaStringToUTF8( - Java_Tab_getUrl(env, weak_java_tab_.get(env).obj()))); + Java_Tab_getUrl(env, weak_java_tab_.get(env)))); } bool TabAndroid::LoadIfNeeded() { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_Tab_loadIfNeeded(env, weak_java_tab_.get(env).obj()); + return Java_Tab_loadIfNeeded(env, weak_java_tab_.get(env)); } Profile* TabAndroid::GetProfile() const { @@ -198,7 +198,7 @@ void TabAndroid::SetSyncId(int sync_id) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_setSyncId(env, weak_java_tab_.get(env).obj(), sync_id); + Java_Tab_setSyncId(env, weak_java_tab_.get(env), sync_id); } void TabAndroid::HandlePopupNavigation(chrome::NavigateParams* params) { @@ -222,12 +222,7 @@ ScopedJavaLocalRef<jobject> jpost_data; if (params->uses_post && params->post_data) jpost_data = params->post_data->ToJavaObject(env); - Java_Tab_openNewTab(env, - jobj.obj(), - jurl.obj(), - jheaders.obj(), - jpost_data.obj(), - disposition, + Java_Tab_openNewTab(env, jobj, jurl, jheaders, jpost_data, disposition, params->created_with_opener, params->is_renderer_initiated); } else { @@ -259,12 +254,9 @@ bool did_start_load, bool did_finish_load) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_swapWebContents( - env, - weak_java_tab_.get(env).obj(), - new_contents->GetJavaWebContents().obj(), - did_start_load, - did_finish_load); + Java_Tab_swapWebContents(env, weak_java_tab_.get(env), + new_contents->GetJavaWebContents(), did_start_load, + did_finish_load); } void TabAndroid::DefaultSearchProviderChanged( @@ -303,8 +295,7 @@ return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_onWebContentsInstantSupportDisabled(env, - weak_java_tab_.get(env).obj()); + Java_Tab_onWebContentsInstantSupportDisabled(env, weak_java_tab_.get(env)); } void TabAndroid::Observe(int type, @@ -333,7 +324,7 @@ break; } case content::NOTIFICATION_NAV_ENTRY_CHANGED: - Java_Tab_onNavEntryChanged(env, weak_java_tab_.get(env).obj()); + Java_Tab_onNavEntryChanged(env, weak_java_tab_.get(env)); break; default: NOTREACHED() << "Unexpected notification " << type; @@ -356,8 +347,8 @@ return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_onFaviconAvailable(env, weak_java_tab_.get(env).obj(), - gfx::ConvertToJavaBitmap(&favicon).obj()); + Java_Tab_onFaviconAvailable(env, weak_java_tab_.get(env), + gfx::ConvertToJavaBitmap(&favicon)); } void TabAndroid::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { @@ -641,7 +632,7 @@ void TabAndroid::SetPendingPrint() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_setPendingPrint(env, weak_java_tab_.get(env).obj()); + Java_Tab_setPendingPrint(env, weak_java_tab_.get(env)); } ScopedJavaLocalRef<jobject> TabAndroid::GetFavicon( @@ -774,13 +765,12 @@ void TabAndroid::ShowOfflinePages() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_showOfflinePages(env, weak_java_tab_.get(env).obj()); + Java_Tab_showOfflinePages(env, weak_java_tab_.get(env)); } void TabAndroid::OnLoFiResponseReceived(bool is_preview) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_Tab_onLoFiResponseReceived(env, weak_java_tab_.get(env).obj(), - is_preview); + Java_Tab_onLoFiResponseReceived(env, weak_java_tab_.get(env), is_preview); } jboolean TabAndroid::IsOfflinePage(JNIEnv* env,
diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrome/browser/android/tab_web_contents_delegate_android.cc index d27dd7b..41507a3 100644 --- a/chrome/browser/android/tab_web_contents_delegate_android.cc +++ b/chrome/browser/android/tab_web_contents_delegate_android.cc
@@ -182,8 +182,7 @@ return blink::WebDisplayModeUndefined; return static_cast<blink::WebDisplayMode>( - Java_TabWebContentsDelegateAndroid_getDisplayMode( - env, obj.obj())); + Java_TabWebContentsDelegateAndroid_getDisplayMode(env, obj)); } void TabWebContentsDelegateAndroid::FindReply( @@ -223,16 +222,11 @@ // Create the details object. ScopedJavaLocalRef<jobject> details_object = Java_TabWebContentsDelegateAndroid_createFindNotificationDetails( - env, - find_result->number_of_matches(), - selection_rect.obj(), - find_result->active_match_ordinal(), - find_result->final_update()); + env, find_result->number_of_matches(), selection_rect, + find_result->active_match_ordinal(), find_result->final_update()); - Java_TabWebContentsDelegateAndroid_onFindResultAvailable( - env, - obj.obj(), - details_object.obj()); + Java_TabWebContentsDelegateAndroid_onFindResultAvailable(env, obj, + details_object); } void TabWebContentsDelegateAndroid::FindMatchRectsReply( @@ -248,24 +242,16 @@ // Create the details object. ScopedJavaLocalRef<jobject> details_object = Java_TabWebContentsDelegateAndroid_createFindMatchRectsDetails( - env, - version, - rects.size(), - CreateJavaRectF(env, active_rect).obj()); + env, version, rects.size(), CreateJavaRectF(env, active_rect)); // Add the rects for (size_t i = 0; i < rects.size(); ++i) { - Java_TabWebContentsDelegateAndroid_setMatchRectByIndex( - env, - details_object.obj(), - i, - CreateJavaRectF(env, rects[i]).obj()); + Java_TabWebContentsDelegateAndroid_setMatchRectByIndex( + env, details_object, i, CreateJavaRectF(env, rects[i])); } - Java_TabWebContentsDelegateAndroid_onFindMatchRectsAvailable( - env, - obj.obj(), - details_object.obj()); + Java_TabWebContentsDelegateAndroid_onFindMatchRectsAvailable(env, obj, + details_object); } content::JavaScriptDialogManager* @@ -372,8 +358,7 @@ return true; return Java_TabWebContentsDelegateAndroid_shouldResumeRequestsForCreatedWindow( - env, - obj.obj()); + env, obj); } void TabWebContentsDelegateAndroid::AddNewContents( @@ -402,13 +387,8 @@ jnew_contents = new_contents->GetJavaWebContents(); handled = Java_TabWebContentsDelegateAndroid_addNewContents( - env, - obj.obj(), - jsource.obj(), - jnew_contents.obj(), - static_cast<jint>(disposition), - nullptr, - user_gesture); + env, obj, jsource, jnew_contents, static_cast<jint>(disposition), + nullptr, user_gesture); } if (was_blocked)
diff --git a/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc b/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc index cb82d2b..af49eaa 100644 --- a/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc +++ b/chrome/browser/android/webapk/manifest_upgrade_detector_fetcher.cc
@@ -127,13 +127,6 @@ base::android::ConvertUTF16ToJavaString(env, info.short_name); Java_ManifestUpgradeDetectorFetcher_onDataAvailable( - env, java_ref_.obj(), - java_url.obj(), - java_scope.obj(), - java_name.obj(), - java_short_name.obj(), - info.display, - info.orientation, - info.theme_color, - info.background_color); + env, java_ref_, java_url, java_scope, java_name, java_short_name, + info.display, info.orientation, info.theme_color, info.background_color); }
diff --git a/chrome/browser/android/webapk/webapk_installer.cc b/chrome/browser/android/webapk/webapk_installer.cc index 19affd8..783397b 100644 --- a/chrome/browser/android/webapk/webapk_installer.cc +++ b/chrome/browser/android/webapk/webapk_installer.cc
@@ -141,8 +141,8 @@ JNIEnv* env, const base::android::ScopedJavaLocalRef<jstring>& java_file_path, const base::android::ScopedJavaLocalRef<jstring>& java_package_name) { - return Java_WebApkInstaller_installAsyncFromNative(env, java_file_path.obj(), - java_package_name.obj()); + return Java_WebApkInstaller_installAsyncFromNative(env, java_file_path, + java_package_name); } void WebApkInstaller::OnURLFetchComplete(const net::URLFetcher* source) {
diff --git a/chrome/browser/android/webapps/add_to_homescreen_dialog_helper.cc b/chrome/browser/android/webapps/add_to_homescreen_dialog_helper.cc index 465ec4c..d412295 100644 --- a/chrome/browser/android/webapps/add_to_homescreen_dialog_helper.cc +++ b/chrome/browser/android/webapps/add_to_homescreen_dialog_helper.cc
@@ -54,9 +54,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_user_title = base::android::ConvertUTF16ToJavaString(env, user_title); - Java_AddToHomescreenDialogHelper_onUserTitleAvailable(env, - java_ref_.obj(), - j_user_title.obj()); + Java_AddToHomescreenDialogHelper_onUserTitleAvailable(env, java_ref_, + j_user_title); } void AddToHomescreenDialogHelper::OnDataAvailable(const ShortcutInfo& info, @@ -66,9 +65,7 @@ if (icon.getSize()) java_bitmap = gfx::ConvertToJavaBitmap(&icon); - Java_AddToHomescreenDialogHelper_onIconAvailable(env, - java_ref_.obj(), - java_bitmap.obj()); + Java_AddToHomescreenDialogHelper_onIconAvailable(env, java_ref_, java_bitmap); if (add_shortcut_pending_) AddShortcut(info, icon);
diff --git a/chrome/browser/android/webapps/webapp_registry.cc b/chrome/browser/android/webapps/webapp_registry.cc index df3fb330..d987119 100644 --- a/chrome/browser/android/webapps/webapp_registry.cc +++ b/chrome/browser/android/webapps/webapp_registry.cc
@@ -31,9 +31,7 @@ UrlFilterBridge* filter_bridge = new UrlFilterBridge(url_filter); Java_WebappRegistry_unregisterWebappsForUrls( - env, - base::android::GetApplicationContext(), - filter_bridge->j_bridge().obj(), + env, base::android::GetApplicationContext(), filter_bridge->j_bridge(), callback_pointer); }
diff --git a/chrome/browser/autofill/android/personal_data_manager_android.cc b/chrome/browser/autofill/android/personal_data_manager_android.cc index 6b70e25c..156ead71 100644 --- a/chrome/browser/autofill/android/personal_data_manager_android.cc +++ b/chrome/browser/autofill/android/personal_data_manager_android.cc
@@ -62,30 +62,27 @@ JNIEnv* env, const AutofillProfile& profile) { return Java_AutofillProfile_create( - env, ConvertUTF8ToJavaString(env, profile.guid()).obj(), - ConvertUTF8ToJavaString(env, profile.origin()).obj(), + env, ConvertUTF8ToJavaString(env, profile.guid()), + ConvertUTF8ToJavaString(env, profile.origin()), profile.record_type() == AutofillProfile::LOCAL_PROFILE, - ConvertUTF16ToJavaString(env, profile.GetInfo( - AutofillType(NAME_FULL), - g_browser_process->GetApplicationLocale())).obj(), - ConvertUTF16ToJavaString(env, profile.GetRawInfo(COMPANY_NAME)).obj(), ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)).obj(), + env, profile.GetInfo(AutofillType(NAME_FULL), + g_browser_process->GetApplicationLocale())), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(COMPANY_NAME)), + ConvertUTF16ToJavaString(env, + profile.GetRawInfo(ADDRESS_HOME_STREET_ADDRESS)), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(ADDRESS_HOME_STATE)), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(ADDRESS_HOME_CITY)), ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_STATE)).obj(), - ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_CITY)).obj(), - ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)).obj(), - ConvertUTF16ToJavaString(env, profile.GetRawInfo(ADDRESS_HOME_ZIP)).obj(), - ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)).obj(), - ConvertUTF16ToJavaString( - env, profile.GetRawInfo(ADDRESS_HOME_COUNTRY)).obj(), - ConvertUTF16ToJavaString( - env, profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)).obj(), - ConvertUTF16ToJavaString(env, profile.GetRawInfo(EMAIL_ADDRESS)).obj(), - ConvertUTF8ToJavaString(env, profile.language_code()).obj()); + env, profile.GetRawInfo(ADDRESS_HOME_DEPENDENT_LOCALITY)), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(ADDRESS_HOME_ZIP)), + ConvertUTF16ToJavaString(env, + profile.GetRawInfo(ADDRESS_HOME_SORTING_CODE)), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(ADDRESS_HOME_COUNTRY)), + ConvertUTF16ToJavaString(env, + profile.GetRawInfo(PHONE_HOME_WHOLE_NUMBER)), + ConvertUTF16ToJavaString(env, profile.GetRawInfo(EMAIL_ADDRESS)), + ConvertUTF8ToJavaString(env, profile.language_code())); } void MaybeSetRawInfo(AutofillProfile* profile, @@ -100,41 +97,38 @@ JNIEnv* env, AutofillProfile* profile) { profile->set_origin( - ConvertJavaStringToUTF8( - Java_AutofillProfile_getOrigin(env, jprofile.obj()))); - profile->SetInfo(AutofillType(NAME_FULL), - ConvertJavaStringToUTF16( - Java_AutofillProfile_getFullName(env, jprofile.obj())), - g_browser_process->GetApplicationLocale()); + ConvertJavaStringToUTF8(Java_AutofillProfile_getOrigin(env, jprofile))); + profile->SetInfo( + AutofillType(NAME_FULL), + ConvertJavaStringToUTF16(Java_AutofillProfile_getFullName(env, jprofile)), + g_browser_process->GetApplicationLocale()); MaybeSetRawInfo(profile, autofill::COMPANY_NAME, - Java_AutofillProfile_getCompanyName(env, jprofile.obj())); + Java_AutofillProfile_getCompanyName(env, jprofile)); MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_STREET_ADDRESS, - Java_AutofillProfile_getStreetAddress(env, jprofile.obj())); + Java_AutofillProfile_getStreetAddress(env, jprofile)); MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_STATE, - Java_AutofillProfile_getRegion(env, jprofile.obj())); + Java_AutofillProfile_getRegion(env, jprofile)); MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_CITY, - Java_AutofillProfile_getLocality(env, jprofile.obj())); - MaybeSetRawInfo( - profile, autofill::ADDRESS_HOME_DEPENDENT_LOCALITY, - Java_AutofillProfile_getDependentLocality(env, jprofile.obj())); + Java_AutofillProfile_getLocality(env, jprofile)); + MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_DEPENDENT_LOCALITY, + Java_AutofillProfile_getDependentLocality(env, jprofile)); MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_ZIP, - Java_AutofillProfile_getPostalCode(env, jprofile.obj())); + Java_AutofillProfile_getPostalCode(env, jprofile)); MaybeSetRawInfo(profile, autofill::ADDRESS_HOME_SORTING_CODE, - Java_AutofillProfile_getSortingCode(env, jprofile.obj())); + Java_AutofillProfile_getSortingCode(env, jprofile)); ScopedJavaLocalRef<jstring> country_code = - Java_AutofillProfile_getCountryCode(env, jprofile.obj()); + Java_AutofillProfile_getCountryCode(env, jprofile); if (!country_code.is_null()) { profile->SetInfo(AutofillType(ADDRESS_HOME_COUNTRY), ConvertJavaStringToUTF16(country_code), g_browser_process->GetApplicationLocale()); } MaybeSetRawInfo(profile, autofill::PHONE_HOME_WHOLE_NUMBER, - Java_AutofillProfile_getPhoneNumber(env, jprofile.obj())); + Java_AutofillProfile_getPhoneNumber(env, jprofile)); MaybeSetRawInfo(profile, autofill::EMAIL_ADDRESS, - Java_AutofillProfile_getEmailAddress(env, jprofile.obj())); - profile->set_language_code( - ConvertJavaStringToUTF8( - Java_AutofillProfile_getLanguageCode(env, jprofile.obj()))); + Java_AutofillProfile_getEmailAddress(env, jprofile)); + profile->set_language_code(ConvertJavaStringToUTF8( + Java_AutofillProfile_getLanguageCode(env, jprofile))); } // Mapping from Chrome card types to PaymentRequest basic card payment spec and @@ -173,24 +167,21 @@ const PaymentRequestData& payment_request_data = GetPaymentRequestData(card.type()); return Java_CreditCard_create( - env, ConvertUTF8ToJavaString(env, card.guid()).obj(), - ConvertUTF8ToJavaString(env, card.origin()).obj(), + env, ConvertUTF8ToJavaString(env, card.guid()), + ConvertUTF8ToJavaString(env, card.origin()), card.record_type() == CreditCard::LOCAL_CARD, card.record_type() == CreditCard::FULL_SERVER_CARD, - ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NAME_FULL)) - .obj(), - ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)).obj(), - ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()).obj(), - ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)) - .obj(), + ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NAME_FULL)), + ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_NUMBER)), + ConvertUTF16ToJavaString(env, card.TypeAndLastFourDigits()), + ConvertUTF16ToJavaString(env, card.GetRawInfo(CREDIT_CARD_EXP_MONTH)), ConvertUTF16ToJavaString(env, - card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)) - .obj(), - ConvertUTF8ToJavaString(env, payment_request_data.basic_card_payment_type) - .obj(), + card.GetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR)), + ConvertUTF8ToJavaString(env, + payment_request_data.basic_card_payment_type), ResourceMapper::MapFromChromiumId(payment_request_data.icon_resource_id), - ConvertUTF8ToJavaString(env, card.billing_address_id()) .obj(), - ConvertUTF8ToJavaString(env, card.server_id()) .obj()); + ConvertUTF8ToJavaString(env, card.billing_address_id()), + ConvertUTF8ToJavaString(env, card.server_id())); } const char* GetCardTypeForBasicCardPaymentType( @@ -294,15 +285,15 @@ const base::string16& cvc) override { JNIEnv* env = base::android::AttachCurrentThread(); Java_FullCardRequestDelegate_onFullCardDetails( - env, jdelegate_.obj(), CreateJavaCreditCardFromNative(env, card).obj(), - base::android::ConvertUTF16ToJavaString(env, cvc).obj()); + env, jdelegate_, CreateJavaCreditCardFromNative(env, card), + base::android::ConvertUTF16ToJavaString(env, cvc)); delete this; } // payments::FullCardRequest::Delegate: void OnFullCardError() override { JNIEnv* env = base::android::AttachCurrentThread(); - Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_.obj()); + Java_FullCardRequestDelegate_onFullCardError(env, jdelegate_); delete this; } @@ -542,8 +533,7 @@ if (weak_java_obj_.get(env).is_null()) return; - Java_PersonalDataManager_personalDataChanged(env, - weak_java_obj_.get(env).obj()); + Java_PersonalDataManager_personalDataChanged(env, weak_java_obj_.get(env)); } // static
diff --git a/chrome/browser/browsing_data/browsing_data_counter_utils.cc b/chrome/browser/browsing_data/browsing_data_counter_utils.cc index 4b7087f2..02de813 100644 --- a/chrome/browser/browsing_data/browsing_data_counter_utils.cc +++ b/chrome/browser/browsing_data/browsing_data_counter_utils.cc
@@ -12,11 +12,9 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" -#include "components/browsing_data/core/counters/autofill_counter.h" -#include "components/browsing_data/core/counters/history_counter.h" -#include "components/browsing_data/core/counters/passwords_counter.h" #include "components/browsing_data/core/pref_names.h" #include "components/prefs/pref_service.h" +#include "grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/text/bytes_formatting.h" @@ -54,29 +52,16 @@ bytes, ui::DataUnits::DATA_UNITS_MEBIBYTE, true); } -base::string16 GetCounterTextFromResult( +base::string16 GetChromeCounterTextFromResult( const browsing_data::BrowsingDataCounter::Result* result) { - base::string16 text; std::string pref_name = result->source()->GetPrefName(); if (!result->Finished()) { // The counter is still counting. - text = l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_CALCULATING); + return l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_CALCULATING); + } - } else if (pref_name == browsing_data::prefs::kDeletePasswords || - pref_name == browsing_data::prefs::kDeleteDownloadHistory) { - // Counters with trivially formatted result: passwords and downloads. - browsing_data::BrowsingDataCounter::ResultInt count = - static_cast<const browsing_data::BrowsingDataCounter::FinishedResult*>( - result) - ->Value(); - text = l10n_util::GetPluralStringFUTF16( - pref_name == browsing_data::prefs::kDeletePasswords - ? IDS_DEL_PASSWORDS_COUNTER - : IDS_DEL_DOWNLOADS_COUNTER, - count); - - } else if (pref_name == browsing_data::prefs::kDeleteCache) { + if (pref_name == browsing_data::prefs::kDeleteCache) { // Cache counter. browsing_data::BrowsingDataCounter::ResultInt cache_size_bytes = static_cast<const browsing_data::BrowsingDataCounter::FinishedResult*>( @@ -93,109 +78,28 @@ static const int kBytesInAMegabyte = 1024 * 1024; if (cache_size_bytes >= kBytesInAMegabyte) { base::string16 formatted_size = FormatBytesMBOrHigher(cache_size_bytes); - text = time_period == browsing_data::ALL_TIME + return time_period == browsing_data::ALL_TIME ? formatted_size : l10n_util::GetStringFUTF16( IDS_DEL_CACHE_COUNTER_UPPER_ESTIMATE, formatted_size); - } else { - text = l10n_util::GetStringUTF16(IDS_DEL_CACHE_COUNTER_ALMOST_EMPTY); } + return l10n_util::GetStringUTF16(IDS_DEL_CACHE_COUNTER_ALMOST_EMPTY); + } - } else if (pref_name == browsing_data::prefs::kDeleteBrowsingHistory) { - // History counter. - const browsing_data::HistoryCounter::HistoryResult* history_result = - static_cast<const browsing_data::HistoryCounter::HistoryResult*>( - result); - browsing_data::BrowsingDataCounter::ResultInt local_item_count = - history_result->Value(); - bool has_synced_visits = history_result->has_synced_visits(); - - text = has_synced_visits - ? l10n_util::GetPluralStringFUTF16( - IDS_DEL_BROWSING_HISTORY_COUNTER_SYNCED, local_item_count) - : l10n_util::GetPluralStringFUTF16( - IDS_DEL_BROWSING_HISTORY_COUNTER, local_item_count); - - } else if (pref_name == browsing_data::prefs::kDeleteFormData) { - // Autofill counter. - const browsing_data::AutofillCounter::AutofillResult* autofill_result = - static_cast<const browsing_data::AutofillCounter::AutofillResult*>( - result); - browsing_data::AutofillCounter::ResultInt num_suggestions = - autofill_result->Value(); - browsing_data::AutofillCounter::ResultInt num_credit_cards = - autofill_result->num_credit_cards(); - browsing_data::AutofillCounter::ResultInt num_addresses = - autofill_result->num_addresses(); - - std::vector<base::string16> displayed_strings; - - if (num_credit_cards) { - displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( - IDS_DEL_AUTOFILL_COUNTER_CREDIT_CARDS, num_credit_cards)); - } - if (num_addresses) { - displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( - IDS_DEL_AUTOFILL_COUNTER_ADDRESSES, num_addresses)); - } - if (num_suggestions) { - // We use a different wording for autocomplete suggestions based on the - // length of the entire string. - switch (displayed_strings.size()) { - case 0: - displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( - IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS, num_suggestions)); - break; - case 1: - displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( - IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_LONG, num_suggestions)); - break; - case 2: - displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( - IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_SHORT, num_suggestions)); - break; - default: - NOTREACHED(); - } - } - - // Construct the resulting string from the sections in |displayed_strings|. - switch (displayed_strings.size()) { - case 0: - text = l10n_util::GetStringUTF16(IDS_DEL_AUTOFILL_COUNTER_EMPTY); - break; - case 1: - text = displayed_strings[0]; - break; - case 2: - text = l10n_util::GetStringFUTF16(IDS_DEL_AUTOFILL_COUNTER_TWO_TYPES, - displayed_strings[0], - displayed_strings[1]); - break; - case 3: - text = l10n_util::GetStringFUTF16(IDS_DEL_AUTOFILL_COUNTER_THREE_TYPES, - displayed_strings[0], - displayed_strings[1], - displayed_strings[2]); - break; - default: - NOTREACHED(); - } - - } else if (pref_name == browsing_data::prefs::kDeleteMediaLicenses) { + if (pref_name == browsing_data::prefs::kDeleteMediaLicenses) { const MediaLicensesCounter::MediaLicenseResult* media_license_result = static_cast<const MediaLicensesCounter::MediaLicenseResult*>(result); if (media_license_result->Value() > 0) { - text = l10n_util::GetStringFUTF16( + return l10n_util::GetStringFUTF16( IDS_DEL_MEDIA_LICENSES_COUNTER_SITE_COMMENT, base::UTF8ToUTF16(media_license_result->GetOneOrigin())); - } else { - text = l10n_util::GetStringUTF16( - IDS_DEL_MEDIA_LICENSES_COUNTER_GENERAL_COMMENT); } + return l10n_util::GetStringUTF16( + IDS_DEL_MEDIA_LICENSES_COUNTER_GENERAL_COMMENT); + } #if defined(ENABLE_EXTENSIONS) - } else if (pref_name == browsing_data::prefs::kDeleteHostedAppsData) { + if (pref_name == browsing_data::prefs::kDeleteHostedAppsData) { // Hosted apps counter. const HostedAppsCounter::HostedAppsResult* hosted_apps_result = static_cast<const HostedAppsCounter::HostedAppsResult*>(result); @@ -223,15 +127,15 @@ // The output string has both the number placeholder (#) and substitution // placeholders ($1, $2, $3). First fetch the correct plural string first, // then substitute the $ placeholders. - text = base::ReplaceStringPlaceholders( + return base::ReplaceStringPlaceholders( l10n_util::GetPluralStringFUTF16( IDS_DEL_HOSTED_APPS_COUNTER, hosted_apps_count), replacements, nullptr); -#endif } +#endif - return text; + return browsing_data::GetCounterTextFromResult(result); } bool GetDeletionPreferenceFromDataType(
diff --git a/chrome/browser/browsing_data/browsing_data_counter_utils.h b/chrome/browser/browsing_data/browsing_data_counter_utils.h index 759c587..4d68d35 100644 --- a/chrome/browser/browsing_data/browsing_data_counter_utils.h +++ b/chrome/browser/browsing_data/browsing_data_counter_utils.h
@@ -15,7 +15,7 @@ bool AreCountersEnabled(); // Constructs the text to be displayed by a counter from the given |result|. -base::string16 GetCounterTextFromResult( +base::string16 GetChromeCounterTextFromResult( const browsing_data::BrowsingDataCounter::Result* result); // Copies the name of the deletion preference corresponding to the given
diff --git a/chrome/browser/browsing_data/browsing_data_counter_utils_unittest.cc b/chrome/browser/browsing_data/browsing_data_counter_utils_unittest.cc index c008128..db5bb3e 100644 --- a/chrome/browser/browsing_data/browsing_data_counter_utils_unittest.cc +++ b/chrome/browser/browsing_data/browsing_data_counter_utils_unittest.cc
@@ -10,10 +10,8 @@ #include "base/message_loop/message_loop.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/web_data_service_factory.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" -#include "components/browsing_data/core/counters/autofill_counter.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(ENABLE_EXTENSIONS) @@ -33,55 +31,6 @@ TestingProfile profile_; }; -// Tests the complex output of the Autofill counter. -TEST_F(BrowsingDataCounterUtilsTest, AutofillCounterResult) { - browsing_data::AutofillCounter counter( - WebDataServiceFactory::GetAutofillWebDataForProfile( - GetProfile(), ServiceAccessType::EXPLICIT_ACCESS) - .get()); - - // This test assumes that the strings are served exactly as defined, - // i.e. that the locale is set to the default "en". - ASSERT_EQ("en", TestingBrowserProcess::GetGlobal()->GetApplicationLocale()); - - // Test all configurations of zero and nonzero partial results for datatypes. - // Test singular and plural for each datatype. - const struct TestCase { - int num_credit_cards; - int num_addresses; - int num_suggestions; - std::string expected_output; - } kTestCases[] = { - {0, 0, 0, "none"}, - {1, 0, 0, "1 credit card"}, - {0, 5, 0, "5 addresses"}, - {0, 0, 1, "1 suggestion"}, - {0, 0, 2, "2 suggestions"}, - {4, 7, 0, "4 credit cards, 7 addresses"}, - {3, 0, 9, "3 credit cards, 9 other suggestions"}, - {0, 1, 1, "1 address, 1 other suggestion"}, - {9, 6, 3, "9 credit cards, 6 addresses, 3 others"}, - {4, 2, 1, "4 credit cards, 2 addresses, 1 other"}, - }; - - for (const TestCase& test_case : kTestCases) { - browsing_data::AutofillCounter::AutofillResult result( - &counter, test_case.num_suggestions, test_case.num_credit_cards, - test_case.num_addresses); - - SCOPED_TRACE(base::StringPrintf( - "Test params: %d credit card(s), " - "%d address(es), %d suggestion(s).", - test_case.num_credit_cards, - test_case.num_addresses, - test_case.num_suggestions - )); - - base::string16 output = GetCounterTextFromResult(&result); - EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output)); - } -} - #if defined(ENABLE_EXTENSIONS) // Tests the complex output of the hosted apps counter. TEST_F(BrowsingDataCounterUtilsTest, HostedAppsCounterResult) { @@ -120,7 +69,7 @@ apps.size(), examples); - base::string16 output = GetCounterTextFromResult(&result); + base::string16 output = GetChromeCounterTextFromResult(&result); EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output)); } }
diff --git a/chrome/browser/browsing_data/browsing_data_remover.cc b/chrome/browser/browsing_data/browsing_data_remover.cc index cf73ad4c..cd5df4e 100644 --- a/chrome/browser/browsing_data/browsing_data_remover.cc +++ b/chrome/browser/browsing_data/browsing_data_remover.cc
@@ -350,6 +350,7 @@ int remove_mask, int origin_type_mask, std::unique_ptr<BrowsingDataFilterBuilder> filter_builder) { + DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); DCHECK(filter_builder); RemoveInternal(time_range, remove_mask, origin_type_mask, std::move(filter_builder), nullptr); @@ -361,6 +362,7 @@ int origin_type_mask, std::unique_ptr<BrowsingDataFilterBuilder> filter_builder, Observer* observer) { + DCHECK_EQ(0, remove_mask & ~FILTERABLE_DATATYPES); DCHECK(filter_builder); DCHECK(observer); RemoveInternal(time_range, remove_mask, origin_type_mask, @@ -416,6 +418,16 @@ int remove_mask, const BrowsingDataFilterBuilder& filter_builder, int origin_type_mask) { + // =============== README before adding more storage backends =============== + // + // If you're adding a data storage backend that is included among + // RemoveDataMask::FILTERABLE_DATATYPES, you must do one of the following: + // 1. Support one of the filters generated by |filter_builder|. + // 2. Add a comment explaining why is it acceptable in your case to delete all + // data without filtering URLs / origins / domains. + // 3. Do not support partial deletion, i.e. only delete your data if + // |filter_builder.IsEmptyBlacklist()|. Add a comment explaining why this + // is acceptable. DCHECK_CURRENTLY_ON(BrowserThread::UI); waiting_for_synchronous_clear_operations_ = true; @@ -1022,7 +1034,9 @@ #endif // defined(ENABLE_PLUGINS) } - // Remove omnibox zero-suggest cache results. + // Remove omnibox zero-suggest cache results. Filtering is not supported. + // This is not a problem, as deleting more data than necessary will just cause + // another server round-trip; no data is actually lost. if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES))) prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string());
diff --git a/chrome/browser/browsing_data/browsing_data_remover.h b/chrome/browser/browsing_data/browsing_data_remover.h index 5564dcc..f379be7 100644 --- a/chrome/browser/browsing_data/browsing_data_remover.h +++ b/chrome/browser/browsing_data/browsing_data_remover.h
@@ -165,6 +165,12 @@ #endif REMOVE_SITE_USAGE_DATA, + // Datatypes that can be deleted partially per URL / origin / domain, + // whichever makes sense. + FILTERABLE_DATATYPES = (REMOVE_SITE_DATA & ~REMOVE_PLUGIN_DATA) | + REMOVE_CACHE | + REMOVE_DOWNLOADS, + // Includes all the available remove options. Meant to be used by clients // that wish to wipe as much data as possible from a Profile, to make it // look like a new Profile. @@ -267,9 +273,7 @@ // Like Remove(), but in case of URL-keyed only removes data whose URL match // |filter_builder| (e.g. are on certain origin or domain). - // TODO(dmurph): Support all backends with filter (crbug.com/113621). - // DO NOT USE THIS METHOD UNLESS CALLER KNOWS WHAT THEY'RE DOING. NOT ALL - // BACKENDS ARE SUPPORTED YET, AND MORE DATA THAN EXPECTED COULD BE DELETED. + // RemoveWithFilter() currently only works with FILTERABLE_DATATYPES. void RemoveWithFilter( const TimeRange& time_range, int remove_mask,
diff --git a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc index 3364e1d..9a2486f8 100644 --- a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc +++ b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
@@ -2832,7 +2832,7 @@ observer.target_b()); tasks.emplace_back( BrowsingDataRemover::TimeRange(base::Time(), base::Time::UnixEpoch()), - BrowsingDataRemover::REMOVE_PASSWORDS, + BrowsingDataRemover::REMOVE_WEBSQL, BrowsingDataHelper::UNPROTECTED_WEB, std::move(filter_builder_1), observer.target_b());
diff --git a/chrome/browser/extensions/component_migration_helper.cc b/chrome/browser/extensions/component_migration_helper.cc index 7de2caa..93b36a8 100644 --- a/chrome/browser/extensions/component_migration_helper.cc +++ b/chrome/browser/extensions/component_migration_helper.cc
@@ -9,6 +9,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system_impl.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" @@ -94,6 +95,11 @@ if (component_action_pref && !delegate_->HasComponentAction(component_action_id)) { + if (component_action_id == + ComponentToolbarActionsFactory::kMediaRouterActionId) { + pref_service_->SetBoolean(prefs::kMediaRouterAlwaysShowActionIcon, + true); + } delegate_->AddComponentAction(component_action_id); } } @@ -107,6 +113,12 @@ enabled_actions_.erase(component_action_id); RemoveComponentActionPref(component_action_id); + if (component_action_id == + ComponentToolbarActionsFactory::kMediaRouterActionId) { + pref_service_->SetBoolean(prefs::kMediaRouterAlwaysShowActionIcon, + false); + } + if (FeatureSwitch::extension_action_redesign()->IsEnabled() && delegate_->HasComponentAction(component_action_id)) delegate_->RemoveComponentAction(component_action_id); @@ -134,6 +146,14 @@ UnloadExtension(extension_id); SetComponentActionPref(component_action_id, true); + // We treat installation of the cast extension as a signal to permanently + // show the icon in the toolbar. + if (component_action_id == + ComponentToolbarActionsFactory::kMediaRouterActionId) { + pref_service_->SetBoolean(prefs::kMediaRouterAlwaysShowActionIcon, + true); + } + if (!delegate_->HasComponentAction(component_action_id)) delegate_->AddComponentAction(component_action_id); }
diff --git a/chrome/browser/extensions/component_migration_helper_unittest.cc b/chrome/browser/extensions/component_migration_helper_unittest.cc index 8168c77..1a869cd 100644 --- a/chrome/browser/extensions/component_migration_helper_unittest.cc +++ b/chrome/browser/extensions/component_migration_helper_unittest.cc
@@ -12,6 +12,7 @@ #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service_test_base.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/common/pref_names.h" #include "components/prefs/pref_registry_simple.h" #include "extensions/browser/extension_registry.h" @@ -47,6 +48,11 @@ SetComponentActionPref(kTestActionId, enabled); } + void SetMediaRouterActionPref(bool enabled) { + SetComponentActionPref( + ComponentToolbarActionsFactory::kMediaRouterActionId, enabled); + } + void EnableTestFeature() { enabled_actions_.insert(kTestActionId); } void DisableTestFeature() { enabled_actions_.erase(kTestActionId); } @@ -95,6 +101,11 @@ return enable_value; } + bool IsMediaRouterActionAlwaysShown() { + return profile()->GetPrefs()-> + GetBoolean(prefs::kMediaRouterAlwaysShowActionIcon); + } + StrictMock<MockComponentActionDelegate> mock_delegate_; std::unique_ptr<StrictMock<MockComponentMigrationHelper>> mock_helper_; std::unique_ptr<FeatureSwitch::ScopedOverride> extension_action_redesign_; @@ -209,4 +220,32 @@ EXPECT_FALSE(IsTestComponentActionEnabled()); } +TEST_F(ComponentMigrationHelperTest, EnableAndDisableMediaRouterAction) { + mock_helper_->SetMediaRouterActionPref(true); + mock_helper_->Register( + ComponentToolbarActionsFactory::kMediaRouterActionId, + "test_cast_extension"); + EXPECT_FALSE(IsMediaRouterActionAlwaysShown()); + + EXPECT_CALL(mock_delegate_, HasComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId)) + .WillOnce(Return(false)); + EXPECT_CALL(mock_delegate_, AddComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId)); + + mock_helper_->OnFeatureEnabled( + ComponentToolbarActionsFactory::kMediaRouterActionId); + EXPECT_TRUE(IsMediaRouterActionAlwaysShown()); + + EXPECT_CALL(mock_delegate_, HasComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId)) + .WillOnce(Return(true)); + EXPECT_CALL(mock_delegate_, RemoveComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId)); + + mock_helper_->OnFeatureDisabled( + ComponentToolbarActionsFactory::kMediaRouterActionId); + EXPECT_FALSE(IsMediaRouterActionAlwaysShown()); +} + } // namespace extensions
diff --git a/chrome/browser/invalidation/invalidation_service_factory_android.cc b/chrome/browser/invalidation/invalidation_service_factory_android.cc index 1b86424..e46f85a 100644 --- a/chrome/browser/invalidation/invalidation_service_factory_android.cc +++ b/chrome/browser/invalidation/invalidation_service_factory_android.cc
@@ -13,15 +13,14 @@ #include "jni/InvalidationServiceFactory_jni.h" using base::android::JavaParamRef; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; namespace invalidation { ScopedJavaLocalRef<jobject> InvalidationServiceFactoryAndroid::GetForProfile( - JNIEnv* env, - jclass clazz, - jobject j_profile) { - Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile); + const JavaRef<jobject>& j_profile) { + Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile.obj()); invalidation::ProfileInvalidationProvider* provider = ProfileInvalidationProviderFactory::GetForProfile(profile); InvalidationServiceAndroid* service_android = @@ -31,9 +30,7 @@ } ScopedJavaLocalRef<jobject> InvalidationServiceFactoryAndroid::GetForTest( - JNIEnv* env, - jclass clazz, - jobject j_context) { + const JavaRef<jobject>& j_context) { InvalidationServiceAndroid* service_android = new InvalidationServiceAndroid(j_context); return ScopedJavaLocalRef<jobject>(service_android->java_ref_); @@ -43,14 +40,13 @@ JNIEnv* env, const JavaParamRef<jclass>& clazz, const JavaParamRef<jobject>& j_profile) { - return InvalidationServiceFactoryAndroid::GetForProfile(env, clazz, - j_profile); + return InvalidationServiceFactoryAndroid::GetForProfile(j_profile); } ScopedJavaLocalRef<jobject> GetForTest(JNIEnv* env, const JavaParamRef<jclass>& clazz, const JavaParamRef<jobject>& j_context) { - return InvalidationServiceFactoryAndroid::GetForTest(env, clazz, j_context); + return InvalidationServiceFactoryAndroid::GetForTest(j_context); } bool InvalidationServiceFactoryAndroid::Register(JNIEnv* env) {
diff --git a/chrome/browser/invalidation/invalidation_service_factory_android.h b/chrome/browser/invalidation/invalidation_service_factory_android.h index ed3d9ae..bfe44eb19 100644 --- a/chrome/browser/invalidation/invalidation_service_factory_android.h +++ b/chrome/browser/invalidation/invalidation_service_factory_android.h
@@ -1,4 +1,4 @@ -#// Copyright 2014 The Chromium Authors. All rights reserved. +// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -14,11 +14,11 @@ // InvalidationServiceFactory. class InvalidationServiceFactoryAndroid { public: - static base::android::ScopedJavaLocalRef<jobject> - GetForProfile(JNIEnv* env, jclass clazz, jobject j_profile); + static base::android::ScopedJavaLocalRef<jobject> GetForProfile( + const base::android::JavaRef<jobject>& j_profile); - static base::android::ScopedJavaLocalRef<jobject> - GetForTest(JNIEnv* env, jclass clazz, jobject j_context); + static base::android::ScopedJavaLocalRef<jobject> GetForTest( + const base::android::JavaRef<jobject>& j_context); static bool Register(JNIEnv* env); };
diff --git a/chrome/browser/media/android/cdm/media_drm_credential_manager.cc b/chrome/browser/media/android/cdm/media_drm_credential_manager.cc index 151784d0..072230f 100644 --- a/chrome/browser/media/android/cdm/media_drm_credential_manager.cc +++ b/chrome/browser/media/android/cdm/media_drm_credential_manager.cc
@@ -30,7 +30,7 @@ bool succeeded) { JNIEnv* env = base::android::AttachCurrentThread(); Java_MediaDrmCredentialManagerCallback_onCredentialResetFinished( - env, j_media_drm_credential_manager_callback.obj(), succeeded); + env, j_media_drm_credential_manager_callback, succeeded); } } // namespace
diff --git a/chrome/browser/media/android/remote/remote_media_player_bridge.cc b/chrome/browser/media/android/remote/remote_media_player_bridge.cc index 4bcd1cff..8e6fb706 100644 --- a/chrome/browser/media/android/remote/remote_media_player_bridge.cc +++ b/chrome/browser/media/android/remote/remote_media_player_bridge.cc
@@ -78,15 +78,14 @@ j_frame_url_string = ConvertUTF8ToJavaString(env, frameUrl.spec()); } java_bridge_.Reset(Java_RemoteMediaPlayerBridge_create( - env, reinterpret_cast<intptr_t>(this), j_url_string.obj(), - j_frame_url_string.obj(), - ConvertUTF8ToJavaString(env, user_agent).obj())); + env, reinterpret_cast<intptr_t>(this), j_url_string, j_frame_url_string, + ConvertUTF8ToJavaString(env, user_agent))); } RemoteMediaPlayerBridge::~RemoteMediaPlayerBridge() { JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_destroy(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_destroy(env, java_bridge_); Release(); } @@ -130,7 +129,7 @@ void RemoteMediaPlayerBridge::StartInternal() { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); - Java_RemoteMediaPlayerBridge_start(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_start(env, java_bridge_); if (!time_update_timer_.IsRunning()) { time_update_timer_.Start( FROM_HERE, @@ -142,7 +141,7 @@ void RemoteMediaPlayerBridge::PauseInternal() { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); - Java_RemoteMediaPlayerBridge_pause(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_pause(env, java_bridge_); time_update_timer_.Stop(); } @@ -205,7 +204,7 @@ if (is_media_related_action) { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); - Java_RemoteMediaPlayerBridge_pause(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_pause(env, java_bridge_); time_update_timer_.Stop(); } } @@ -270,7 +269,7 @@ CHECK(env); Java_RemoteMediaPlayerBridge_requestRemotePlayback( - env, java_bridge_.obj(), local_player->GetCurrentTime().InMilliseconds()); + env, java_bridge_, local_player->GetCurrentTime().InMilliseconds()); } void RemoteMediaPlayerBridge::RequestRemotePlaybackControl() { @@ -278,8 +277,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_requestRemotePlaybackControl( - env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_requestRemotePlaybackControl(env, java_bridge_); } void RemoteMediaPlayerBridge::SetNativePlayer() { @@ -287,8 +285,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_setNativePlayer( - env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_setNativePlayer(env, java_bridge_); } void RemoteMediaPlayerBridge::OnPlayerCreated() { @@ -296,8 +293,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_onPlayerCreated( - env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_onPlayerCreated(env, java_bridge_); } void RemoteMediaPlayerBridge::OnPlayerDestroyed() { @@ -305,8 +301,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_onPlayerDestroyed( - env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_onPlayerDestroyed(env, java_bridge_); } std::string RemoteMediaPlayerBridge::GetCastingMessage() { @@ -321,14 +316,13 @@ CHECK(env); if (bitmaps.empty()) { - Java_RemoteMediaPlayerBridge_setPosterBitmap(env, java_bridge_.obj(), - nullptr); + Java_RemoteMediaPlayerBridge_setPosterBitmap(env, java_bridge_, nullptr); } else { ScopedJavaLocalRef<jobject> j_poster_bitmap; j_poster_bitmap = gfx::ConvertToJavaBitmap(&(bitmaps[0])); - Java_RemoteMediaPlayerBridge_setPosterBitmap(env, java_bridge_.obj(), - j_poster_bitmap.obj()); + Java_RemoteMediaPlayerBridge_setPosterBitmap(env, java_bridge_, + j_poster_bitmap); } } @@ -354,14 +348,14 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); int time_msec = static_cast<int>(time.InMilliseconds()); - Java_RemoteMediaPlayerBridge_seekTo(env, java_bridge_.obj(), time_msec); + Java_RemoteMediaPlayerBridge_seekTo(env, java_bridge_, time_msec); } void RemoteMediaPlayerBridge::Release() { DCHECK_CURRENTLY_ON(BrowserThread::UI); time_update_timer_.Stop(); JNIEnv* env = AttachCurrentThread(); - Java_RemoteMediaPlayerBridge_release(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_release(env, java_bridge_); DetachListener(); } @@ -370,23 +364,22 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_RemoteMediaPlayerBridge_setVolume( - env, java_bridge_.obj(), GetEffectiveVolume()); + Java_RemoteMediaPlayerBridge_setVolume(env, java_bridge_, + GetEffectiveVolume()); } base::TimeDelta RemoteMediaPlayerBridge::GetCurrentTime() { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); return base::TimeDelta::FromMilliseconds( - Java_RemoteMediaPlayerBridge_getCurrentPosition( - env, java_bridge_.obj())); + Java_RemoteMediaPlayerBridge_getCurrentPosition(env, java_bridge_)); } base::TimeDelta RemoteMediaPlayerBridge::GetDuration() { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); const int duration_ms = - Java_RemoteMediaPlayerBridge_getDuration(env, java_bridge_.obj()); + Java_RemoteMediaPlayerBridge_getDuration(env, java_bridge_); // Sometimes we can't get the duration remotely, but the local media player // knows it. // TODO (aberent) This is for YouTube. Remove it when the YouTube receiver is @@ -405,8 +398,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); CHECK(env); - jboolean result = Java_RemoteMediaPlayerBridge_isPlaying( - env, java_bridge_.obj()); + jboolean result = Java_RemoteMediaPlayerBridge_isPlaying(env, java_bridge_); return result; } @@ -482,7 +474,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); Java_RemoteMediaPlayerBridge_setCookies( - env, java_bridge_.obj(), ConvertUTF8ToJavaString(env, cookies).obj()); + env, java_bridge_, ConvertUTF8ToJavaString(env, cookies)); } MediaPlayerAndroid* RemoteMediaPlayerBridge::GetLocalPlayer() {
diff --git a/chrome/browser/media/android/router/media_router_android.cc b/chrome/browser/media/android/router/media_router_android.cc index efe4cc9..c824e475 100644 --- a/chrome/browser/media/android/router/media_router_android.cc +++ b/chrome/browser/media/android/router/media_router_android.cc
@@ -117,16 +117,9 @@ ScopedJavaLocalRef<jstring> jorigin = base::android::ConvertUTF8ToJavaString(env, origin.spec()); - Java_ChromeMediaRouter_createRoute( - env, - java_media_router_.obj(), - jsource_id.obj(), - jsink_id.obj(), - jpresentation_id.obj(), - jorigin.obj(), - tab_id, - is_incognito, - route_request_id); + Java_ChromeMediaRouter_createRoute(env, java_media_router_, jsource_id, + jsink_id, jpresentation_id, jorigin, + tab_id, is_incognito, route_request_id); } void MediaRouterAndroid::ConnectRouteByRouteId( @@ -180,22 +173,16 @@ ScopedJavaLocalRef<jstring> jorigin = base::android::ConvertUTF8ToJavaString(env, origin.spec()); - Java_ChromeMediaRouter_joinRoute( - env, - java_media_router_.obj(), - jsource_id.obj(), - jpresentation_id.obj(), - jorigin.obj(), - tab_id, - request_id); + Java_ChromeMediaRouter_joinRoute(env, java_media_router_, jsource_id, + jpresentation_id, jorigin, tab_id, + request_id); } void MediaRouterAndroid::TerminateRoute(const MediaRoute::Id& route_id) { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> jroute_id = base::android::ConvertUTF8ToJavaString(env, route_id); - Java_ChromeMediaRouter_closeRoute( - env, java_media_router_.obj(), jroute_id.obj()); + Java_ChromeMediaRouter_closeRoute(env, java_media_router_, jroute_id); } void MediaRouterAndroid::SendRouteMessage( @@ -209,12 +196,8 @@ base::android::ConvertUTF8ToJavaString(env, route_id); ScopedJavaLocalRef<jstring> jmessage = base::android::ConvertUTF8ToJavaString(env, message); - Java_ChromeMediaRouter_sendStringMessage( - env, - java_media_router_.obj(), - jroute_id.obj(), - jmessage.obj(), - callback_id); + Java_ChromeMediaRouter_sendStringMessage(env, java_media_router_, jroute_id, + jmessage, callback_id); } void MediaRouterAndroid::SendRouteBinaryMessage( @@ -228,9 +211,8 @@ base::android::ConvertUTF8ToJavaString(env, route_id); ScopedJavaLocalRef<jbyteArray> jbyte_array = base::android::ToJavaByteArray(env, &((*data)[0]), data->size()); - Java_ChromeMediaRouter_sendBinaryMessage(env, java_media_router_.obj(), - jroute_id.obj(), jbyte_array.obj(), - callback_id); + Java_ChromeMediaRouter_sendBinaryMessage(env, java_media_router_, jroute_id, + jbyte_array, callback_id); } void MediaRouterAndroid::AddIssue(const Issue& issue) { @@ -257,8 +239,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> jroute_id = base::android::ConvertUTF8ToJavaString(env, route_id); - Java_ChromeMediaRouter_detachRoute( - env, java_media_router_.obj(), jroute_id.obj()); + Java_ChromeMediaRouter_detachRoute(env, java_media_router_, jroute_id); } bool MediaRouterAndroid::RegisterMediaSinksObserver( @@ -278,7 +259,7 @@ ScopedJavaLocalRef<jstring> jsource_id = base::android::ConvertUTF8ToJavaString(env, source_id); return Java_ChromeMediaRouter_startObservingMediaSinks( - env, java_media_router_.obj(), jsource_id.obj()); + env, java_media_router_, jsource_id); } void MediaRouterAndroid::UnregisterMediaSinksObserver( @@ -298,8 +279,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> jsource_id = base::android::ConvertUTF8ToJavaString(env, source_id); - Java_ChromeMediaRouter_stopObservingMediaSinks( - env, java_media_router_.obj(), jsource_id.obj()); + Java_ChromeMediaRouter_stopObservingMediaSinks(env, java_media_router_, + jsource_id); } } @@ -360,12 +341,10 @@ std::vector<MediaSink> sinks_converted; sinks_converted.reserve(jcount); for (int i = 0; i < jcount; ++i) { - ScopedJavaLocalRef<jstring> jsink_urn = - Java_ChromeMediaRouter_getSinkUrn( - env, java_media_router_.obj(), jsource_urn, i); - ScopedJavaLocalRef<jstring> jsink_name = - Java_ChromeMediaRouter_getSinkName( - env, java_media_router_.obj(), jsource_urn, i); + ScopedJavaLocalRef<jstring> jsink_urn = Java_ChromeMediaRouter_getSinkUrn( + env, java_media_router_, jsource_urn, i); + ScopedJavaLocalRef<jstring> jsink_name = Java_ChromeMediaRouter_getSinkName( + env, java_media_router_, jsource_urn, i); sinks_converted.push_back( MediaSink(ConvertJavaStringToUTF8(env, jsink_urn.obj()), ConvertJavaStringToUTF8(env, jsink_name.obj()),
diff --git a/chrome/browser/media/android/router/media_router_dialog_controller_android.cc b/chrome/browser/media/android/router/media_router_dialog_controller_android.cc index c2184cb..298a2ef 100644 --- a/chrome/browser/media/android/router/media_router_dialog_controller_android.cc +++ b/chrome/browser/media/android/router/media_router_dialog_controller_android.cc
@@ -133,26 +133,25 @@ env, matching_route->media_route_id()); Java_ChromeMediaRouterDialogController_openRouteControllerDialog( - env, java_dialog_controller_.obj(), jsource_urn.obj(), - jmedia_route_id.obj()); + env, java_dialog_controller_, jsource_urn, jmedia_route_id); return; } Java_ChromeMediaRouterDialogController_openRouteChooserDialog( - env, java_dialog_controller_.obj(), jsource_urn.obj()); + env, java_dialog_controller_, jsource_urn); } void MediaRouterDialogControllerAndroid::CloseMediaRouterDialog() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ChromeMediaRouterDialogController_closeDialog( - env, java_dialog_controller_.obj()); + Java_ChromeMediaRouterDialogController_closeDialog(env, + java_dialog_controller_); } bool MediaRouterDialogControllerAndroid::IsShowingMediaRouterDialog() const { JNIEnv* env = base::android::AttachCurrentThread(); return Java_ChromeMediaRouterDialogController_isShowingDialog( - env, java_dialog_controller_.obj()); + env, java_dialog_controller_); } } // namespace media_router
diff --git a/chrome/browser/notifications/notification_platform_bridge_android.cc b/chrome/browser/notifications/notification_platform_bridge_android.cc index 3dd82ff..9dd91b4 100644 --- a/chrome/browser/notifications/notification_platform_bridge_android.cc +++ b/chrome/browser/notifications/notification_platform_bridge_android.cc
@@ -109,8 +109,7 @@ } NotificationPlatformBridgeAndroid::~NotificationPlatformBridgeAndroid() { - Java_NotificationPlatformBridge_destroy(AttachCurrentThread(), - java_object_.obj()); + Java_NotificationPlatformBridge_destroy(AttachCurrentThread(), java_object_); } void NotificationPlatformBridgeAndroid::OnNotificationClicked( @@ -193,7 +192,7 @@ ScopedJavaLocalRef<jstring> j_scope_url = ConvertUTF8ToJavaString(env, scope_url.spec()); webapk_package = Java_NotificationPlatformBridge_queryWebApkPackage( - env, java_object_.obj(), j_scope_url.obj()); + env, java_object_, j_scope_url); } else { webapk_package = ConvertUTF8ToJavaString(env, ""); } @@ -235,12 +234,11 @@ ConvertUTF8ToJavaString(env, profile_id); Java_NotificationPlatformBridge_displayNotification( - env, java_object_.obj(), j_notification_id.obj(), j_origin.obj(), - j_profile_id.obj(), incognito, tag.obj(), webapk_package.obj(), - title.obj(), body.obj(), notification_icon.obj(), badge.obj(), - vibration_pattern.obj(), notification.timestamp().ToJavaTime(), - notification.renotify(), notification.silent(), action_titles.obj(), - action_icons.obj()); + env, java_object_, j_notification_id, j_origin, j_profile_id, incognito, + tag, webapk_package, title, body, notification_icon, badge, + vibration_pattern, notification.timestamp().ToJavaTime(), + notification.renotify(), notification.silent(), action_titles, + action_icons); regenerated_notification_infos_[notification_id] = RegeneratedNotificationInfo(origin_url.spec(), notification.tag(), @@ -273,8 +271,8 @@ regenerated_notification_infos_.erase(iterator); Java_NotificationPlatformBridge_closeNotification( - env, java_object_.obj(), j_profile_id.obj(), j_notification_id.obj(), - origin.obj(), tag.obj(), webapk_package.obj()); + env, java_object_, j_profile_id, j_notification_id, origin, tag, + webapk_package); } bool NotificationPlatformBridgeAndroid::GetDisplayed(
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc index e8e6661..dd8e82f 100644 --- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc +++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -252,6 +252,13 @@ observer->OnLoadingBehaviorObserved(extra_info); } +// TODO(crbug.com/617904): Browser initiated navigations should have +// HasUserGesture() set to true. Update this once we get enough data from just +// renderer initiated aborts. +bool IsNavigationUserInitiated(content::NavigationHandle* handle) { + return handle->HasUserGesture(); +} + } // namespace PageLoadTracker::PageLoadTracker( @@ -266,10 +273,12 @@ navigation_start_(navigation_handle->NavigationStart()), url_(navigation_handle->GetURL()), abort_type_(ABORT_NONE), + abort_user_initiated_(false), started_in_foreground_(in_foreground), page_transition_(navigation_handle->GetPageTransition()), num_cache_requests_(0), num_network_requests_(0), + user_gesture_(IsNavigationUserInitiated(navigation_handle)), aborted_chain_size_(aborted_chain_size), aborted_chain_size_same_url_(aborted_chain_size_same_url), embedder_interface_(embedder_interface) { @@ -404,6 +413,7 @@ url_ = navigation_handle->GetURL(); // Some transitions (like CLIENT_REDIRECT) are only known at commit time. page_transition_ = navigation_handle->GetPageTransition(); + user_gesture_ = navigation_handle->HasUserGesture(); for (const auto& observer : observers_) { observer->OnCommit(navigation_handle); } @@ -561,13 +571,17 @@ time_to_commit = commit_time_ - navigation_start_; } + // abort_type_ == ABORT_NONE implies !abort_user_initiated_. + DCHECK(abort_type_ != ABORT_NONE || !abort_user_initiated_); return PageLoadExtraInfo( first_background_time, first_foreground_time, started_in_foreground_, - commit_time_.is_null() ? GURL() : url_, time_to_commit, abort_type_, - time_to_abort, num_cache_requests_, num_network_requests_, metadata_); + user_gesture_, commit_time_.is_null() ? GURL() : url_, time_to_commit, + abort_type_, abort_user_initiated_, time_to_abort, num_cache_requests_, + num_network_requests_, metadata_); } void PageLoadTracker::NotifyAbort(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp) { DCHECK_NE(abort_type, ABORT_NONE); @@ -575,10 +589,12 @@ if (abort_type_ != ABORT_NONE) return; - UpdateAbortInternal(abort_type, timestamp, is_certainly_browser_timestamp); + UpdateAbortInternal(abort_type, user_initiated, timestamp, + is_certainly_browser_timestamp); } void PageLoadTracker::UpdateAbort(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp) { DCHECK_NE(abort_type, ABORT_NONE); @@ -588,7 +604,8 @@ // For some aborts (e.g. navigations), the initiated timestamp can be earlier // than the timestamp that aborted the load. Taking the minimum gives the // closest user initiated time known. - UpdateAbortInternal(abort_type, std::min(abort_time_, timestamp), + UpdateAbortInternal(abort_type, user_initiated, + std::min(abort_time_, timestamp), is_certainly_browser_timestamp); } @@ -608,6 +625,7 @@ } void PageLoadTracker::UpdateAbortInternal(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp) { // When a provisional navigation commits, that navigation's start time is @@ -627,6 +645,7 @@ } abort_type_ = abort_type; abort_time_ = timestamp; + abort_user_initiated_ = user_initiated && abort_type != ABORT_CLIENT_REDIRECT; if (is_certainly_browser_timestamp) { ClampBrowserTimestampIfInterProcessTimeTickSkew(&abort_time_); @@ -659,7 +678,8 @@ } MetricsWebContentsObserver::~MetricsWebContentsObserver() { - NotifyAbortAllLoads(ABORT_CLOSE); + // TODO(csharrison): Use a more user-initiated signal for CLOSE. + NotifyAbortAllLoads(ABORT_CLOSE, false); } void MetricsWebContentsObserver::RegisterInputEventObserver( @@ -794,14 +814,11 @@ return; // Notify other loads that they may have been aborted by this committed - // load. Note that by using the committed navigation start as the abort - // cause, we lose data on provisional loads that were aborted by other - // provisional loads. Those will either be listed as ABORT_OTHER or as being - // aborted by this load. - // is_certainly_browser_timestamp is set to false because NavigationStart() - // could be set in either the renderer or browser process. + // load. is_certainly_browser_timestamp is set to false because + // NavigationStart() could be set in either the renderer or browser process. NotifyAbortAllLoadsWithTimestamp( AbortTypeForPageTransition(navigation_handle->GetPageTransition()), + IsNavigationUserInitiated(navigation_handle), navigation_handle->NavigationStart(), false); if (should_track) { @@ -836,7 +853,7 @@ // net::ERR_ABORTED. Note that this can come from some non user-initiated // errors, such as downloads, or 204 responses. See crbug.com/542369. if ((error == net::OK) || (error == net::ERR_ABORTED)) { - tracker->NotifyAbort(ABORT_OTHER, base::TimeTicks::Now(), true); + tracker->NotifyAbort(ABORT_OTHER, false, base::TimeTicks::Now(), true); aborted_provisional_loads_.push_back(std::move(tracker)); } } @@ -855,7 +872,8 @@ } void MetricsWebContentsObserver::NavigationStopped() { - NotifyAbortAllLoads(ABORT_STOP); + // TODO(csharrison): Use a more user-initiated signal for STOP. + NotifyAbortAllLoads(ABORT_STOP, false); } void MetricsWebContentsObserver::OnInputEvent( @@ -932,25 +950,28 @@ aborted_provisional_loads_.clear(); } -void MetricsWebContentsObserver::NotifyAbortAllLoads(UserAbortType abort_type) { - NotifyAbortAllLoadsWithTimestamp(abort_type, base::TimeTicks::Now(), true); +void MetricsWebContentsObserver::NotifyAbortAllLoads(UserAbortType abort_type, + bool user_initiated) { + NotifyAbortAllLoadsWithTimestamp(abort_type, user_initiated, + base::TimeTicks::Now(), true); } void MetricsWebContentsObserver::NotifyAbortAllLoadsWithTimestamp( UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp) { if (committed_load_) { - committed_load_->NotifyAbort(abort_type, timestamp, + committed_load_->NotifyAbort(abort_type, user_initiated, timestamp, is_certainly_browser_timestamp); } for (const auto& kv : provisional_loads_) { - kv.second->NotifyAbort(abort_type, timestamp, + kv.second->NotifyAbort(abort_type, user_initiated, timestamp, is_certainly_browser_timestamp); } for (const auto& tracker : aborted_provisional_loads_) { if (tracker->IsLikelyProvisionalAbort(timestamp)) { - tracker->UpdateAbort(abort_type, timestamp, + tracker->UpdateAbort(abort_type, user_initiated, timestamp, is_certainly_browser_timestamp); } } @@ -976,7 +997,7 @@ if (last_aborted_load->IsLikelyProvisionalAbort(timestamp)) { last_aborted_load->UpdateAbort( AbortTypeForPageTransition(new_navigation->GetPageTransition()), - timestamp, false); + IsNavigationUserInitiated(new_navigation), timestamp, false); } aborted_provisional_loads_.clear();
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.h b/chrome/browser/page_load_metrics/metrics_web_contents_observer.h index f610a277..dcceaf4 100644 --- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.h +++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.h
@@ -182,9 +182,11 @@ // browser process or not. We need this to possibly clamp browser timestamp on // a machine with inter process time tick skew. void NotifyAbort(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp); void UpdateAbort(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp); @@ -219,6 +221,7 @@ base::TimeTicks* event_time); void UpdateAbortInternal(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp); @@ -252,6 +255,12 @@ // Will be ABORT_NONE if we have not aborted this load yet. Otherwise will // be the first abort action the user performed. UserAbortType abort_type_; + + // This boolean is only an approximation. As the aborts pipeline is updated, + // more abort types will have this set to true. Currently, this is only set + // for navigations aborting navigations. + bool abort_user_initiated_; + base::TimeTicks abort_time_; // We record separate metrics for events that occur after a background, @@ -272,6 +281,10 @@ int num_cache_requests_; int num_network_requests_; + // This is derived from the user gesture bit in the renderer. For browser + // initiated navigations this will always be true. + bool user_gesture_; + // This is a subtle member. If a provisional load A gets aborted by // provisional load B, which gets aborted by C that eventually commits, then // there exists an abort chain of length 2, starting at A's navigation_start. @@ -354,8 +367,9 @@ // Notify all loads, provisional and committed, that we performed an action // that might abort them. - void NotifyAbortAllLoads(UserAbortType abort_type); + void NotifyAbortAllLoads(UserAbortType abort_type, bool user_initiated); void NotifyAbortAllLoadsWithTimestamp(UserAbortType abort_type, + bool user_initiated, base::TimeTicks timestamp, bool is_certainly_browser_timestamp);
diff --git a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc index f6c32ab..2b64a06 100644 --- a/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_observer.cc
@@ -51,20 +51,42 @@ const char kHistogramAbortCloseDuringParse[] = "PageLoad.AbortTiming.Close.DuringParse"; +// These metrics should be temporary until we have landed on a one-size-fits-all +// abort metric. +const char kHistogramAbortNewNavigationUserInitiated[] = + "PageLoad.AbortTiming.NewNavigation.BeforeCommit.UserInitiated"; +const char kHistogramAbortForwardBackUserInitiated[] = + "PageLoad.AbortTiming.NewNavigation.BeforeCommit.UserInitiated"; +const char kHistogramAbortReloadUserInitiated[] = + "PageLoad.AbortTiming.NewNavigation.BeforeCommit.UserInitiated"; + } // namespace internal namespace { +bool IsAbortUserInitiated(const page_load_metrics::PageLoadExtraInfo& info) { + return info.abort_user_initiated && info.user_gesture; +} + void RecordAbortBeforeCommit(UserAbortType abort_type, + bool user_initiated, base::TimeDelta time_to_abort) { switch (abort_type) { case UserAbortType::ABORT_RELOAD: PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadBeforeCommit, time_to_abort); + if (user_initiated) { + PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortReloadUserInitiated, + time_to_abort); + } return; case UserAbortType::ABORT_FORWARD_BACK: PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackBeforeCommit, time_to_abort); + if (user_initiated) { + PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortForwardBackUserInitiated, + time_to_abort); + } return; case UserAbortType::ABORT_CLIENT_REDIRECT: PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortClientRedirectBeforeCommit, @@ -73,6 +95,10 @@ case UserAbortType::ABORT_NEW_NAVIGATION: PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationBeforeCommit, time_to_abort); + if (user_initiated) { + PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortNewNavigationUserInitiated, + time_to_abort); + } return; case UserAbortType::ABORT_STOP: PAGE_LOAD_HISTOGRAM(internal::kHistogramAbortStopBeforeCommit, @@ -223,5 +249,6 @@ return; RecordAbortBeforeCommit(extra_info.abort_type, + IsAbortUserInitiated(extra_info), extra_info.time_to_abort.value()); }
diff --git a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc index 7f1f130..7dcc94a 100644 --- a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc
@@ -29,6 +29,5 @@ web_contents_->GetJavaWebContents(); JNIEnv* env = base::android::AttachCurrentThread(); Java_PageLoadMetrics_onFirstContentfulPaint( - env, java_web_contents.obj(), - static_cast<jlong>(first_contentful_paint_ms)); + env, java_web_contents, static_cast<jlong>(first_contentful_paint_ms)); }
diff --git a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc index d60b8cf..fd1c420 100644 --- a/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/observers/core_page_load_metrics_observer.cc
@@ -190,6 +190,9 @@ const char kRapporMetricsNameCoarseTiming[] = "PageLoad.CoarseTiming.NavigationToFirstContentfulPaint"; +const char kHistogramFirstContentfulPaintUserInitiated[] = + "PageLoad.PaintTiming.NavigationToFirstContentfulPaint.UserInitiated"; + const char kHistogramFirstMeaningfulPaintStatus[] = "PageLoad.Experimental.PaintTiming.FirstMeaningfulPaintStatus"; @@ -325,6 +328,11 @@ timing.first_contentful_paint.value()); } + if (info.user_gesture) { + PAGE_LOAD_HISTOGRAM(internal::kHistogramFirstContentfulPaintUserInitiated, + timing.first_contentful_paint.value()); + } + switch (GetPageLoadType(transition_)) { case LOAD_TYPE_RELOAD: PAGE_LOAD_HISTOGRAM(
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/page_load_metrics_observer.cc index 2fa1895..04fb549e 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_observer.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_observer.cc
@@ -10,9 +10,11 @@ const base::Optional<base::TimeDelta>& first_background_time, const base::Optional<base::TimeDelta>& first_foreground_time, bool started_in_foreground, + bool user_gesture, const GURL& committed_url, const base::Optional<base::TimeDelta>& time_to_commit, UserAbortType abort_type, + bool abort_user_initiated, const base::Optional<base::TimeDelta>& time_to_abort, int num_cache_requests, int num_network_requests, @@ -20,9 +22,11 @@ : first_background_time(first_background_time), first_foreground_time(first_foreground_time), started_in_foreground(started_in_foreground), + user_gesture(user_gesture), committed_url(committed_url), time_to_commit(time_to_commit), abort_type(abort_type), + abort_user_initiated(abort_user_initiated), time_to_abort(time_to_abort), num_cache_requests(num_cache_requests), num_network_requests(num_network_requests),
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_observer.h b/chrome/browser/page_load_metrics/page_load_metrics_observer.h index 4288ae0..fb9e29f 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_observer.h +++ b/chrome/browser/page_load_metrics/page_load_metrics_observer.h
@@ -65,9 +65,11 @@ const base::Optional<base::TimeDelta>& first_background_time, const base::Optional<base::TimeDelta>& first_foreground_time, bool started_in_foreground, + bool user_gesture, const GURL& committed_url, const base::Optional<base::TimeDelta>& time_to_commit, UserAbortType abort_type, + bool abort_user_initiated, const base::Optional<base::TimeDelta>& time_to_abort, int num_cache_requests, int num_network_requests, @@ -86,6 +88,10 @@ // True if the page load started in the foreground. const bool started_in_foreground; + // True if this is either a browser initiated navigation or the user_gesture + // bit is true in the renderer. + const bool user_gesture; + // Committed URL. If the page load did not commit, |committed_url| will be // empty. const GURL committed_url; @@ -97,6 +103,10 @@ // aborted, |abort_type| will be |ABORT_NONE|. const UserAbortType abort_type; + // TODO(csharrison): If more metadata for aborts is needed we should provide a + // better abstraction. Note that this is an approximation. + bool abort_user_initiated; + const base::Optional<base::TimeDelta> time_to_abort; // Note: these are only approximations, based on WebContents attribution from
diff --git a/chrome/browser/password_manager/account_chooser_dialog_android.cc b/chrome/browser/password_manager/account_chooser_dialog_android.cc index 4891a58..b02db3f 100644 --- a/chrome/browser/password_manager/account_chooser_dialog_android.cc +++ b/chrome/browser/password_manager/account_chooser_dialog_android.cc
@@ -85,7 +85,7 @@ base::android::ScopedJavaLocalRef<jobject> java_bitmap = gfx::ConvertToJavaBitmap(bitmap); Java_AccountChooserDialog_imageFetchComplete( - AttachCurrentThread(), java_dialog_.obj(), index_, java_bitmap.obj()); + AttachCurrentThread(), java_dialog_, index_, java_bitmap); } delete this; } @@ -157,12 +157,12 @@ l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_ACCOUNT_CHOOSER_SIGN_IN); } dialog_jobject_.Reset(Java_AccountChooserDialog_createAndShowAccountChooser( - env, native_window->GetJavaObject().obj(), - reinterpret_cast<intptr_t>(this), java_credentials_array.obj(), - base::android::ConvertUTF16ToJavaString(env, title).obj(), + env, native_window->GetJavaObject(), reinterpret_cast<intptr_t>(this), + java_credentials_array, + base::android::ConvertUTF16ToJavaString(env, title), title_link_range.start(), title_link_range.end(), - base::android::ConvertUTF8ToJavaString(env, origin).obj(), - base::android::ConvertUTF16ToJavaString(env, signin_button).obj())); + base::android::ConvertUTF8ToJavaString(env, origin), + base::android::ConvertUTF16ToJavaString(env, signin_button))); net::URLRequestContextGetter* request_context = Profile::FromBrowserContext(web_contents_->GetBrowserContext()) ->GetRequestContext(); @@ -205,7 +205,7 @@ void AccountChooserDialogAndroid::WebContentsDestroyed() { JNIEnv* env = AttachCurrentThread(); - Java_AccountChooserDialog_dismissDialog(env, dialog_jobject_.obj()); + Java_AccountChooserDialog_dismissDialog(env, dialog_jobject_); } void AccountChooserDialogAndroid::WasHidden() { @@ -213,7 +213,7 @@ // gone. OnDialogCancel(); JNIEnv* env = AttachCurrentThread(); - Java_AccountChooserDialog_dismissDialog(env, dialog_jobject_.obj()); + Java_AccountChooserDialog_dismissDialog(env, dialog_jobject_); } void AccountChooserDialogAndroid::OnDialogCancel() {
diff --git a/chrome/browser/password_manager/auto_signin_first_run_dialog_android.cc b/chrome/browser/password_manager/auto_signin_first_run_dialog_android.cc index dd08c95e..157ebc3 100644 --- a/chrome/browser/password_manager/auto_signin_first_run_dialog_android.cc +++ b/chrome/browser/password_manager/auto_signin_first_run_dialog_android.cc
@@ -67,14 +67,12 @@ l10n_util::GetStringUTF16(IDS_AUTO_SIGNIN_FIRST_RUN_TURN_OFF); dialog_jobject_.Reset(Java_AutoSigninFirstRunDialog_createAndShowDialog( - env, native_window->GetJavaObject().obj(), - reinterpret_cast<intptr_t>(this), - base::android::ConvertUTF16ToJavaString(env, message).obj(), - base::android::ConvertUTF16ToJavaString(env, explanation).obj(), + env, native_window->GetJavaObject(), reinterpret_cast<intptr_t>(this), + base::android::ConvertUTF16ToJavaString(env, message), + base::android::ConvertUTF16ToJavaString(env, explanation), explanation_link_range.start(), explanation_link_range.end(), - base::android::ConvertUTF16ToJavaString(env, ok_button_text).obj(), - base::android::ConvertUTF16ToJavaString(env, turn_off_button_text) - .obj())); + base::android::ConvertUTF16ToJavaString(env, ok_button_text), + base::android::ConvertUTF16ToJavaString(env, turn_off_button_text))); } void AutoSigninFirstRunDialogAndroid::Destroy(JNIEnv* env, jobject obj) { @@ -108,14 +106,14 @@ void AutoSigninFirstRunDialogAndroid::WebContentsDestroyed() { JNIEnv* env = AttachCurrentThread(); - Java_AutoSigninFirstRunDialog_dismissDialog(env, dialog_jobject_.obj()); + Java_AutoSigninFirstRunDialog_dismissDialog(env, dialog_jobject_); } void AutoSigninFirstRunDialogAndroid::WasHidden() { // TODO(https://crbug.com/610700): once bug is fixed, this code should be // gone. JNIEnv* env = AttachCurrentThread(); - Java_AutoSigninFirstRunDialog_dismissDialog(env, dialog_jobject_.obj()); + Java_AutoSigninFirstRunDialog_dismissDialog(env, dialog_jobject_); } bool RegisterAutoSigninFirstRunDialogAndroid(JNIEnv* env) {
diff --git a/chrome/browser/password_manager/credential_android.cc b/chrome/browser/password_manager/credential_android.cc index d669ad8..0a49ca84 100644 --- a/chrome/browser/password_manager/credential_android.cc +++ b/chrome/browser/password_manager/credential_android.cc
@@ -25,9 +25,9 @@ IDS_PASSWORDS_VIA_FEDERATION, base::ASCIIToUTF16(password_form.federation_origin.host())); return Java_Credential_createCredential( - env, ConvertUTF16ToJavaString(env, password_form.username_value).obj(), - ConvertUTF16ToJavaString(env, password_form.display_name).obj(), - ConvertUTF8ToJavaString(env, federation).obj(), type, position); + env, ConvertUTF16ToJavaString(env, password_form.username_value), + ConvertUTF16ToJavaString(env, password_form.display_name), + ConvertUTF8ToJavaString(env, federation), type, position); } base::android::ScopedJavaLocalRef<jobjectArray> CreateNativeCredentialArray(
diff --git a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc index e1c22fa1..6d796e94 100644 --- a/chrome/browser/permissions/permission_update_infobar_delegate_android.cc +++ b/chrome/browser/permissions/permission_update_infobar_delegate_android.cc
@@ -139,15 +139,13 @@ callback_(callback) { JNIEnv* env = base::android::AttachCurrentThread(); java_delegate_.Reset(Java_PermissionUpdateInfoBarDelegate_create( - env, - reinterpret_cast<intptr_t>(this), - web_contents->GetJavaWebContents().obj(), - base::android::ToJavaArrayOfStrings(env, android_permissions_).obj())); + env, reinterpret_cast<intptr_t>(this), web_contents->GetJavaWebContents(), + base::android::ToJavaArrayOfStrings(env, android_permissions_))); } PermissionUpdateInfoBarDelegate::~PermissionUpdateInfoBarDelegate() { Java_PermissionUpdateInfoBarDelegate_onNativeDestroyed( - base::android::AttachCurrentThread(), java_delegate_.obj()); + base::android::AttachCurrentThread(), java_delegate_); } infobars::InfoBarDelegate::InfoBarIdentifier @@ -175,7 +173,7 @@ bool PermissionUpdateInfoBarDelegate::Accept() { Java_PermissionUpdateInfoBarDelegate_requestPermissions( - base::android::AttachCurrentThread(), java_delegate_.obj()); + base::android::AttachCurrentThread(), java_delegate_); return false; }
diff --git a/chrome/browser/platform_util_android.cc b/chrome/browser/platform_util_android.cc index 1880a8e..205272d47 100644 --- a/chrome/browser/platform_util_android.cc +++ b/chrome/browser/platform_util_android.cc
@@ -33,7 +33,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_url = base::android::ConvertUTF8ToJavaString(env, url.spec()); - Java_PlatformUtil_launchExternalProtocol(env, j_url.obj()); + Java_PlatformUtil_launchExternalProtocol(env, j_url); } gfx::NativeWindow GetTopLevel(gfx::NativeView view) {
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc index a4fc11b..2c7387d9 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc
@@ -167,6 +167,10 @@ prefs::kMediaRouterFirstRunFlowAcknowledged, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); + registry->RegisterBooleanPref( + prefs::kMediaRouterAlwaysShowActionIcon, + false, + user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); #endif #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/profiles/profile_android.cc b/chrome/browser/profiles/profile_android.cc index 2a49844..f141400 100644 --- a/chrome/browser/profiles/profile_android.cc +++ b/chrome/browser/profiles/profile_android.cc
@@ -119,7 +119,7 @@ } ProfileAndroid::~ProfileAndroid() { - Java_Profile_onNativeDestroyed(AttachCurrentThread(), obj_.obj()); + Java_Profile_onNativeDestroyed(AttachCurrentThread(), obj_); } base::android::ScopedJavaLocalRef<jobject> ProfileAndroid::GetJavaObject() {
diff --git a/chrome/browser/resources/chromeos/chromevox/BUILD.gn b/chrome/browser/resources/chromeos/chromevox/BUILD.gn index 1be3800..276afb0 100644 --- a/chrome/browser/resources/chromeos/chromevox/BUILD.gn +++ b/chrome/browser/resources/chromeos/chromevox/BUILD.gn
@@ -140,6 +140,7 @@ "cvox2/background/desktop_automation_handler.js", "cvox2/background/earcon_engine.js", "cvox2/background/editing.js", + "cvox2/background/find_handler.js", "cvox2/background/i_search.js", "cvox2/background/keyboard_handler.js", "cvox2/background/live_regions.js",
diff --git a/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js b/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js index a946fa8d..3abd47b 100644 --- a/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js +++ b/chrome/browser/resources/chromeos/chromevox/common/chrome_extension_externs.js
@@ -632,6 +632,13 @@ /** @type {number} */ chrome.automation.AutomationNode.prototype.hierarchicalLevel; +/** @type {Array<number>} */ +chrome.automation.AutomationNode.prototype.markerTypes; +/** @type {Array<number>} */ +chrome.automation.AutomationNode.prototype.markerStarts; +/** @type {Array<number>} */ +chrome.automation.AutomationNode.prototype.markerEnds; + /** * @extends {chrome.automation.AutomationNode} * @constructor
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js index 55e00dc..cab9cbb 100644 --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js
@@ -14,6 +14,7 @@ goog.require('BackgroundKeyboardHandler'); goog.require('ChromeVoxState'); goog.require('CommandHandler'); +goog.require('FindHandler'); goog.require('LiveRegions'); goog.require('NextEarcons'); goog.require('Notifications'); @@ -234,6 +235,7 @@ onModeChanged_: function(newMode, oldMode) { this.keyboardHandler_.onModeChanged(newMode, oldMode); CommandHandler.onModeChanged(newMode, oldMode); + FindHandler.onModeChanged(newMode, oldMode); Notifications.onModeChange(newMode, oldMode); if (newMode == ChromeVoxMode.CLASSIC)
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/find_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/find_handler.js new file mode 100644 index 0000000..5aa0a7c --- /dev/null +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/find_handler.js
@@ -0,0 +1,56 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +/** + * @fileoverview Handles output for Chrome's built-in find. + */ +goog.provide('FindHandler'); + +goog.require('Output'); + +/** + * Responds to mode changes. + * @param {ChromeVoxMode} newMode + * @param {?ChromeVoxMode} oldMode Can be null at startup when no range was + * previously set. + */ +FindHandler.onModeChanged = function(newMode, oldMode) { + if (newMode == ChromeVoxMode.FORCE_NEXT) + FindHandler.init_(); + else + FindHandler.uninit_(); +}; + +/** + * Initializes this module. + * @private + */ +FindHandler.init_ = function() { + chrome.automation.addTreeChangeObserver( + 'textMarkerChanges', FindHandler.onTextMatch_); +}; + +/** + * Uninitializes this module. + * @private + */ +FindHandler.uninit_ = function() { + chrome.automation.removeTreeChangeObserver(FindHandler.onTextMatch_); +}; + +/** + * @param {Object} evt + * @private + */ +FindHandler.onTextMatch_ = function(evt) { + if (!evt.target.markerTypes.some(function(markerType) { + return markerType & 4 /* Text match */; + })) + return; + + var range = cursors.Range.fromNode(evt.target); + ChromeVoxState.instance.setCurrentRange(range); + new Output() + .withRichSpeechAndBraille(range, null, Output.EventType.NAVIGATE) + .go(); +};
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html index 8e88c1c..46063e85 100644 --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html
@@ -14,6 +14,7 @@ <link rel="import" href="/site_settings/constants.html"> <link rel="import" href="/site_settings/media_picker.html"> <link rel="import" href="/site_settings/protocol_handlers.html"> +<link rel="import" href="/site_settings/usb_devices.html"> <link rel="import" href="/site_settings/site_data.html"> <link rel="import" href="/site_settings_page/site_settings_page.html"> @@ -286,6 +287,11 @@ </site-settings-category> </settings-subpage> </template> + <template is="dom-if" route-path="/siteSettings/usbDevices" no-search> + <settings-subpage page-title="$i18n{siteSettingsUsbDevices}"> + <usb-devices></usb-devices> + </settings-subpage> + </template> <template is="dom-if" name="site-details" no-search> <settings-subpage page-title="[[selectedSite.originForDisplay]]">
diff --git a/chrome/browser/resources/settings/route.js b/chrome/browser/resources/settings/route.js index 5d45fd8..6114539 100644 --- a/chrome/browser/resources/settings/route.js +++ b/chrome/browser/resources/settings/route.js
@@ -152,6 +152,7 @@ r.SITE_SETTINGS_POPUPS = r.SITE_SETTINGS.createChild('popups'); r.SITE_SETTINGS_UNSANDBOXED_PLUGINS = r.SITE_SETTINGS.createChild('unsandboxedPlugins'); + r.SITE_SETTINGS_USB_DEVICES = r.SITE_SETTINGS.createChild('usbDevices'); r.SITE_SETTINGS_AUTOMATIC_DOWNLOADS_DETAILS = r.SITE_SETTINGS_AUTOMATIC_DOWNLOADS.createChild('details');
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd index 1e8b0e9a..fe881287 100644 --- a/chrome/browser/resources/settings/settings_resources.grd +++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -881,6 +881,12 @@ <structure name="IDR_SETTINGS_SETTINGS_JS" file="settings.js" type="chrome_html" /> + <structure name="IDR_SETTINGS_USB_DEVICES_HTML" + file="site_settings/usb_devices.html" + type="chrome_html" /> + <structure name="IDR_SETTINGS_USB_DEVICES_JS" + file="site_settings/usb_devices.js" + type="chrome_html" /> <structure name="IDR_SETTINGS_WEBSITE_USAGE_PRIVATE_API_HTML" file="site_settings/website_usage_private_api.html" type="chrome_html" />
diff --git a/chrome/browser/resources/settings/site_settings/compiled_resources2.gyp b/chrome/browser/resources/settings/site_settings/compiled_resources2.gyp index f19480d..e396780 100644 --- a/chrome/browser/resources/settings/site_settings/compiled_resources2.gyp +++ b/chrome/browser/resources/settings/site_settings/compiled_resources2.gyp
@@ -59,6 +59,14 @@ 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], }, { + 'target_name': 'usb_devices', + 'dependencies': [ + '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:web_ui_listener_behavior', + 'site_settings_behavior', + ], + 'includes': ['../../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { 'target_name': 'site_data', 'dependencies': [ '<(DEPTH)/ui/webui/resources/js/compiled_resources2.gyp:web_ui_listener_behavior',
diff --git a/chrome/browser/resources/settings/site_settings/constants.js b/chrome/browser/resources/settings/site_settings/constants.js index f32a531..d321a60 100644 --- a/chrome/browser/resources/settings/site_settings/constants.js +++ b/chrome/browser/resources/settings/site_settings/constants.js
@@ -27,6 +27,7 @@ AUTOMATIC_DOWNLOADS: 'multiple-automatic-downloads', KEYGEN: 'keygen', BACKGROUND_SYNC: 'background-sync', + USB_DEVICES: 'usb-chooser-data', }; /**
diff --git a/chrome/browser/resources/settings/site_settings/protocol_handlers.html b/chrome/browser/resources/settings/site_settings/protocol_handlers.html index 19f7cf4..8b88ccc 100644 --- a/chrome/browser/resources/settings/site_settings/protocol_handlers.html +++ b/chrome/browser/resources/settings/site_settings/protocol_handlers.html
@@ -18,7 +18,7 @@ display: block; } - .protocol { + .site-settings-header { -webkit-margin-start: 20px; margin-bottom: 15px; margin-top: 15px; @@ -33,12 +33,14 @@ </div> <template is="dom-repeat" items="[[protocols]]" as="protocol"> - <div class="protocol">[[protocol.protocol]]</div> + <div class="site-settings-header">[[protocol.protocol]]</div> <div class="list-frame menu-content vertical-list"> <template is="dom-repeat" items="[[protocol.handlers]]"> <div class="list-item"> + <div class="favicon-image" style$="[[computeSiteIcon(item.host)]]"> + </div> <div class="middle" > <div>[[item.host]]</div> <div class="secondary"
diff --git a/chrome/browser/resources/settings/site_settings/site_list.js b/chrome/browser/resources/settings/site_settings/site_list.js index 8b4aeb30..81e41ec 100644 --- a/chrome/browser/resources/settings/site_settings/site_list.js +++ b/chrome/browser/resources/settings/site_settings/site_list.js
@@ -254,9 +254,11 @@ var promiseList = []; for (var type in settings.ContentSettingsTypes) { if (settings.ContentSettingsTypes[type] == - settings.ContentSettingsTypes.PROTOCOL_HANDLERS) { - // Protocol handlers don't have data stored the way all the other - // categories do. + settings.ContentSettingsTypes.PROTOCOL_HANDLERS || + settings.ContentSettingsTypes[type] == + settings.ContentSettingsTypes.USB_DEVICES) { + // Protocol handlers and USB devices don't have data stored the way all + // the other categories do. continue; }
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js index 21042894..b3b57a5e 100644 --- a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js +++ b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
@@ -100,6 +100,8 @@ return 'handlers'; case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS: return 'unsandboxed-plugins'; + case settings.ContentSettingsTypes.USB_DEVICES: + return 'usb-devices'; default: return ''; } @@ -141,6 +143,8 @@ return settings.Route.SITE_SETTINGS_HANDLERS; case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS: return settings.Route.SITE_SETTINGS_UNSANDBOXED_PLUGINS; + case settings.ContentSettingsTypes.USB_DEVICES: + return settings.Route.SITE_SETTINGS_USB_DEVICES; } assertNotReached(); }, @@ -223,6 +227,8 @@ return 'settings:open-with'; case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS: return 'cr:extension'; + case settings.ContentSettingsTypes.USB_DEVICES: + return 'settings:usb'; default: assertNotReached('Invalid category: ' + category); return ''; @@ -269,6 +275,8 @@ return loadTimeData.getString('siteSettingsHandlers'); case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS: return loadTimeData.getString('siteSettingsUnsandboxedPlugins'); + case settings.ContentSettingsTypes.USB_DEVICES: + return loadTimeData.getString('siteSettingsUsbDevices'); default: assertNotReached('Invalid category: ' + category); return '';
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js b/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js index 37fcce6..bf037b46 100644 --- a/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js +++ b/chrome/browser/resources/settings/site_settings/site_settings_prefs_browser_proxy.js
@@ -46,6 +46,24 @@ */ var ProtocolHandlerEntry; +/** + * @typedef {{name: string, + * product-id: Number, + * serial-number: string, + * vendor-id: Number}} + */ +var UsbDeviceDetails; + +/** + * @typedef {{embeddingOrigin: string, + * object: UsbDeviceDetails, + * objectName: string, + * origin: string, + * setting: string, + * source: string}} + */ +var UsbDeviceEntry; + cr.define('settings', function() { /** @interface */ function SiteSettingsPrefsBrowserProxy() {} @@ -160,6 +178,22 @@ * @param {string} url The url to delete. */ removeProtocolHandler: function(protocol, url) {}, + + /** + * Fetches a list of all USB devices and the sites permitted to use them. + * @return {!Promise<Array<UsbDeviceEntry>>} The list of USB devices. + */ + fetchUsbDevices: function() {}, + + /** + * Removes a particular USB device object permission by origin and embedding + * origin. + * @param {string} origin The origin to look up the permission for. + * @param {string} embeddingOrigin the embedding origin to look up. + * @param {UsbDeviceDetails} usbDevice The USB device to revoke permission + * for. + */ + removeUsbDevice: function(origin, embeddingOrigin, usbDevice) {}, }; /** @@ -250,6 +284,16 @@ removeProtocolHandler: function(protocol, url) { chrome.send('removeHandler', [[protocol, url]]); }, + + /** @override */ + fetchUsbDevices: function() { + return cr.sendWithPromise('fetchUsbDevices'); + }, + + /** @override */ + removeUsbDevice: function(origin, embeddingOrigin, usbDevice) { + chrome.send('removeUsbDevice', [origin, embeddingOrigin, usbDevice]); + }, }; return {
diff --git a/chrome/browser/resources/settings/site_settings/usb_devices.html b/chrome/browser/resources/settings/site_settings/usb_devices.html new file mode 100644 index 0000000..696c7e0 --- /dev/null +++ b/chrome/browser/resources/settings/site_settings/usb_devices.html
@@ -0,0 +1,51 @@ +<link rel="import" href="chrome://resources/html/polymer.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-item.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-menu/paper-menu.html"> +<link rel="import" href="chrome://resources/polymer/v1_0/paper-menu-button/paper-menu-button.html"> +<link rel="import" href="/i18n_setup.html"> +<link rel="import" href="/settings_shared_css.html"> +<link rel="import" href="/site_settings/site_settings_behavior.html"> +<link rel="import" href="/site_settings/site_settings_prefs_browser_proxy.html"> + +<dom-module id="usb-devices"> + <template> + <style include="settings-shared"> + :host { + display: block; + } + + .site-settings-header { + -webkit-margin-start: 20px; + margin-bottom: 15px; + margin-top: 15px; + } + </style> + + <template is="dom-repeat" items="[[devices]]"> + <div class="site-settings-header">[[item.objectName]]</div> + + <div class="list-frame menu-content vertical-list"> + <div class="list-item"> + <div class="favicon-image" + style$="[[computeSiteIcon(item.origin)]]"></div> + <div class="middle">[[item.origin]]</div> + <paper-menu-button> + <paper-icon-button icon="cr:more-vert" + class="dropdown-trigger"> + </paper-icon-button> + <paper-menu id="actionMenu" class="dropdown-content" + on-iron-activate="onActionMenuIronActivate_" + attr-for-selected="menu-value"> + <paper-item menu-value$="[[menuActions_.REMOVE]]"> + $i18n{handlerRemove} + </paper-item> + </paper-menu> + </paper-menu-button> + </div> + </div> + </template> + + </template> + <script src="usb_devices.js"></script> +</dom-module>
diff --git a/chrome/browser/resources/settings/site_settings/usb_devices.js b/chrome/browser/resources/settings/site_settings/usb_devices.js new file mode 100644 index 0000000..836bdf6 --- /dev/null +++ b/chrome/browser/resources/settings/site_settings/usb_devices.js
@@ -0,0 +1,49 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/** + * @fileoverview + * 'usb-devices' is the polymer element for showing the USB Devices category + * under Site Settings. + */ + +Polymer({ + is: 'usb-devices', + + behaviors: [SiteSettingsBehavior], + + properties: { + /** + * A list of all USB devices. + * @type {Array<UsbDeviceEntry>} + */ + devices: Array, + }, + + ready: function() { + this.fetchUsbDevices_(); + }, + + /** + * Fetch the list of USB devices and update the list. + * @private + */ + fetchUsbDevices_: function() { + this.browserProxy.fetchUsbDevices().then(function(deviceList) { + this.devices = deviceList; + }.bind(this)); + }, + + /** + * A handler when an action is selected in the action menu. + * @param {!{model: !{item: UsbDeviceEntry}}} event + * @private + */ + onActionMenuIronActivate_: function(event) { + var item = event.model.item; + this.browserProxy.removeUsbDevice( + item.origin, item.embeddingOrigin, item.object); + this.fetchUsbDevices_(); + }, +});
diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html index b314271..117c7df 100644 --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.html +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.html
@@ -159,6 +159,14 @@ <div id="handlers" class="secondary"></div> </div> </div> + <div class="settings-box" category$="[[ContentSettingsTypes.USB_DEVICES]]" + on-tap="onTapCategory"> + <iron-icon icon="[[computeIconForContentCategory( + ContentSettingsTypes.USB_DEVICES)]]"></iron-icon> + <div class="middle"> + [[computeTitleForContentCategory(ContentSettingsTypes.USB_DEVICES)]] + </div> + </div> </template> <script src="site_settings_page.js"></script> </dom-module>
diff --git a/chrome/browser/search_engines/template_url_service_android.cc b/chrome/browser/search_engines/template_url_service_android.cc index f56f756..c18a4ec5 100644 --- a/chrome/browser/search_engines/template_url_service_android.cc +++ b/chrome/browser/search_engines/template_url_service_android.cc
@@ -133,10 +133,8 @@ return ScopedJavaLocalRef<jobject>(); return Java_TemplateUrl_create( - env, - index, - base::android::ConvertUTF16ToJavaString( - env, template_url->short_name()).obj()); + env, index, + base::android::ConvertUTF16ToJavaString(env, template_url->short_name())); } bool TemplateUrlServiceAndroid::IsPrepopulatedTemplate(TemplateURL* url) { @@ -149,8 +147,8 @@ if (weak_java_obj_.get(env).is_null()) return; - Java_TemplateUrlService_templateUrlServiceLoaded( - env, weak_java_obj_.get(env).obj()); + Java_TemplateUrlService_templateUrlServiceLoaded(env, + weak_java_obj_.get(env)); } void TemplateUrlServiceAndroid::OnTemplateURLServiceChanged() { @@ -158,8 +156,8 @@ if (weak_java_obj_.get(env).is_null()) return; - Java_TemplateUrlService_onTemplateURLServiceChanged( - env, weak_java_obj_.get(env).obj()); + Java_TemplateUrlService_onTemplateURLServiceChanged(env, + weak_java_obj_.get(env)); } base::android::ScopedJavaLocalRef<jstring>
diff --git a/chrome/browser/signin/oauth2_token_service_delegate_android.cc b/chrome/browser/signin/oauth2_token_service_delegate_android.cc index e88f5222..4982b26 100644 --- a/chrome/browser/signin/oauth2_token_service_delegate_android.cc +++ b/chrome/browser/signin/oauth2_token_service_delegate_android.cc
@@ -95,8 +95,8 @@ // Call into Java to get a new token. Java_OAuth2TokenService_getOAuth2AuthToken( - env, base::android::GetApplicationContext(), j_username.obj(), - j_scope.obj(), reinterpret_cast<intptr_t>(heap_callback.release())); + env, base::android::GetApplicationContext(), j_username, j_scope, + reinterpret_cast<intptr_t>(heap_callback.release())); } void AndroidAccessTokenFetcher::CancelRequest() { @@ -170,12 +170,12 @@ ScopedJavaLocalRef<jobjectArray> java_accounts( base::android::ToJavaArrayOfStrings(env, accounts_id)); Java_OAuth2TokenService_saveStoredAccounts( - env, base::android::GetApplicationContext(), java_accounts.obj()); + env, base::android::GetApplicationContext(), java_accounts); } if (!is_testing_profile_) { Java_OAuth2TokenService_validateAccounts( - AttachCurrentThread(), java_ref_.obj(), + AttachCurrentThread(), java_ref_, base::android::GetApplicationContext(), JNI_TRUE); } } @@ -214,7 +214,7 @@ ConvertUTF8ToJavaString(env, account_name); jboolean refresh_token_is_available = Java_OAuth2TokenService_hasOAuth2RefreshToken( - env, base::android::GetApplicationContext(), j_account_id.obj()); + env, base::android::GetApplicationContext(), j_account_id); return refresh_token_is_available == JNI_TRUE; } @@ -285,7 +285,7 @@ ScopedJavaLocalRef<jstring> j_access_token = ConvertUTF8ToJavaString(env, access_token); Java_OAuth2TokenService_invalidateOAuth2AuthToken( - env, base::android::GetApplicationContext(), j_access_token.obj()); + env, base::android::GetApplicationContext(), j_access_token); } void OAuth2TokenServiceDelegateAndroid::ValidateAccounts( @@ -347,7 +347,7 @@ // Save the current accounts in the token service before calling // FireRefreshToken* methods. Java_OAuth2TokenService_saveStoredAccounts( - env, base::android::GetApplicationContext(), java_accounts.obj()); + env, base::android::GetApplicationContext(), java_accounts); for (const std::string& refreshed_id : refreshed_ids) FireRefreshTokenAvailable(refreshed_id); @@ -449,8 +449,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_account_name = ConvertUTF8ToJavaString(env, account_name); - Java_OAuth2TokenService_notifyRefreshTokenAvailable(env, java_ref_.obj(), - j_account_name.obj()); + Java_OAuth2TokenService_notifyRefreshTokenAvailable(env, java_ref_, + j_account_name); OAuth2TokenServiceDelegate::FireRefreshTokenAvailable(account_id); } @@ -474,8 +474,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_account_name = ConvertUTF8ToJavaString(env, account_name); - Java_OAuth2TokenService_notifyRefreshTokenRevoked(env, java_ref_.obj(), - j_account_name.obj()); + Java_OAuth2TokenService_notifyRefreshTokenRevoked(env, java_ref_, + j_account_name); } else { // Current prognosis is that we have an unmigrated account which is due for // deletion. Record a histogram to debug this. @@ -498,7 +498,7 @@ void OAuth2TokenServiceDelegateAndroid::FireRefreshTokensLoaded() { DVLOG(1) << "OAuth2TokenServiceDelegateAndroid::FireRefreshTokensLoaded"; JNIEnv* env = AttachCurrentThread(); - Java_OAuth2TokenService_notifyRefreshTokensLoaded(env, java_ref_.obj()); + Java_OAuth2TokenService_notifyRefreshTokensLoaded(env, java_ref_); OAuth2TokenServiceDelegate::FireRefreshTokensLoaded(); } @@ -513,7 +513,7 @@ ScopedJavaLocalRef<jobjectArray> java_accounts( base::android::ToJavaArrayOfStrings(env, std::vector<std::string>())); Java_OAuth2TokenService_saveStoredAccounts( - env, base::android::GetApplicationContext(), java_accounts.obj()); + env, base::android::GetApplicationContext(), java_accounts); for (const std::string& account : accounts_to_revoke) FireRefreshTokenRevoked(account);
diff --git a/chrome/browser/speech/tts_android.cc b/chrome/browser/speech/tts_android.cc index 18a4e1be..1b558e41 100644 --- a/chrome/browser/speech/tts_android.cc +++ b/chrome/browser/speech/tts_android.cc
@@ -33,7 +33,7 @@ TtsPlatformImplAndroid::~TtsPlatformImplAndroid() { JNIEnv* env = AttachCurrentThread(); - Java_TtsPlatformImpl_destroy(env, java_ref_.obj()); + Java_TtsPlatformImpl_destroy(env, java_ref_); } bool TtsPlatformImplAndroid::PlatformImplAvailable() { @@ -48,9 +48,9 @@ const UtteranceContinuousParameters& params) { JNIEnv* env = AttachCurrentThread(); jboolean success = Java_TtsPlatformImpl_speak( - env, java_ref_.obj(), utterance_id, - base::android::ConvertUTF8ToJavaString(env, utterance).obj(), - base::android::ConvertUTF8ToJavaString(env, lang).obj(), params.rate, + env, java_ref_, utterance_id, + base::android::ConvertUTF8ToJavaString(env, utterance), + base::android::ConvertUTF8ToJavaString(env, lang), params.rate, params.pitch, params.volume); if (!success) return false; @@ -62,7 +62,7 @@ bool TtsPlatformImplAndroid::StopSpeaking() { JNIEnv* env = AttachCurrentThread(); - Java_TtsPlatformImpl_stop(env, java_ref_.obj()); + Java_TtsPlatformImpl_stop(env, java_ref_); utterance_id_ = 0; utterance_.clear(); return true; @@ -82,18 +82,18 @@ void TtsPlatformImplAndroid::GetVoices( std::vector<VoiceData>* out_voices) { JNIEnv* env = AttachCurrentThread(); - if (!Java_TtsPlatformImpl_isInitialized(env, java_ref_.obj())) + if (!Java_TtsPlatformImpl_isInitialized(env, java_ref_)) return; - int count = Java_TtsPlatformImpl_getVoiceCount(env, java_ref_.obj()); + int count = Java_TtsPlatformImpl_getVoiceCount(env, java_ref_); for (int i = 0; i < count; ++i) { out_voices->push_back(VoiceData()); VoiceData& data = out_voices->back(); data.native = true; data.name = base::android::ConvertJavaStringToUTF8( - Java_TtsPlatformImpl_getVoiceName(env, java_ref_.obj(), i)); + Java_TtsPlatformImpl_getVoiceName(env, java_ref_, i)); data.lang = base::android::ConvertJavaStringToUTF8( - Java_TtsPlatformImpl_getVoiceLanguage(env, java_ref_.obj(), i)); + Java_TtsPlatformImpl_getVoiceLanguage(env, java_ref_, i)); data.gender = TTS_GENDER_NONE; data.events.insert(TTS_EVENT_START); data.events.insert(TTS_EVENT_END);
diff --git a/chrome/browser/spellchecker/spellchecker_session_bridge_android.cc b/chrome/browser/spellchecker/spellchecker_session_bridge_android.cc index 3392176..e90b0351 100644 --- a/chrome/browser/spellchecker/spellchecker_session_bridge_android.cc +++ b/chrome/browser/spellchecker/spellchecker_session_bridge_android.cc
@@ -61,8 +61,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_SpellCheckerSessionBridge_requestTextCheck( - env, java_object_.obj(), - base::android::ConvertUTF16ToJavaString(env, text).obj()); + env, java_object_, base::android::ConvertUTF16ToJavaString(env, text)); } void SpellCheckerSessionBridge::ProcessSpellCheckResults( @@ -95,9 +94,8 @@ if (active_request_) { JNIEnv* env = base::android::AttachCurrentThread(); Java_SpellCheckerSessionBridge_requestTextCheck( - env, java_object_.obj(), - base::android::ConvertUTF16ToJavaString(env, active_request_->text) - .obj()); + env, java_object_, + base::android::ConvertUTF16ToJavaString(env, active_request_->text)); } }
diff --git a/chrome/browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc b/chrome/browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc index 01fd20ef..9ea0cc1 100644 --- a/chrome/browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc +++ b/chrome/browser/supervised_user/child_accounts/child_account_feedback_reporter_android.cc
@@ -29,5 +29,5 @@ ScopedJavaLocalRef<jstring> jurl = base::android::ConvertUTF8ToJavaString(env, url.spec()); Java_ChildAccountFeedbackReporter_reportFeedbackWithWindow( - env, window->GetJavaObject().obj(), jdesc.obj(), jurl.obj()); + env, window->GetJavaObject(), jdesc, jurl); }
diff --git a/chrome/browser/supervised_user/supervised_user_content_provider_android.cc b/chrome/browser/supervised_user/supervised_user_content_provider_android.cc index 88b9027..e328d08 100644 --- a/chrome/browser/supervised_user/supervised_user_content_provider_android.cc +++ b/chrome/browser/supervised_user/supervised_user_content_provider_android.cc
@@ -33,7 +33,7 @@ private: void OnSiteListUpdated() override { Java_SupervisedUserContentProvider_onSupervisedUserFilterUpdated( - AttachCurrentThread(), java_content_provider_.obj()); + AttachCurrentThread(), java_content_provider_); } ScopedJavaGlobalRef<jobject> java_content_provider_; }; @@ -71,7 +71,7 @@ const JavaParamRef<jstring>& url) { if (!profile_->IsSupervised()) { // User isn't supervised - Java_SupervisedUserQueryReply_onQueryComplete(env, query_result_jobj.obj()); + Java_SupervisedUserQueryReply_onQueryComplete(env, query_result_jobj); return; } SupervisedUserService* supervised_user_service = @@ -108,33 +108,28 @@ bool /* uncertain */) { if (behavior != SupervisedUserURLFilter::BLOCK) { Java_SupervisedUserQueryReply_onQueryComplete(AttachCurrentThread(), - query_reply_jobj.obj()); + query_reply_jobj); } else { JNIEnv* env = AttachCurrentThread(); SupervisedUserService* service = SupervisedUserServiceFactory::GetForProfile(profile_); Java_SupervisedUserQueryReply_onQueryFailed( - env, query_reply_jobj.obj(), reason, service->AccessRequestsEnabled(), + env, query_reply_jobj, reason, service->AccessRequestsEnabled(), profile_->IsChild(), base::android::ConvertUTF8ToJavaString( env, profile_->GetPrefs()->GetString( - prefs::kSupervisedUserCustodianProfileImageURL)) - .obj(), + prefs::kSupervisedUserCustodianProfileImageURL)), base::android::ConvertUTF8ToJavaString( env, profile_->GetPrefs()->GetString( - prefs::kSupervisedUserSecondCustodianProfileImageURL)) - .obj(), - base::android::ConvertUTF8ToJavaString(env, service->GetCustodianName()) - .obj(), + prefs::kSupervisedUserSecondCustodianProfileImageURL)), + base::android::ConvertUTF8ToJavaString(env, + service->GetCustodianName()), base::android::ConvertUTF8ToJavaString( - env, service->GetCustodianEmailAddress()) - .obj(), + env, service->GetCustodianEmailAddress()), base::android::ConvertUTF8ToJavaString( - env, service->GetSecondCustodianName()) - .obj(), + env, service->GetSecondCustodianName()), base::android::ConvertUTF8ToJavaString( - env, service->GetSecondCustodianEmailAddress()) - .obj()); + env, service->GetSecondCustodianEmailAddress())); } } @@ -153,7 +148,7 @@ ScopedJavaGlobalRef<jobject> insert_reply_jobj, bool sent_ok) { Java_SupervisedUserInsertReply_onInsertRequestSendComplete( - AttachCurrentThread(), insert_reply_jobj.obj(), sent_ok); + AttachCurrentThread(), insert_reply_jobj, sent_ok); } bool SupervisedUserContentProvider::Register(JNIEnv* env) {
diff --git a/chrome/browser/sync/profile_sync_service_android.cc b/chrome/browser/sync/profile_sync_service_android.cc index 39717cb..99560d8 100644 --- a/chrome/browser/sync/profile_sync_service_android.cc +++ b/chrome/browser/sync/profile_sync_service_android.cc
@@ -67,9 +67,7 @@ ScopedJavaLocalRef<jstring> java_json_string = ConvertUTF8ToJavaString(env, json_string); - Java_ProfileSyncService_onGetAllNodesResult(env, - callback.obj(), - java_json_string.obj()); + Java_ProfileSyncService_onGetAllNodesResult(env, callback, java_json_string); } ScopedJavaLocalRef<jintArray> ModelTypeSetToJavaIntArray( @@ -130,14 +128,14 @@ // Notify the java world that our sync state has changed. JNIEnv* env = AttachCurrentThread(); Java_ProfileSyncService_syncStateChanged( - env, weak_java_profile_sync_service_.get(env).obj()); + env, weak_java_profile_sync_service_.get(env)); } bool ProfileSyncServiceAndroid::IsSyncAllowedByAndroid() const { DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); return Java_ProfileSyncService_isMasterSyncEnabled( - env, weak_java_profile_sync_service_.get(env).obj()); + env, weak_java_profile_sync_service_.get(env)); } // Pure ProfileSyncService calls.
diff --git a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc index 01592b4..e2a4bf2 100644 --- a/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc +++ b/chrome/browser/ui/android/autofill/autofill_keyboard_accessory_view.cc
@@ -39,8 +39,8 @@ Java_AutofillKeyboardAccessoryBridge_addToAutofillSuggestionArray( env, data_array, position, - base::android::ConvertUTF16ToJavaString(env, suggestion.value).obj(), - base::android::ConvertUTF16ToJavaString(env, suggestion.label).obj(), + base::android::ConvertUTF16ToJavaString(env, suggestion.value), + base::android::ConvertUTF16ToJavaString(env, suggestion.label), android_icon_id, suggestion.frontend_id, deletable); } @@ -55,8 +55,8 @@ AutofillKeyboardAccessoryView::~AutofillKeyboardAccessoryView() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer( - env, java_object_.obj()); + Java_AutofillKeyboardAccessoryBridge_resetNativeViewPointer(env, + java_object_); } void AutofillKeyboardAccessoryView::Show() { @@ -64,9 +64,8 @@ ui::ViewAndroid* view_android = controller_->container_view(); DCHECK(view_android); Java_AutofillKeyboardAccessoryBridge_init( - env, java_object_.obj(), - reinterpret_cast<intptr_t>(this), - view_android->GetWindowAndroid()->GetJavaObject().obj()); + env, java_object_, reinterpret_cast<intptr_t>(this), + view_android->GetWindowAndroid()->GetJavaObject()); UpdateBoundsAndRedrawPopup(); } @@ -74,7 +73,7 @@ void AutofillKeyboardAccessoryView::Hide() { controller_ = nullptr; JNIEnv* env = base::android::AttachCurrentThread(); - Java_AutofillKeyboardAccessoryBridge_dismiss(env, java_object_.obj()); + Java_AutofillKeyboardAccessoryBridge_dismiss(env, java_object_); } void AutofillKeyboardAccessoryView::UpdateBoundsAndRedrawPopup() { @@ -109,8 +108,8 @@ } } - Java_AutofillKeyboardAccessoryBridge_show( - env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); + Java_AutofillKeyboardAccessoryBridge_show(env, java_object_, data_array, + controller_->IsRTL()); } void AutofillKeyboardAccessoryView::SuggestionSelected( @@ -137,9 +136,9 @@ deleting_index_ = positions_[list_index]; Java_AutofillKeyboardAccessoryBridge_confirmDeletion( - env, java_object_.obj(), - base::android::ConvertUTF16ToJavaString(env, confirmation_title).obj(), - base::android::ConvertUTF16ToJavaString(env, confirmation_body).obj()); + env, java_object_, + base::android::ConvertUTF16ToJavaString(env, confirmation_title), + base::android::ConvertUTF16ToJavaString(env, confirmation_body)); } void AutofillKeyboardAccessoryView::DeletionConfirmed(
diff --git a/chrome/browser/ui/android/autofill/autofill_logger_android.cc b/chrome/browser/ui/android/autofill/autofill_logger_android.cc index 04be3a5..93805a7 100644 --- a/chrome/browser/ui/android/autofill/autofill_logger_android.cc +++ b/chrome/browser/ui/android/autofill/autofill_logger_android.cc
@@ -20,8 +20,8 @@ base::android::ConvertUTF16ToJavaString(env, profile_full_name); // On android, the fields are never previwed: it's safe to assume here that // the field has been filled. - Java_AutofillLogger_didFillField( - env, j_autofilled_value.obj(), j_profile_full_name.obj()); + Java_AutofillLogger_didFillField(env, j_autofilled_value, + j_profile_full_name); } } // namespace autofill
diff --git a/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc b/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc index d9a20c9..6f07cbc 100644 --- a/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc +++ b/chrome/browser/ui/android/autofill/autofill_popup_view_android.cc
@@ -45,8 +45,8 @@ return; java_object_.Reset(Java_AutofillPopupBridge_create( - env, view.obj(), reinterpret_cast<intptr_t>(this), - view_android->GetWindowAndroid()->GetJavaObject().obj())); + env, view, reinterpret_cast<intptr_t>(this), + view_android->GetWindowAndroid()->GetJavaObject())); UpdateBoundsAndRedrawPopup(); } @@ -55,7 +55,7 @@ controller_ = NULL; JNIEnv* env = base::android::AttachCurrentThread(); if (!java_object_.is_null()) { - Java_AutofillPopupBridge_dismiss(env, java_object_.obj()); + Java_AutofillPopupBridge_dismiss(env, java_object_); } else { // Hide() should delete |this| either via Java dismiss or directly. delete this; @@ -100,12 +100,12 @@ suggestion.frontend_id == POPUP_ITEM_ID_WARNING_MESSAGE || suggestion.frontend_id == POPUP_ITEM_ID_CREDIT_CARD_SIGNIN_PROMO; Java_AutofillPopupBridge_addToAutofillSuggestionArray( - env, data_array.obj(), i, value.obj(), label.obj(), android_icon_id, + env, data_array, i, value, label, android_icon_id, suggestion.frontend_id, deletable, is_label_multiline); } - Java_AutofillPopupBridge_show( - env, java_object_.obj(), data_array.obj(), controller_->IsRTL()); + Java_AutofillPopupBridge_show(env, java_object_, data_array, + controller_->IsRTL()); } void AutofillPopupViewAndroid::SuggestionSelected( @@ -132,12 +132,9 @@ deleting_index_ = list_index; Java_AutofillPopupBridge_confirmDeletion( - env, - java_object_.obj(), - base::android::ConvertUTF16ToJavaString( - env, confirmation_title).obj(), - base::android::ConvertUTF16ToJavaString( - env, confirmation_body).obj()); + env, java_object_, + base::android::ConvertUTF16ToJavaString(env, confirmation_title), + base::android::ConvertUTF16ToJavaString(env, confirmation_body)); } void AutofillPopupViewAndroid::DeletionConfirmed(
diff --git a/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc b/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc index 46c905f..91e98e4 100644 --- a/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc +++ b/chrome/browser/ui/android/autofill/card_unmask_prompt_view_android.cc
@@ -49,15 +49,14 @@ env, controller_->GetOkButtonLabel()); java_object_.Reset(Java_CardUnmaskBridge_create( - env, reinterpret_cast<intptr_t>(this), dialog_title.obj(), - instructions.obj(), confirm.obj(), - ResourceMapper::MapFromChromiumId(controller_->GetCvcImageRid()), + env, reinterpret_cast<intptr_t>(this), dialog_title, instructions, + confirm, ResourceMapper::MapFromChromiumId(controller_->GetCvcImageRid()), controller_->ShouldRequestExpirationDate(), - controller_->CanStoreLocally(), - controller_->GetStoreLocallyStartState(), - view_android->GetWindowAndroid()->GetJavaObject().obj())); + controller_->CanStoreLocally(), controller_->GetStoreLocallyStartState(), + controller_->GetSuccessMessageDuration().InMilliseconds(), + view_android->GetWindowAndroid()->GetJavaObject())); - Java_CardUnmaskBridge_show(env, java_object_.obj()); + Java_CardUnmaskBridge_show(env, java_object_); } bool CardUnmaskPromptViewAndroid::CheckUserInputValidity( @@ -86,12 +85,12 @@ JNIEnv* env, const JavaParamRef<jobject>& obj) { controller_->NewCardLinkClicked(); - Java_CardUnmaskBridge_update(env, java_object_.obj(), - base::android::ConvertUTF16ToJavaString( - env, controller_->GetWindowTitle()).obj(), - base::android::ConvertUTF16ToJavaString( - env, controller_->GetInstructionsMessage()).obj(), - controller_->ShouldRequestExpirationDate()); + Java_CardUnmaskBridge_update(env, java_object_, + base::android::ConvertUTF16ToJavaString( + env, controller_->GetWindowTitle()), + base::android::ConvertUTF16ToJavaString( + env, controller_->GetInstructionsMessage()), + controller_->ShouldRequestExpirationDate()); } void CardUnmaskPromptViewAndroid::PromptDismissed( @@ -103,12 +102,12 @@ void CardUnmaskPromptViewAndroid::ControllerGone() { controller_ = nullptr; JNIEnv* env = base::android::AttachCurrentThread(); - Java_CardUnmaskBridge_dismiss(env, java_object_.obj()); + Java_CardUnmaskBridge_dismiss(env, java_object_); } void CardUnmaskPromptViewAndroid::DisableAndWaitForVerification() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_CardUnmaskBridge_disableAndWaitForVerification(env, java_object_.obj()); + Java_CardUnmaskBridge_disableAndWaitForVerification(env, java_object_); } void CardUnmaskPromptViewAndroid::GotVerificationResult( @@ -119,8 +118,8 @@ if (!error_message.empty()) message = base::android::ConvertUTF16ToJavaString(env, error_message); - Java_CardUnmaskBridge_verificationFinished(env, java_object_.obj(), - message.obj(), allow_retry); + Java_CardUnmaskBridge_verificationFinished(env, java_object_, message, + allow_retry); } // static
diff --git a/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc b/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc index 48b3082..ff0beff9 100644 --- a/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc +++ b/chrome/browser/ui/android/autofill/credit_card_scanner_view_android.cc
@@ -27,7 +27,7 @@ base::android::ScopedJavaGlobalRef<jobject> java_object( Java_CreditCardScanner_create( env, 0, base::android::GetApplicationContext(), nullptr)); - return Java_CreditCardScanner_canScan(env, java_object.obj()); + return Java_CreditCardScanner_canScan(env, java_object); } // static @@ -51,8 +51,10 @@ base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this), base::android::GetApplicationContext(), - ViewAndroidHelper::FromWebContents(web_contents)->GetViewAndroid() - ->GetWindowAndroid()->GetJavaObject().obj())) {} + ViewAndroidHelper::FromWebContents(web_contents) + ->GetViewAndroid() + ->GetWindowAndroid() + ->GetJavaObject())) {} CreditCardScannerViewAndroid::~CreditCardScannerViewAndroid() {} @@ -75,7 +77,7 @@ void CreditCardScannerViewAndroid::Show() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_CreditCardScanner_scan(env, java_object_.obj()); + Java_CreditCardScanner_scan(env, java_object_); } } // namespace autofill
diff --git a/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc b/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc index 0f69e70..e995dc1 100644 --- a/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc +++ b/chrome/browser/ui/android/autofill/password_generation_popup_view_android.cc
@@ -69,8 +69,8 @@ return; JNIEnv* env = base::android::AttachCurrentThread(); java_object_.Reset(Java_PasswordGenerationPopupBridge_create( - env, view.obj(), reinterpret_cast<intptr_t>(this), - view_android->GetWindowAndroid()->GetJavaObject().obj())); + env, view, reinterpret_cast<intptr_t>(this), + view_android->GetWindowAndroid()->GetJavaObject())); UpdateBoundsAndRedrawPopup(); } @@ -79,7 +79,7 @@ controller_ = NULL; JNIEnv* env = base::android::AttachCurrentThread(); if (!java_object_.is_null()) { - Java_PasswordGenerationPopupBridge_hide(env, java_object_.obj()); + Java_PasswordGenerationPopupBridge_hide(env, java_object_); } else { // Hide() should delete |this| either via Java dismiss or directly. delete this; @@ -113,14 +113,8 @@ base::android::ConvertUTF16ToJavaString(env, controller_->HelpText()); Java_PasswordGenerationPopupBridge_show( - env, - java_object_.obj(), - controller_->IsRTL(), - controller_->display_password(), - password.obj(), - suggestion.obj(), - help.obj(), - controller_->HelpTextLinkRange().start(), + env, java_object_, controller_->IsRTL(), controller_->display_password(), + password, suggestion, help, controller_->HelpTextLinkRange().start(), controller_->HelpTextLinkRange().end()); }
diff --git a/chrome/browser/ui/android/bluetooth_chooser_android.cc b/chrome/browser/ui/android/bluetooth_chooser_android.cc index 164963c..8b7aebd3 100644 --- a/chrome/browser/ui/android/bluetooth_chooser_android.cc +++ b/chrome/browser/ui/android/bluetooth_chooser_android.cc
@@ -47,7 +47,7 @@ env, url_formatter::FormatUrlForSecurityDisplay(GURL(origin.Serialize()))); java_dialog_.Reset(Java_BluetoothChooserDialog_create( - env, window_android.obj(), origin_string.obj(), + env, window_android, origin_string, security_model_client->GetSecurityInfo().security_level, reinterpret_cast<intptr_t>(this))); } @@ -55,7 +55,7 @@ BluetoothChooserAndroid::~BluetoothChooserAndroid() { if (!java_dialog_.is_null()) { Java_BluetoothChooserDialog_closeDialog(AttachCurrentThread(), - java_dialog_.obj()); + java_dialog_); } } @@ -68,9 +68,9 @@ void BluetoothChooserAndroid::SetAdapterPresence(AdapterPresence presence) { JNIEnv* env = AttachCurrentThread(); if (presence != AdapterPresence::POWERED_ON) { - Java_BluetoothChooserDialog_notifyAdapterTurnedOff(env, java_dialog_.obj()); + Java_BluetoothChooserDialog_notifyAdapterTurnedOff(env, java_dialog_); } else { - Java_BluetoothChooserDialog_notifyAdapterTurnedOn(env, java_dialog_.obj()); + Java_BluetoothChooserDialog_notifyAdapterTurnedOn(env, java_dialog_); } } @@ -88,8 +88,8 @@ java_state = 2; break; } - Java_BluetoothChooserDialog_notifyDiscoveryState( - AttachCurrentThread(), java_dialog_.obj(), java_state); + Java_BluetoothChooserDialog_notifyDiscoveryState(AttachCurrentThread(), + java_dialog_, java_state); } void BluetoothChooserAndroid::AddOrUpdateDevice( @@ -105,15 +105,14 @@ ScopedJavaLocalRef<jstring> java_device_name = ConvertUTF16ToJavaString(env, device_name); Java_BluetoothChooserDialog_addOrUpdateDevice( - env, java_dialog_.obj(), java_device_id.obj(), java_device_name.obj()); + env, java_dialog_, java_device_id, java_device_name); } void BluetoothChooserAndroid::RemoveDevice(const std::string& device_id) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> java_device_id = ConvertUTF16ToJavaString(env, base::UTF8ToUTF16(device_id)); - Java_BluetoothChooserDialog_removeDevice(env, java_dialog_.obj(), - java_device_id.obj()); + Java_BluetoothChooserDialog_removeDevice(env, java_dialog_, java_device_id); } void BluetoothChooserAndroid::OnDialogFinished(
diff --git a/chrome/browser/ui/android/chrome_http_auth_handler.cc b/chrome/browser/ui/android/chrome_http_auth_handler.cc index fd484e8..08dbce7 100644 --- a/chrome/browser/ui/android/chrome_http_auth_handler.cc +++ b/chrome/browser/ui/android/chrome_http_auth_handler.cc
@@ -42,10 +42,8 @@ void ChromeHttpAuthHandler::ShowDialog(jobject window_android) { JNIEnv* env = AttachCurrentThread(); - Java_ChromeHttpAuthHandler_showDialog( - env, - java_chrome_http_auth_handler_.obj(), - window_android); + Java_ChromeHttpAuthHandler_showDialog(env, java_chrome_http_auth_handler_, + window_android); } void ChromeHttpAuthHandler::OnAutofillDataAvailable( @@ -58,8 +56,7 @@ ScopedJavaLocalRef<jstring> j_password = ConvertUTF16ToJavaString(env, password); Java_ChromeHttpAuthHandler_onAutofillDataAvailable( - env, java_chrome_http_auth_handler_.obj(), - j_username.obj(), j_password.obj()); + env, java_chrome_http_auth_handler_, j_username, j_password); } void ChromeHttpAuthHandler::SetAuth(JNIEnv* env,
diff --git a/chrome/browser/ui/android/connection_info_popup_android.cc b/chrome/browser/ui/android/connection_info_popup_android.cc index 9b0dea95..d38b571 100644 --- a/chrome/browser/ui/android/connection_info_popup_android.cc +++ b/chrome/browser/ui/android/connection_info_popup_android.cc
@@ -151,20 +151,15 @@ } Java_ConnectionInfoPopup_addCertificateSection( - env, - popup_jobject_.obj(), - icon_id, - ConvertUTF8ToJavaString(env, headline).obj(), - description.obj(), - ConvertUTF16ToJavaString(env, certificate_label).obj()); + env, popup_jobject_, icon_id, ConvertUTF8ToJavaString(env, headline), + description, ConvertUTF16ToJavaString(env, certificate_label)); if (identity_info.show_ssl_decision_revoke_button) { base::string16 reset_button_label = l10n_util::GetStringUTF16( IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON); Java_ConnectionInfoPopup_addResetCertDecisionsButton( - env, - popup_jobject_.obj(), - ConvertUTF16ToJavaString(env, reset_button_label).obj()); + env, popup_jobject_, + ConvertUTF16ToJavaString(env, reset_button_label)); } } @@ -175,16 +170,15 @@ ScopedJavaLocalRef<jstring> description = ConvertUTF8ToJavaString( env, identity_info.connection_status_description); - Java_ConnectionInfoPopup_addDescriptionSection( - env, popup_jobject_.obj(), icon_id, nullptr, description.obj()); + Java_ConnectionInfoPopup_addDescriptionSection(env, popup_jobject_, icon_id, + nullptr, description); } Java_ConnectionInfoPopup_addMoreInfoLink( - env, - popup_jobject_.obj(), + env, popup_jobject_, ConvertUTF8ToJavaString( - env, l10n_util::GetStringUTF8(IDS_PAGE_INFO_HELP_CENTER_LINK)).obj()); - Java_ConnectionInfoPopup_showDialog(env, popup_jobject_.obj()); + env, l10n_util::GetStringUTF8(IDS_PAGE_INFO_HELP_CENTER_LINK))); + Java_ConnectionInfoPopup_showDialog(env, popup_jobject_); } void ConnectionInfoPopupAndroid::SetCookieInfo(
diff --git a/chrome/browser/ui/android/context_menu_helper.cc b/chrome/browser/ui/android/context_menu_helper.cc index cc0ced1..6a77d32 100644 --- a/chrome/browser/ui/android/context_menu_helper.cc +++ b/chrome/browser/ui/android/context_menu_helper.cc
@@ -46,7 +46,7 @@ ContextMenuHelper::~ContextMenuHelper() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ContextMenuHelper_destroy(env, java_obj_.obj()); + Java_ContextMenuHelper_destroy(env, java_obj_); } bool ContextMenuHelper::ShowContextMenu( @@ -70,13 +70,13 @@ render_process_id_ = render_frame_host->GetProcess()->GetID(); return Java_ContextMenuHelper_showContextMenu( - env, java_obj_.obj(), jcontent_view_core.obj(), - ContextMenuHelper::CreateJavaContextMenuParams(params).obj()); + env, java_obj_, jcontent_view_core, + ContextMenuHelper::CreateJavaContextMenuParams(params)); } void ContextMenuHelper::SetPopulator(jobject jpopulator) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ContextMenuHelper_setPopulator(env, java_obj_.obj(), jpopulator); + Java_ContextMenuHelper_setPopulator(env, java_obj_, jpopulator); } base::android::ScopedJavaLocalRef<jobject> @@ -94,18 +94,16 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> jmenu_info = ContextMenuParamsAndroid::Java_ContextMenuParams_create( - env, - params.media_type, - ConvertUTF8ToJavaString(env, params.page_url.spec()).obj(), - ConvertUTF8ToJavaString(env, params.link_url.spec()).obj(), - ConvertUTF16ToJavaString(env, params.link_text).obj(), - ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()).obj(), - ConvertUTF8ToJavaString(env, params.src_url.spec()).obj(), - ConvertUTF16ToJavaString(env, params.title_text).obj(), + env, params.media_type, + ConvertUTF8ToJavaString(env, params.page_url.spec()), + ConvertUTF8ToJavaString(env, params.link_url.spec()), + ConvertUTF16ToJavaString(env, params.link_text), + ConvertUTF8ToJavaString(env, params.unfiltered_link_url.spec()), + ConvertUTF8ToJavaString(env, params.src_url.spec()), + ConvertUTF16ToJavaString(env, params.title_text), image_was_fetched_lo_fi, - ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()).obj(), - params.referrer_policy, - can_save); + ConvertUTF8ToJavaString(env, sanitizedReferrer.spec()), + params.referrer_policy, can_save); return jmenu_info; } @@ -172,11 +170,8 @@ env, reinterpret_cast<const uint8_t*>(thumbnail_data.data()), thumbnail_data.length()); - Java_ContextMenuHelper_onShareImageReceived( - env, - java_obj_.obj(), - jwindow_android.obj(), - j_bytes.obj()); + Java_ContextMenuHelper_onShareImageReceived(env, java_obj_, jwindow_android, + j_bytes); } bool RegisterContextMenuHelper(JNIEnv* env) {
diff --git a/chrome/browser/ui/android/infobars/app_banner_infobar_android.cc b/chrome/browser/ui/android/infobars/app_banner_infobar_android.cc index fbb3b71e..2d558e9 100644 --- a/chrome/browser/ui/android/infobars/app_banner_infobar_android.cc +++ b/chrome/browser/ui/android/infobars/app_banner_infobar_android.cc
@@ -45,10 +45,7 @@ base::android::ScopedJavaLocalRef<jobject> infobar; if (!japp_data_.is_null()) { infobar.Reset(Java_AppBannerInfoBarAndroid_createNativeAppInfoBar( - env, - app_title.obj(), - java_bitmap.obj(), - japp_data_.obj())); + env, app_title, java_bitmap, japp_data_)); } else { // Trim down the app URL to the domain and registry. std::string trimmed_url = @@ -60,10 +57,7 @@ base::android::ConvertUTF8ToJavaString(env, trimmed_url); infobar.Reset(Java_AppBannerInfoBarAndroid_createWebAppInfoBar( - env, - app_title.obj(), - java_bitmap.obj(), - app_url.obj())); + env, app_title, java_bitmap, app_url)); } java_infobar_.Reset(env, infobar.obj()); @@ -72,7 +66,7 @@ void AppBannerInfoBarAndroid::OnInstallStateChanged(int new_state) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_AppBannerInfoBarAndroid_onInstallStateChanged(env, java_infobar_.obj(), + Java_AppBannerInfoBarAndroid_onInstallStateChanged(env, java_infobar_, new_state); }
diff --git a/chrome/browser/ui/android/infobars/autofill_credit_card_filling_infobar.cc b/chrome/browser/ui/android/infobars/autofill_credit_card_filling_infobar.cc index 91215046..240b75b1 100644 --- a/chrome/browser/ui/android/infobars/autofill_credit_card_filling_infobar.cc +++ b/chrome/browser/ui/android/infobars/autofill_credit_card_filling_infobar.cc
@@ -40,24 +40,18 @@ base::android::ScopedJavaLocalRef<jobject> java_delegate = Java_AutofillCreditCardFillingInfoBar_create( env, reinterpret_cast<intptr_t>(this), GetEnumeratedIconId(), - java_bitmap.obj(), + java_bitmap, base::android::ConvertUTF16ToJavaString( + env, delegate->GetMessageText()), base::android::ConvertUTF16ToJavaString( - env, delegate->GetMessageText()) - .obj(), + env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK)), base::android::ConvertUTF16ToJavaString( - env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK)) - .obj(), - base::android::ConvertUTF16ToJavaString( - env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL)) - .obj()); + env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL))); Java_AutofillCreditCardFillingInfoBar_addDetail( - env, java_delegate.obj(), + env, java_delegate, ResourceMapper::MapFromChromiumId(delegate->issuer_icon_id()), - base::android::ConvertUTF16ToJavaString(env, delegate->card_label()) - .obj(), - base::android::ConvertUTF16ToJavaString(env, delegate->card_sub_label()) - .obj()); + base::android::ConvertUTF16ToJavaString(env, delegate->card_label()), + base::android::ConvertUTF16ToJavaString(env, delegate->card_sub_label())); return java_delegate; }
diff --git a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc index 27d79ba..79cf77ed 100644 --- a/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc +++ b/chrome/browser/ui/android/infobars/autofill_save_card_infobar.cc
@@ -61,32 +61,28 @@ base::android::ScopedJavaLocalRef<jobject> java_delegate = Java_AutofillSaveCardInfoBar_create( env, reinterpret_cast<intptr_t>(this), GetEnumeratedIconId(), - java_bitmap.obj(), + java_bitmap, base::android::ConvertUTF16ToJavaString( + env, delegate->GetMessageText()), + base::android::ConvertUTF16ToJavaString(env, delegate->GetLinkText()), base::android::ConvertUTF16ToJavaString( - env, delegate->GetMessageText()).obj(), + env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK)), base::android::ConvertUTF16ToJavaString( - env, delegate->GetLinkText()).obj(), - base::android::ConvertUTF16ToJavaString( - env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_OK)).obj(), - base::android::ConvertUTF16ToJavaString( - env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL)).obj()); + env, GetTextFor(ConfirmInfoBarDelegate::BUTTON_CANCEL))); Java_AutofillSaveCardInfoBar_addDetail( - env, java_delegate.obj(), + env, java_delegate, ResourceMapper::MapFromChromiumId(delegate->issuer_icon_id()), - base::android::ConvertUTF16ToJavaString( - env, delegate->card_label()).obj(), - base::android::ConvertUTF16ToJavaString( - env, delegate->card_sub_label()).obj()); + base::android::ConvertUTF16ToJavaString(env, delegate->card_label()), + base::android::ConvertUTF16ToJavaString(env, delegate->card_sub_label())); for (const auto& line : delegate->legal_messages()) { Java_AutofillSaveCardInfoBar_addLegalMessageLine( - env, java_delegate.obj(), - base::android::ConvertUTF16ToJavaString(env, line.text()).obj()); + env, java_delegate, + base::android::ConvertUTF16ToJavaString(env, line.text())); for (const auto& link : line.links()) { Java_AutofillSaveCardInfoBar_addLinkToLastLegalMessageLine( - env, java_delegate.obj(), link.range.start(), link.range.end(), - base::android::ConvertUTF8ToJavaString(env, link.url.spec()).obj()); + env, java_delegate, link.range.start(), link.range.end(), + base::android::ConvertUTF8ToJavaString(env, link.url.spec())); } }
diff --git a/chrome/browser/ui/android/infobars/confirm_infobar.cc b/chrome/browser/ui/android/infobars/confirm_infobar.cc index 99893ae6..9a76c7e 100644 --- a/chrome/browser/ui/android/infobars/confirm_infobar.cc +++ b/chrome/browser/ui/android/infobars/confirm_infobar.cc
@@ -56,9 +56,9 @@ java_bitmap = gfx::ConvertToJavaBitmap(delegate->GetIcon().ToSkBitmap()); } - return Java_ConfirmInfoBar_create( - env, GetEnumeratedIconId(), java_bitmap.obj(), message_text.obj(), - link_text.obj(), ok_button_text.obj(), cancel_button_text.obj()); + return Java_ConfirmInfoBar_create(env, GetEnumeratedIconId(), java_bitmap, + message_text, link_text, ok_button_text, + cancel_button_text); } ScopedJavaLocalRef<jobject> ConfirmInfoBar::GetWindowAndroid() {
diff --git a/chrome/browser/ui/android/infobars/download_overwrite_infobar.cc b/chrome/browser/ui/android/infobars/download_overwrite_infobar.cc index d7c5329..3eb9519 100644 --- a/chrome/browser/ui/android/infobars/download_overwrite_infobar.cc +++ b/chrome/browser/ui/android/infobars/download_overwrite_infobar.cc
@@ -42,8 +42,8 @@ ScopedJavaLocalRef<jstring> j_dir_full_path = base::android::ConvertUTF8ToJavaString(env, delegate->GetDirFullPath()); base::android::ScopedJavaLocalRef<jobject> java_infobar( - Java_DownloadOverwriteInfoBar_createInfoBar( - env, j_file_name.obj(), j_dir_name.obj(), j_dir_full_path.obj())); + Java_DownloadOverwriteInfoBar_createInfoBar(env, j_file_name, j_dir_name, + j_dir_full_path)); return java_infobar; }
diff --git a/chrome/browser/ui/android/infobars/generated_password_saved_infobar.cc b/chrome/browser/ui/android/infobars/generated_password_saved_infobar.cc index a050021..e6725d7 100644 --- a/chrome/browser/ui/android/infobars/generated_password_saved_infobar.cc +++ b/chrome/browser/ui/android/infobars/generated_password_saved_infobar.cc
@@ -37,13 +37,12 @@ static_cast<GeneratedPasswordSavedInfoBarDelegateAndroid*>(delegate()); return Java_GeneratedPasswordSavedInfoBarDelegate_show( - env, GetEnumeratedIconId(), - base::android::ConvertUTF16ToJavaString( - env, infobar_delegate->message_text()).obj(), + env, GetEnumeratedIconId(), base::android::ConvertUTF16ToJavaString( + env, infobar_delegate->message_text()), infobar_delegate->inline_link_range().start(), infobar_delegate->inline_link_range().end(), base::android::ConvertUTF16ToJavaString( - env, infobar_delegate->button_label()).obj()); + env, infobar_delegate->button_label())); } void GeneratedPasswordSavedInfoBar::OnLinkClicked(
diff --git a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc index 36fc238..7f8249f 100644 --- a/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc +++ b/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
@@ -60,18 +60,18 @@ } return Java_GroupedPermissionInfoBar_create( - env, message_text.obj(), ok_button_text.obj(), cancel_button_text.obj(), - base::android::ToJavaIntArray(env, permission_icons).obj(), - base::android::ToJavaArrayOfStrings(env, permission_strings).obj(), - GetWindowAndroid().obj(), - base::android::ToJavaIntArray(env, content_settings_types).obj()); + env, message_text, ok_button_text, cancel_button_text, + base::android::ToJavaIntArray(env, permission_icons), + base::android::ToJavaArrayOfStrings(env, permission_strings), + GetWindowAndroid(), + base::android::ToJavaIntArray(env, content_settings_types)); } void GroupedPermissionInfoBar::SetJavaInfoBar( const base::android::JavaRef<jobject>& java_info_bar) { InfoBarAndroid::SetJavaInfoBar(java_info_bar); JNIEnv* env = base::android::AttachCurrentThread(); - Java_GroupedPermissionInfoBar_setNativePtr(env, java_info_bar.obj(), + Java_GroupedPermissionInfoBar_setNativePtr(env, java_info_bar, reinterpret_cast<intptr_t>(this)); }
diff --git a/chrome/browser/ui/android/infobars/infobar_android.cc b/chrome/browser/ui/android/infobars/infobar_android.cc index ddf6d3c7..3170420 100644 --- a/chrome/browser/ui/android/infobars/infobar_android.cc +++ b/chrome/browser/ui/android/infobars/infobar_android.cc
@@ -26,7 +26,7 @@ InfoBarAndroid::~InfoBarAndroid() { if (!java_info_bar_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_InfoBar_onNativeDestroyed(env, java_info_bar_.obj()); + Java_InfoBar_onNativeDestroyed(env, java_info_bar_); } } @@ -43,7 +43,7 @@ DCHECK(java_info_bar_.is_null()); java_info_bar_.Reset(java_info_bar); JNIEnv* env = base::android::AttachCurrentThread(); - Java_InfoBar_setNativeInfoBar(env, java_info_bar.obj(), + Java_InfoBar_setNativeInfoBar(env, java_info_bar, reinterpret_cast<intptr_t>(this)); } @@ -72,7 +72,7 @@ void InfoBarAndroid::CloseJavaInfoBar() { if (!java_info_bar_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_InfoBar_closeInfoBar(env, java_info_bar_.obj()); + Java_InfoBar_closeInfoBar(env, java_info_bar_); } }
diff --git a/chrome/browser/ui/android/infobars/infobar_container_android.cc b/chrome/browser/ui/android/infobars/infobar_container_android.cc index 9d708e61..1c6836f 100644 --- a/chrome/browser/ui/android/infobars/infobar_container_android.cc +++ b/chrome/browser/ui/android/infobars/infobar_container_android.cc
@@ -65,7 +65,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); if (Java_InfoBarContainer_nextInfoBarWillBeVisible( - env, weak_java_infobar_container_.get(env).obj())) { + env, weak_java_infobar_container_.get(env))) { UMA_HISTOGRAM_SPARSE_SLOWLY("InfoBar.Shown.Visible", android_bar->delegate()->GetIdentifier()); } else { @@ -75,8 +75,8 @@ base::android::ScopedJavaLocalRef<jobject> java_infobar = android_bar->CreateRenderInfoBar(env); - Java_InfoBarContainer_addInfoBar( - env, weak_java_infobar_container_.get(env).obj(), java_infobar.obj()); + Java_InfoBarContainer_addInfoBar(env, weak_java_infobar_container_.get(env), + java_infobar); android_bar->SetJavaInfoBar(java_infobar); }
diff --git a/chrome/browser/ui/android/infobars/save_password_infobar.cc b/chrome/browser/ui/android/infobars/save_password_infobar.cc index 0c518ac..a8ca336 100644 --- a/chrome/browser/ui/android/infobars/save_password_infobar.cc +++ b/chrome/browser/ui/android/infobars/save_password_infobar.cc
@@ -37,10 +37,10 @@ env, save_password_delegate->GetFirstRunExperienceMessage()); return Java_SavePasswordInfoBar_show( - env, GetEnumeratedIconId(), message_text.obj(), + env, GetEnumeratedIconId(), message_text, save_password_delegate->message_link_range().start(), - save_password_delegate->message_link_range().end(), ok_button_text.obj(), - cancel_button_text.obj(), first_run_experience_message.obj()); + save_password_delegate->message_link_range().end(), ok_button_text, + cancel_button_text, first_run_experience_message); } void SavePasswordInfoBar::OnLinkClicked(JNIEnv* env,
diff --git a/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc b/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc index 6869e49b..4cd497e 100644 --- a/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc +++ b/chrome/browser/ui/android/infobars/simple_confirm_infobar_builder.cc
@@ -98,7 +98,7 @@ void SimpleConfirmInfoBarDelegate::InfoBarDismissed() { Java_SimpleConfirmInfoBarBuilder_onInfoBarDismissed( - base::android::AttachCurrentThread(), java_listener_.obj()); + base::android::AttachCurrentThread(), java_listener_); } base::string16 SimpleConfirmInfoBarDelegate::GetMessageText() const { @@ -117,12 +117,12 @@ bool SimpleConfirmInfoBarDelegate::Accept() { return !Java_SimpleConfirmInfoBarBuilder_onInfoBarButtonClicked( - base::android::AttachCurrentThread(), java_listener_.obj(), true); + base::android::AttachCurrentThread(), java_listener_, true); } bool SimpleConfirmInfoBarDelegate::Cancel() { return !Java_SimpleConfirmInfoBarBuilder_onInfoBarButtonClicked( - base::android::AttachCurrentThread(), java_listener_.obj(), false); + base::android::AttachCurrentThread(), java_listener_, false); } } // anonymous namespace
diff --git a/chrome/browser/ui/android/infobars/translate_infobar.cc b/chrome/browser/ui/android/infobars/translate_infobar.cc index 83aae0c7..f9dbd080 100644 --- a/chrome/browser/ui/android/infobars/translate_infobar.cc +++ b/chrome/browser/ui/android/infobars/translate_infobar.cc
@@ -63,10 +63,10 @@ delegate->target_language_code()); return Java_TranslateInfoBar_show( - env, delegate->translate_step(), source_language_code.obj(), - target_language_code.obj(), delegate->ShouldAlwaysTranslate(), + env, delegate->translate_step(), source_language_code, + target_language_code, delegate->ShouldAlwaysTranslate(), ShouldDisplayNeverTranslateInfoBarOnCancel(), - delegate->triggered_from_menu(), java_languages.obj(), java_codes.obj()); + delegate->triggered_from_menu(), java_languages, java_codes); } void TranslateInfoBar::ProcessButton(int action) { @@ -104,7 +104,7 @@ const base::android::JavaRef<jobject>& java_info_bar) { InfoBarAndroid::SetJavaInfoBar(java_info_bar); JNIEnv* env = base::android::AttachCurrentThread(); - Java_TranslateInfoBar_setNativePtr(env, java_info_bar.obj(), + Java_TranslateInfoBar_setNativePtr(env, java_info_bar, reinterpret_cast<intptr_t>(this)); }
diff --git a/chrome/browser/ui/android/infobars/update_password_infobar.cc b/chrome/browser/ui/android/infobars/update_password_infobar.cc index cc3185e..39835ff7 100644 --- a/chrome/browser/ui/android/infobars/update_password_infobar.cc +++ b/chrome/browser/ui/android/infobars/update_password_infobar.cc
@@ -23,7 +23,7 @@ int UpdatePasswordInfoBar::GetIdOfSelectedUsername() const { return Java_UpdatePasswordInfoBar_getSelectedUsername( - base::android::AttachCurrentThread(), java_infobar_.obj()); + base::android::AttachCurrentThread(), java_infobar_); } base::android::ScopedJavaLocalRef<jobject> @@ -51,8 +51,8 @@ base::android::ScopedJavaLocalRef<jobject> infobar; infobar.Reset(Java_UpdatePasswordInfoBar_show( env, reinterpret_cast<intptr_t>(this), GetEnumeratedIconId(), - base::android::ToJavaArrayOfStrings(env, usernames).obj(), - ok_button_text.obj(), cancel_button_text.obj(), branding_text.obj(), + base::android::ToJavaArrayOfStrings(env, usernames), ok_button_text, + cancel_button_text, branding_text, update_password_delegate->ShowMultipleAccounts(), update_password_delegate->is_smartlock_branding_enabled()));
diff --git a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc index 1942a72..3c82caf 100644 --- a/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc +++ b/chrome/browser/ui/android/javascript_app_modal_dialog_android.cc
@@ -59,29 +59,27 @@ switch (dialog_->javascript_message_type()) { case content::JAVASCRIPT_MESSAGE_TYPE_ALERT: { - dialog_object = Java_JavascriptAppModalDialog_createAlertDialog(env, - title.obj(), message.obj(), - dialog_->display_suppress_checkbox()); + dialog_object = Java_JavascriptAppModalDialog_createAlertDialog( + env, title, message, dialog_->display_suppress_checkbox()); break; } case content::JAVASCRIPT_MESSAGE_TYPE_CONFIRM: { if (dialog_->is_before_unload_dialog()) { dialog_object = Java_JavascriptAppModalDialog_createBeforeUnloadDialog( - env, title.obj(), message.obj(), dialog_->is_reload(), + env, title, message, dialog_->is_reload(), dialog_->display_suppress_checkbox()); } else { - dialog_object = Java_JavascriptAppModalDialog_createConfirmDialog(env, - title.obj(), message.obj(), - dialog_->display_suppress_checkbox()); + dialog_object = Java_JavascriptAppModalDialog_createConfirmDialog( + env, title, message, dialog_->display_suppress_checkbox()); } break; } case content::JAVASCRIPT_MESSAGE_TYPE_PROMPT: { ScopedJavaLocalRef<jstring> default_prompt_text = ConvertUTF16ToJavaString(env, dialog_->default_prompt_text()); - dialog_object = Java_JavascriptAppModalDialog_createPromptDialog(env, - title.obj(), message.obj(), - dialog_->display_suppress_checkbox(), default_prompt_text.obj()); + dialog_object = Java_JavascriptAppModalDialog_createPromptDialog( + env, title, message, dialog_->display_suppress_checkbox(), + default_prompt_text); break; } default: @@ -91,9 +89,8 @@ // Keep a ref to the java side object until we get a confirm or cancel. dialog_jobject_.Reset(dialog_object); - Java_JavascriptAppModalDialog_showJavascriptAppModalDialog(env, - dialog_object.obj(), parent_jobj.obj(), - reinterpret_cast<intptr_t>(this)); + Java_JavascriptAppModalDialog_showJavascriptAppModalDialog( + env, dialog_object, parent_jobj, reinterpret_cast<intptr_t>(this)); } void JavascriptAppModalDialogAndroid::ActivateAppModalDialog() { @@ -169,7 +166,7 @@ // shown, and then accept the dialog. if (!dialog_jobject_.is_null()) { JNIEnv* env = AttachCurrentThread(); - Java_JavascriptAppModalDialog_dismiss(env, dialog_jobject_.obj()); + Java_JavascriptAppModalDialog_dismiss(env, dialog_jobject_); } }
diff --git a/chrome/browser/ui/android/snackbars/auto_signin_prompt_controller.cc b/chrome/browser/ui/android/snackbars/auto_signin_prompt_controller.cc index 432d017..35d8dcb 100644 --- a/chrome/browser/ui/android/snackbars/auto_signin_prompt_controller.cc +++ b/chrome/browser/ui/android/snackbars/auto_signin_prompt_controller.cc
@@ -28,7 +28,7 @@ return; ScopedJavaLocalRef<jstring> java_message = base::android::ConvertUTF16ToJavaString(env, message); - Java_AutoSigninSnackbarController_showSnackbar( - env, tab->GetJavaObject().obj(), java_message.obj()); + Java_AutoSigninSnackbarController_showSnackbar(env, tab->GetJavaObject(), + java_message); }
diff --git a/chrome/browser/ui/android/ssl_client_certificate_request.cc b/chrome/browser/ui/android/ssl_client_certificate_request.cc index 0b5d9d3c..6881cd47 100644 --- a/chrome/browser/ui/android/ssl_client_certificate_request.cc +++ b/chrome/browser/ui/android/ssl_client_certificate_request.cc
@@ -95,14 +95,10 @@ jlong request_id = reinterpret_cast<intptr_t>(delegate.get()); if (!chrome::android:: - Java_SSLClientCertificateRequest_selectClientCertificate( - env, - request_id, - window->GetJavaObject().obj(), - key_types_ref.obj(), - principals_ref.obj(), - host_name_ref.obj(), - cert_request_info->host_and_port.port())) { + Java_SSLClientCertificateRequest_selectClientCertificate( + env, request_id, window->GetJavaObject(), key_types_ref, + principals_ref, host_name_ref, + cert_request_info->host_and_port.port())) { return; }
diff --git a/chrome/browser/ui/android/tab_model/tab_model_jni_bridge.cc b/chrome/browser/ui/android/tab_model/tab_model_jni_bridge.cc index dd8f5cc..fbd2e26 100644 --- a/chrome/browser/ui/android/tab_model/tab_model_jni_bridge.cc +++ b/chrome/browser/ui/android/tab_model/tab_model_jni_bridge.cc
@@ -75,12 +75,12 @@ int TabModelJniBridge::GetTabCount() const { JNIEnv* env = AttachCurrentThread(); - return Java_TabModelJniBridge_getCount(env, java_object_.get(env).obj()); + return Java_TabModelJniBridge_getCount(env, java_object_.get(env)); } int TabModelJniBridge::GetActiveIndex() const { JNIEnv* env = AttachCurrentThread(); - return Java_TabModelJniBridge_index(env, java_object_.get(env).obj()); + return Java_TabModelJniBridge_index(env, java_object_.get(env)); } void TabModelJniBridge::CreateTab(TabAndroid* parent, @@ -91,8 +91,7 @@ env, java_object_.get(env).obj(), (parent ? parent->GetJavaObject().obj() : nullptr), web_contents->GetBrowserContext()->IsOffTheRecord(), - web_contents->GetJavaWebContents().obj(), - parent_tab_id); + web_contents->GetJavaWebContents(), parent_tab_id); } WebContents* TabModelJniBridge::GetWebContentsAt(int index) const { @@ -103,9 +102,7 @@ TabAndroid* TabModelJniBridge::GetTabAt(int index) const { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> jtab = - Java_TabModelJniBridge_getTabAt(env, - java_object_.get(env).obj(), - index); + Java_TabModelJniBridge_getTabAt(env, java_object_.get(env), index); return jtab.is_null() ? NULL : TabAndroid::GetNativeTab(env, jtab.obj()); @@ -113,14 +110,12 @@ void TabModelJniBridge::SetActiveIndex(int index) { JNIEnv* env = AttachCurrentThread(); - Java_TabModelJniBridge_setIndex(env, java_object_.get(env).obj(), index); + Java_TabModelJniBridge_setIndex(env, java_object_.get(env), index); } void TabModelJniBridge::CloseTabAt(int index) { JNIEnv* env = AttachCurrentThread(); - Java_TabModelJniBridge_closeTabAt(env, - java_object_.get(env).obj(), - index); + Java_TabModelJniBridge_closeTabAt(env, java_object_.get(env), index); } WebContents* TabModelJniBridge::CreateNewTabForDevTools( @@ -130,10 +125,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, url.spec()); ScopedJavaLocalRef<jobject> obj = - Java_TabModelJniBridge_createNewTabForDevTools( - env, - java_object_.get(env).obj(), - jurl.obj()); + Java_TabModelJniBridge_createNewTabForDevTools(env, java_object_.get(env), + jurl); if (obj.is_null()) { VLOG(0) << "Failed to create java tab"; return NULL; @@ -149,7 +142,7 @@ bool TabModelJniBridge::IsSessionRestoreInProgress() const { JNIEnv* env = AttachCurrentThread(); return Java_TabModelJniBridge_isSessionRestoreInProgress( - env, java_object_.get(env).obj()); + env, java_object_.get(env)); } void TabModelJniBridge::BroadcastSessionRestoreComplete(
diff --git a/chrome/browser/ui/android/toolbar/toolbar_model_android.cc b/chrome/browser/ui/android/toolbar/toolbar_model_android.cc index c43698f..34fb0bef 100644 --- a/chrome/browser/ui/android/toolbar/toolbar_model_android.cc +++ b/chrome/browser/ui/android/toolbar/toolbar_model_android.cc
@@ -46,7 +46,7 @@ if (!jdelegate.obj()) return NULL; ScopedJavaLocalRef<jobject> jweb_contents = - Java_ToolbarModelDelegate_getActiveWebContents(env, jdelegate.obj()); + Java_ToolbarModelDelegate_getActiveWebContents(env, jdelegate); return content::WebContents::FromJavaWebContents(jweb_contents.obj()); }
diff --git a/chrome/browser/ui/android/usb_chooser_dialog_android.cc b/chrome/browser/ui/android/usb_chooser_dialog_android.cc index c57db38..c9d8b91 100644 --- a/chrome/browser/ui/android/usb_chooser_dialog_android.cc +++ b/chrome/browser/ui/android/usb_chooser_dialog_android.cc
@@ -81,7 +81,7 @@ ChromeSecurityStateModelClient::FromWebContents(web_contents); DCHECK(security_model_client); java_dialog_.Reset(Java_UsbChooserDialog_create( - env, window_android.obj(), origin_string.obj(), + env, window_android, origin_string, security_model_client->GetSecurityInfo().security_level, reinterpret_cast<intptr_t>(this))); @@ -98,7 +98,7 @@ if (!java_dialog_.is_null()) { Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), - java_dialog_.obj()); + java_dialog_); } } @@ -138,7 +138,7 @@ callback_.Reset(); // Reset |callback_| so that it is only run once. Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), - java_dialog_.obj()); + java_dialog_); RecordWebUsbChooserClosure( device->serial_number().empty() ? WEBUSB_CHOOSER_CLOSED_EPHEMERAL_PERMISSION_GRANTED @@ -153,7 +153,7 @@ callback_.Run(nullptr); callback_.Reset(); // Reset |callback_| so that it is only run once. Java_UsbChooserDialog_closeDialog(base::android::AttachCurrentThread(), - java_dialog_.obj()); + java_dialog_); RecordWebUsbChooserClosure(devices_.size() == 0 ? WEBUSB_CHOOSER_CLOSED_CANCELLED_NO_DEVICES @@ -192,7 +192,7 @@ } JNIEnv* env = base::android::AttachCurrentThread(); - Java_UsbChooserDialog_setIdleState(env, java_dialog_.obj()); + Java_UsbChooserDialog_setIdleState(env, java_dialog_); } void UsbChooserDialogAndroid::AddDeviceToChooserDialog( @@ -202,8 +202,7 @@ base::android::ConvertUTF8ToJavaString(env, device->guid()); base::android::ScopedJavaLocalRef<jstring> device_name = base::android::ConvertUTF16ToJavaString(env, device->product_string()); - Java_UsbChooserDialog_addDevice(env, java_dialog_.obj(), device_guid.obj(), - device_name.obj()); + Java_UsbChooserDialog_addDevice(env, java_dialog_, device_guid, device_name); } void UsbChooserDialogAndroid::RemoveDeviceFromChooserDialog( @@ -213,8 +212,8 @@ base::android::ConvertUTF8ToJavaString(env, device->guid()); base::android::ScopedJavaLocalRef<jstring> device_name = base::android::ConvertUTF16ToJavaString(env, device->product_string()); - Java_UsbChooserDialog_removeDevice(env, java_dialog_.obj(), device_guid.obj(), - device_name.obj()); + Java_UsbChooserDialog_removeDevice(env, java_dialog_, device_guid, + device_name); } void UsbChooserDialogAndroid::OpenUrl(const std::string& url) {
diff --git a/chrome/browser/ui/android/website_settings_popup_android.cc b/chrome/browser/ui/android/website_settings_popup_android.cc index 5aa0bf6..55f6c51 100644 --- a/chrome/browser/ui/android/website_settings_popup_android.cc +++ b/chrome/browser/ui/android/website_settings_popup_android.cc
@@ -83,7 +83,7 @@ void WebsiteSettingsPopupAndroid::SetIdentityInfo( const IdentityInfo& identity_info) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj()); + Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_); } void WebsiteSettingsPopupAndroid::SetCookieInfo( @@ -124,9 +124,7 @@ WebsiteSettingsUI::PermissionTypeToUIString(permission); Java_WebsiteSettingsPopup_addPermissionSection( - env, - popup_jobject_.obj(), - ConvertUTF16ToJavaString(env, setting_title).obj(), + env, popup_jobject_, ConvertUTF16ToJavaString(env, setting_title), static_cast<jint>(permission), static_cast<jint>(user_specified_settings_to_display[permission])); } @@ -137,14 +135,13 @@ WebsiteSettingsUI::ChosenObjectToUIString(*chosen_object); Java_WebsiteSettingsPopup_addPermissionSection( - env, popup_jobject_.obj(), - ConvertUTF16ToJavaString(env, object_title).obj(), + env, popup_jobject_, ConvertUTF16ToJavaString(env, object_title), static_cast<jint>(chosen_object->ui_info.content_settings_type), static_cast<jint>(CONTENT_SETTING_ALLOW)); delete chosen_object; } - Java_WebsiteSettingsPopup_updatePermissionDisplay(env, popup_jobject_.obj()); + Java_WebsiteSettingsPopup_updatePermissionDisplay(env, popup_jobject_); } void WebsiteSettingsPopupAndroid::SetSelectedTab(
diff --git a/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc b/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc index 487a59a..eda7b97 100644 --- a/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc +++ b/chrome/browser/ui/toolbar/component_toolbar_actions_factory.cc
@@ -11,6 +11,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" +#include "chrome/common/pref_names.h" #include "extensions/common/feature_switch.h" #if defined(ENABLE_MEDIA_ROUTER) @@ -44,6 +45,10 @@ std::set<std::string> ComponentToolbarActionsFactory::GetInitialComponentIds( Profile* profile) { std::set<std::string> component_ids; +#if defined(ENABLE_MEDIA_ROUTER) + if (profile->GetPrefs()->GetBoolean(prefs::kMediaRouterAlwaysShowActionIcon)) + component_ids.insert(kMediaRouterActionId); +#endif // defined(ENABLE_MEDIA_ROUTER) return component_ids; } @@ -93,4 +98,3 @@ helper->OnFeatureDisabled(kMediaRouterActionId); } } -
diff --git a/chrome/browser/ui/toolbar/media_router_action.cc b/chrome/browser/ui/toolbar/media_router_action.cc index 97c60b2..b49f18f7 100644 --- a/chrome/browser/ui/toolbar/media_router_action.cc +++ b/chrome/browser/ui/toolbar/media_router_action.cc
@@ -17,8 +17,13 @@ #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/browser/ui/toolbar/media_router_action_platform_delegate.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h" +#include "chrome/browser/ui/toolbar/toolbar_actions_model.h" #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h" +#include "chrome/common/pref_names.h" #include "chrome/grit/generated_resources.h" +#include "components/prefs/pref_service.h" +#include "components/prefs/pref_service_factory.h" +#include "grit/theme_resources.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/color_palette.h" #include "ui/gfx/image/image_skia.h" @@ -41,17 +46,19 @@ media_router::MediaRoutesObserver(GetMediaRouter(browser)), current_icon_(gfx::VectorIconId::MEDIA_ROUTER_IDLE), has_local_display_route_(false), + has_dialog_(false), delegate_(nullptr), browser_(browser), toolbar_actions_bar_(toolbar_actions_bar), platform_delegate_(MediaRouterActionPlatformDelegate::Create(browser)), - contextual_menu_(browser), + contextual_menu_(browser, this), tab_strip_model_observer_(this), + toolbar_actions_bar_observer_(this), weak_ptr_factory_(this) { DCHECK(browser_); DCHECK(toolbar_actions_bar_); tab_strip_model_observer_.Add(browser_->tab_strip_model()); - + toolbar_actions_bar_observer_.Add(toolbar_actions_bar_); RegisterObserver(); } @@ -66,13 +73,13 @@ void MediaRouterAction::SetDelegate(ToolbarActionViewDelegate* delegate) { delegate_ = delegate; - // Updates the current popup state if |delegate_| is non-null and has + // Updates the current dialog state if |delegate_| is non-null and has // WebContents ready. // In cases such as opening a new browser window, SetDelegate() will be - // called before the WebContents is set. In those cases, we update the popup + // called before the WebContents is set. In those cases, we update the dialog // state when ActiveTabChanged() is called. if (delegate_ && delegate_->GetCurrentWebContents()) - UpdatePopupState(); + UpdateDialogState(); } gfx::Image MediaRouterAction::GetIcon(content::WebContents* web_contents, @@ -113,7 +120,6 @@ void MediaRouterAction::HidePopup() { GetMediaRouterDialogController()->HideMediaRouterDialog(); - OnPopupHidden(); } gfx::NativeView MediaRouterAction::GetPopupNativeView() { @@ -143,8 +149,8 @@ } void MediaRouterAction::UpdateState() { - if (delegate_) - delegate_->UpdateState(); + DCHECK(delegate_); + delegate_->UpdateState(); } bool MediaRouterAction::DisabledClickOpensMenu() const { @@ -166,48 +172,70 @@ return route.is_local() && route.for_display(); }) != routes.end(); MaybeUpdateIcon(); + MaybeRemoveAction(); } void MediaRouterAction::ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents, int index, int reason) { - UpdatePopupState(); + UpdateDialogState(); + MaybeRemoveAction(); } -void MediaRouterAction::OnPopupHidden() { - if (delegate_) +void MediaRouterAction::OnToolbarActionsBarAnimationEnded() { + // Depress the action if the dialog is shown, release it otherwise. + DCHECK(delegate_); + if (GetMediaRouterDialogController()->IsShowingMediaRouterDialog()) + OnDialogShown(); +} + +void MediaRouterAction::OnDialogHidden() { + if (has_dialog_) { + has_dialog_ = false; + DCHECK(delegate_); delegate_->OnPopupClosed(); + } } -void MediaRouterAction::OnPopupShown() { - // We depress the action regardless of whether ExecuteAction() was user - // initiated. - if (delegate_) +void MediaRouterAction::OnDialogShown() { + if (!has_dialog_) { + has_dialog_ = true; + DCHECK(delegate_); + // We depress the action regardless of whether ExecuteAction() was user + // initiated. delegate_->OnPopupShown(true); + } } -void MediaRouterAction::UpdatePopupState() { +void MediaRouterAction::ToggleVisibilityPreference() { + browser_->profile()->GetPrefs()->SetBoolean( + prefs::kMediaRouterAlwaysShowActionIcon, !ShouldAlwaysShowIcon()); + MaybeRemoveAction(); +} + +void MediaRouterAction::UpdateDialogState() { MediaRouterDialogControllerImpl* controller = GetMediaRouterDialogController(); if (!controller) return; - // When each browser window is created, its toolbar creates a - // MediaRouterAction that is only destroyed when the browser window is torn - // down. |controller| will keep track of that instance. If |this| was created - // in overflow mode, it will be destroyed when the overflow menu is closed. - // If SetMediaRouterAction() was previously called, this is a no-op. + // |controller| keeps track of |this| if |this| was created with the browser + // window or ephemerally by activating the Cast functionality. If |this| was + // created in overflow mode, it will be destroyed when the overflow menu is + // closed. If SetMediaRouterAction() was previously called, this is a no-op. if (!toolbar_actions_bar_->in_overflow_mode()) controller->SetMediaRouterAction(weak_ptr_factory_.GetWeakPtr()); // Update the button in case the pressed state is out of sync with dialog - // visibility. - if (controller->IsShowingMediaRouterDialog()) - OnPopupShown(); - else - OnPopupHidden(); + // visibility. If we just added the ephemeral icon to the toolbar and need to + // depress it, we do that in |OnToolbarActionsBarAnimationEnded|. + DCHECK(delegate_); + if (ShouldAlwaysShowIcon() && controller->IsShowingMediaRouterDialog()) + OnDialogShown(); + else if (!controller->IsShowingMediaRouterDialog()) + OnDialogHidden(); } MediaRouterDialogControllerImpl* @@ -232,11 +260,25 @@ // Tell the associated view to update its icon to reflect the change made // above. - if (delegate_) - delegate_->UpdateState(); + UpdateState(); } } +void MediaRouterAction::MaybeRemoveAction() { + if (!ShouldAlwaysShowIcon() && + !GetMediaRouterDialogController()->IsShowingMediaRouterDialog() && + !has_local_display_route_) { + // Warning: |this| can be deleted here. + ToolbarActionsModel::Get(browser_->profile()) + ->RemoveComponentAction(GetId()); + } +} + +bool MediaRouterAction::ShouldAlwaysShowIcon() { + PrefService* pref_service = browser_->profile()->GetPrefs(); + return pref_service->GetBoolean(prefs::kMediaRouterAlwaysShowActionIcon); +} + gfx::VectorIconId MediaRouterAction::GetCurrentIcon() const { // Highest priority is to indicate whether there's an issue. if (issue_) { @@ -249,3 +291,7 @@ return has_local_display_route_ ? gfx::VectorIconId::MEDIA_ROUTER_ACTIVE : gfx::VectorIconId::MEDIA_ROUTER_IDLE; } + +base::WeakPtr<MediaRouterAction> MediaRouterAction::GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); +}
diff --git a/chrome/browser/ui/toolbar/media_router_action.h b/chrome/browser/ui/toolbar/media_router_action.h index ace06a3..f3be5224 100644 --- a/chrome/browser/ui/toolbar/media_router_action.h +++ b/chrome/browser/ui/toolbar/media_router_action.h
@@ -13,6 +13,7 @@ #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" #include "chrome/browser/ui/toolbar/toolbar_actions_bar.h" +#include "chrome/browser/ui/toolbar/toolbar_actions_bar_observer.h" #include "ui/gfx/vector_icons_public.h" class Browser; @@ -28,7 +29,8 @@ class MediaRouterAction : public ToolbarActionViewController, public media_router::IssuesObserver, public media_router::MediaRoutesObserver, - public TabStripModelObserver { + public TabStripModelObserver, + public ToolbarActionsBarObserver { public: MediaRouterAction(Browser* browser, ToolbarActionsBar* toolbar_actions_bar); ~MediaRouterAction() override; @@ -67,16 +69,30 @@ int index, int reason) override; - void OnPopupHidden(); - void OnPopupShown(); + // ToolbarActionsBarObserver: + void OnToolbarActionsBarAnimationEnded() override; + + void OnDialogHidden(); + void OnDialogShown(); + + // Toggle the "Always show icon" option. + void ToggleVisibilityPreference(); + + // Removes the action from the toolbar and deletes |this| if the Media Router + // dialog is closed and there are no active local Media Routes. + // Overridden by tests. + virtual void MaybeRemoveAction(); + + protected: + // For accessing from tests. + base::WeakPtr<MediaRouterAction> GetWeakPtr(); private: - // Called when a new browser window is opened, the user switches tabs in the - // browser window, or when |delegate_| is swapped out to be non-null and has - // a valid WebContents. + // Called when a new browser window is opened or when |delegate_| is swapped + // out to be non-null and has a valid WebContents. // This updates the pressed/unpressed state of the icon, which is different // on a per-tab basis. - void UpdatePopupState(); + void UpdateDialogState(); // Returns a reference to the MediaRouterDialogControllerImpl associated with // |delegate_|'s current WebContents. Guaranteed to be non-null. @@ -92,6 +108,9 @@ // updates |current_icon_|. void MaybeUpdateIcon(); + // Returns whether the "Always show icon" option is checked. + bool ShouldAlwaysShowIcon(); + gfx::VectorIconId GetCurrentIcon() const; // The current icon to show. This is updated based on the current issues and @@ -105,6 +124,10 @@ // Whether a local displayable active route exists. bool has_local_display_route_; + // Whether the Media Router dialog is shown in the current tab. + // This should only be updated in OnDialogShown() and OnDialogHidden(). + bool has_dialog_; + ToolbarActionViewDelegate* delegate_; Browser* const browser_; @@ -117,6 +140,8 @@ ScopedObserver<TabStripModel, TabStripModelObserver> tab_strip_model_observer_; + ScopedObserver<ToolbarActionsBar, ToolbarActionsBarObserver> + toolbar_actions_bar_observer_; base::WeakPtrFactory<MediaRouterAction> weak_ptr_factory_;
diff --git a/chrome/browser/ui/toolbar/media_router_action_unittest.cc b/chrome/browser/ui/toolbar/media_router_action_unittest.cc index d09f022..68edf5f 100644 --- a/chrome/browser/ui/toolbar/media_router_action_unittest.cc +++ b/chrome/browser/ui/toolbar/media_router_action_unittest.cc
@@ -2,11 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/auto_reset.h" +#include "base/command_line.h" #include "base/macros.h" #include "chrome/browser/extensions/browser_action_test_util.h" #include "chrome/browser/extensions/extension_action_test_util.h" +#include "chrome/browser/extensions/test_extension_system.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/browser/ui/toolbar/media_router_action.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h" #include "chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h" @@ -48,6 +52,7 @@ MediaRouterDialogControllerImpl* controller) { DCHECK(controller); controller_ = controller; + controller_->SetMediaRouterAction(GetWeakPtr()); } private: @@ -60,6 +65,11 @@ return platform_delegate_; } + void MaybeRemoveAction() override { + if (GetMediaRouterDialogController()) + MediaRouterAction::MaybeRemoveAction(); + } + MediaRouterDialogControllerImpl* controller_; MediaRouterActionPlatformDelegate* platform_delegate_; }; @@ -114,8 +124,12 @@ // MediaRouterTest: void SetUp() override { MediaRouterTest::SetUp(); + static_cast<extensions::TestExtensionSystem*>( + extensions::ExtensionSystem::Get(profile())) + ->CreateExtensionService(base::CommandLine::ForCurrentProcess(), + base::FilePath(), false); toolbar_model_ = extensions::extension_action_test_util:: - CreateToolbarModelForProfileWithoutWaitingForReady(profile()); + CreateToolbarModelForProfile(profile()); // browser() will only be valid once BrowserWithTestWindowTest::SetUp() // has run. @@ -125,6 +139,9 @@ new TestMediaRouterAction( browser(), browser_action_test_util_->GetToolbarActionsBar())); + delegate_.reset(new MockToolbarActionViewDelegate()); + + action()->SetDelegate(delegate_.get()); local_display_route_list_.push_back( media_router::MediaRoute("routeId1", fake_source1_, "sinkId1", @@ -138,12 +155,23 @@ } void TearDown() override { - browser_action_test_util_.reset(); + delegate_.reset(); action_.reset(); + browser_action_test_util_.reset(); MediaRouterTest::TearDown(); } + bool ActionExists() { + return toolbar_model_->HasComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId); + } + + void ResetTestMediaRouterAction() { + action_.reset(); + } + TestMediaRouterAction* action() { return action_.get(); } + ToolbarActionsModel* toolbar_model() { return toolbar_model_; } const media_router::Issue* fake_issue_notification() { return &fake_issue_notification_; } @@ -175,6 +203,7 @@ std::unique_ptr<BrowserActionTestUtil> browser_action_test_util_; std::unique_ptr<TestMediaRouterAction> action_; + std::unique_ptr<MockToolbarActionViewDelegate> delegate_; // The associated ToolbarActionsModel (owned by the keyed service setup). ToolbarActionsModel* toolbar_model_; @@ -320,42 +349,131 @@ } TEST_F(MediaRouterActionUnitTest, IconPressedState) { + base::AutoReset<bool> disable_animations( + &ToolbarActionsBar::disable_animations_for_testing_, true); + // Start with one window with one tab. EXPECT_EQ(0, browser()->tab_strip_model()->count()); chrome::NewTab(browser()); EXPECT_EQ(1, browser()->tab_strip_model()->count()); - // Create a reference to initiator contents. - WebContents* initiator_ = - browser()->tab_strip_model()->GetActiveWebContents(); - - MediaRouterDialogControllerImpl::CreateForWebContents(initiator_); - MediaRouterDialogControllerImpl* dialog_controller_ = - MediaRouterDialogControllerImpl::FromWebContents(initiator_); - ASSERT_TRUE(dialog_controller_); + WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); + MediaRouterDialogControllerImpl::CreateForWebContents(initiator); + MediaRouterDialogControllerImpl* dialog_controller = + MediaRouterDialogControllerImpl::FromWebContents(initiator); + ASSERT_TRUE(dialog_controller); // Sets the controller to use for TestMediaRouterAction. - action()->SetMediaRouterDialogController(dialog_controller_); + action()->SetMediaRouterDialogController(dialog_controller); - // Create a ToolbarActionViewDelegate to use for MediaRouterAction. - std::unique_ptr<MockToolbarActionViewDelegate> mock_delegate( - new MockToolbarActionViewDelegate()); + // Add the icon to the toolbar and make it persist. + toolbar_model()->AddComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId); + action()->ToggleVisibilityPreference(); + EXPECT_TRUE(ActionExists()); - EXPECT_CALL(*mock_delegate, GetCurrentWebContents()).WillOnce( - testing::Return(initiator_)); - EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); - action()->SetDelegate(mock_delegate.get()); - - EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); action()->ExecuteAction(true); + EXPECT_TRUE(dialog_controller->IsShowingMediaRouterDialog()); // Pressing the icon while the popup is shown should close the popup - EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); action()->ExecuteAction(true); + EXPECT_FALSE(dialog_controller->IsShowingMediaRouterDialog()); - EXPECT_CALL(*mock_delegate, OnPopupShown(true)).Times(1); - dialog_controller_->CreateMediaRouterDialog(); + dialog_controller->CreateMediaRouterDialog(); + EXPECT_TRUE(dialog_controller->IsShowingMediaRouterDialog()); - EXPECT_CALL(*mock_delegate, OnPopupClosed()).Times(1); - dialog_controller_->HideMediaRouterDialog(); + dialog_controller->HideMediaRouterDialog(); + EXPECT_FALSE(dialog_controller->IsShowingMediaRouterDialog()); + + // Make the icon go away. + action()->ToggleVisibilityPreference(); + EXPECT_FALSE(ActionExists()); +} + +TEST_F(MediaRouterActionUnitTest, EphemeralIcon) { + // We'll be using the action created by the toolbar model in this test, + // so we remove the test action here. + ResetTestMediaRouterAction(); + + base::AutoReset<bool> disable_animations( + &ToolbarActionsBar::disable_animations_for_testing_, true); + + // Start with one window with one tab. + EXPECT_EQ(0, browser()->tab_strip_model()->count()); + chrome::NewTab(browser()); + EXPECT_EQ(1, browser()->tab_strip_model()->count()); + + WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); + MediaRouterDialogControllerImpl::CreateForWebContents(initiator); + MediaRouterDialogControllerImpl* dialog_controller = + MediaRouterDialogControllerImpl::FromWebContents(initiator); + ASSERT_TRUE(dialog_controller); + + EXPECT_FALSE(ActionExists()); + // Show the popup. The icon should become visible. + dialog_controller->ShowMediaRouterDialog(); + EXPECT_TRUE(ActionExists()); + // Hide the popup. The icon should become hidden. + dialog_controller->HideMediaRouterDialog(); + EXPECT_FALSE(ActionExists()); + + // Show the popup. + dialog_controller->ShowMediaRouterDialog(); + // Add a local display route. + dialog_controller->action_for_test() + ->OnRoutesUpdated(local_display_route_list(), empty_route_id_list()); + EXPECT_TRUE(ActionExists()); + // Hide the popup while there's still a local media route. The icon should not + // be hidden as long as the media route exists. + dialog_controller->HideMediaRouterDialog(); + EXPECT_TRUE(ActionExists()); + // Remove the local route. Now the icon should be hidden. + dialog_controller->action_for_test()->OnRoutesUpdated( + std::vector<media_router::MediaRoute>(), + empty_route_id_list()); + EXPECT_FALSE(ActionExists()); +} + +TEST_F(MediaRouterActionUnitTest, ToggleIconVisibilityPreference) { + // We'll be using the action created by the toolbar model in this test, + // so we remove the test action here. + ResetTestMediaRouterAction(); + + base::AutoReset<bool> disable_animations( + &ToolbarActionsBar::disable_animations_for_testing_, true); + + // Start with one window with one tab. + EXPECT_EQ(0, browser()->tab_strip_model()->count()); + chrome::NewTab(browser()); + EXPECT_EQ(1, browser()->tab_strip_model()->count()); + + WebContents* initiator = browser()->tab_strip_model()->GetActiveWebContents(); + MediaRouterDialogControllerImpl::CreateForWebContents(initiator); + MediaRouterDialogControllerImpl* dialog_controller = + MediaRouterDialogControllerImpl::FromWebContents(initiator); + ASSERT_TRUE(dialog_controller); + + EXPECT_FALSE(ActionExists()); + // Show the popup. The icon should become visible. + dialog_controller->ShowMediaRouterDialog(); + EXPECT_TRUE(ActionExists()); + // Turn on the settings to always show the icon. + dialog_controller->action_for_test()->ToggleVisibilityPreference(); + // Hide the popup. The icon should stay visible. + dialog_controller->HideMediaRouterDialog(); + EXPECT_TRUE(ActionExists()); + + // Close the tab and open another. + browser()->tab_strip_model()->CloseAllTabs(); + EXPECT_EQ(0, browser()->tab_strip_model()->count()); + chrome::NewTab(browser()); + // The icon should persist. + EXPECT_TRUE(ActionExists()); + // Get the dialog controller for the new tab. + dialog_controller = MediaRouterDialogControllerImpl::FromWebContents( + browser()->tab_strip_model()->GetActiveWebContents()); + // Turn off the setting to always show the icon. + // The icon should get hidden now. + dialog_controller->action_for_test()->ToggleVisibilityPreference(); + EXPECT_FALSE(ActionExists()); }
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc index e22a3e0..df675795 100644 --- a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc +++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
@@ -12,25 +12,28 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/singleton_tabs.h" #include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" +#include "chrome/browser/ui/toolbar/media_router_action.h" #include "chrome/browser/ui/toolbar/media_router_contextual_menu.h" #include "chrome/browser/ui/toolbar/toolbar_actions_model.h" +#include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "chrome/grit/chromium_strings.h" #include "chrome/grit/generated_resources.h" +#include "components/prefs/pref_service.h" #include "extensions/common/constants.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/models/menu_model_delegate.h" #if defined(GOOGLE_CHROME_BUILD) #include "chrome/browser/signin/signin_manager_factory.h" -#include "chrome/common/pref_names.h" -#include "components/prefs/pref_service.h" #include "components/signin/core/browser/signin_manager.h" #endif // defined(GOOGLE_CHROME_BUILD) -MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser) +MediaRouterContextualMenu::MediaRouterContextualMenu(Browser* browser, + MediaRouterAction* action) : browser_(browser), - menu_model_(this) { + menu_model_(this), + action_(action) { menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_ABOUT, IDS_MEDIA_ROUTER_ABOUT); menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); @@ -38,8 +41,9 @@ IDS_MEDIA_ROUTER_LEARN_MORE); menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_HELP, IDS_MEDIA_ROUTER_HELP); - menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION, - IDS_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION); + menu_model_.AddCheckItemWithStringId( + IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION, + IDS_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION); menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) menu_model_.AddItemWithStringId(IDC_MEDIA_ROUTER_MANAGE_DEVICES, @@ -63,6 +67,10 @@ prefs::kMediaRouterEnableCloudServices); } #endif // defined(GOOGLE_CHROME_BUILD) + if (command_id == IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) { + return browser_->profile()->GetPrefs()->GetBoolean( + prefs::kMediaRouterAlwaysShowActionIcon); + } return false; } @@ -93,22 +101,25 @@ "https://support.google.com/chromecast/answer/2998338"; #if defined(GOOGLE_CHROME_BUILD) - PrefService* pref_service; #endif // defined(GOOGLE_CHROME_BUILD) switch (command_id) { case IDC_MEDIA_ROUTER_ABOUT: chrome::ShowSingletonTab(browser_, GURL(kAboutPageUrl)); break; + case IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION: + DCHECK(action_); + action_->ToggleVisibilityPreference(); + break; #if defined(GOOGLE_CHROME_BUILD) - case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: - pref_service = browser_->profile()->GetPrefs(); + case IDC_MEDIA_ROUTER_CLOUD_SERVICES_TOGGLE: { + PrefService* pref_service = browser_->profile()->GetPrefs(); pref_service->SetBoolean(prefs::kMediaRouterEnableCloudServices, !pref_service->GetBoolean(prefs::kMediaRouterEnableCloudServices)); // If this has been set before, this is a no-op. - pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, - true); + pref_service->SetBoolean(prefs::kMediaRouterCloudServicesPrefSet, true); break; + } #endif // defined(GOOGLE_CHROME_BUILD) case IDC_MEDIA_ROUTER_HELP: chrome::ShowSingletonTab(browser_, GURL(kCastHelpCenterPageUrl)); @@ -123,9 +134,6 @@ chrome::ShowSingletonTab(browser_, GURL(chrome::kChromeUICastURL)); break; #endif - case IDC_MEDIA_ROUTER_REMOVE_TOOLBAR_ACTION: - RemoveMediaRouterComponentAction(); - break; case IDC_MEDIA_ROUTER_REPORT_ISSUE: ReportIssue(); break; @@ -150,8 +158,3 @@ "/feedback.html"); chrome::ShowSingletonTab(browser_, GURL(feedback_url)); } - -void MediaRouterContextualMenu::RemoveMediaRouterComponentAction() { - ToolbarActionsModel::Get(browser_->profile())->component_migration_helper() - ->OnActionRemoved(ComponentToolbarActionsFactory::kMediaRouterActionId); -}
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.h b/chrome/browser/ui/toolbar/media_router_contextual_menu.h index 1fdb949..0f07b34c 100644 --- a/chrome/browser/ui/toolbar/media_router_contextual_menu.h +++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.h
@@ -10,11 +10,12 @@ #include "ui/base/models/simple_menu_model.h" class Browser; +class MediaRouterAction; // The class for the contextual menu for the Media Router action. class MediaRouterContextualMenu : public ui::SimpleMenuModel::Delegate { public: - explicit MediaRouterContextualMenu(Browser* browser); + MediaRouterContextualMenu(Browser* browser, MediaRouterAction* action); ~MediaRouterContextualMenu() override; ui::MenuModel* menu_model() { return &menu_model_; } @@ -32,10 +33,10 @@ void ExecuteCommand(int command_id, int event_flags) override; void ReportIssue(); - void RemoveMediaRouterComponentAction(); Browser* browser_; ui::SimpleMenuModel menu_model_; + MediaRouterAction* action_; DISALLOW_COPY_AND_ASSIGN(MediaRouterContextualMenu); };
diff --git a/chrome/browser/ui/toolbar/toolbar_actions_model.cc b/chrome/browser/ui/toolbar/toolbar_actions_model.cc index 2af73b7..b67889d 100644 --- a/chrome/browser/ui/toolbar/toolbar_actions_model.cc +++ b/chrome/browser/ui/toolbar/toolbar_actions_model.cc
@@ -327,11 +327,10 @@ if (!ShouldAddExtension(extension)) return; - AddItem(ToolbarItem(extension->id(), EXTENSION_ACTION), - extensions::Manifest::IsComponentLocation(extension->location())); + AddItem(ToolbarItem(extension->id(), EXTENSION_ACTION)); } -void ToolbarActionsModel::AddItem(const ToolbarItem& item, bool is_component) { +void ToolbarActionsModel::AddItem(const ToolbarItem& item) { // We only use AddItem() once the system is initialized. DCHECK(actions_initialized_); @@ -342,7 +341,7 @@ // extensions go at their previous position. size_t new_index = 0; if (is_new_extension) { - new_index = is_component ? 0 : visible_icon_count(); + new_index = visible_icon_count(); // For the last-known position, we use the index of the extension that is // just before this extension, plus one. (Note that this isn't the same // as new_index + 1, because last_known_positions_ can include disabled @@ -632,7 +631,7 @@ DCHECK(use_redesign_); ToolbarItem component_item(action_id, COMPONENT_ACTION); DCHECK(!HasItem(component_item)); - AddItem(component_item, true); + AddItem(component_item); } void ToolbarActionsModel::RemoveComponentAction(const std::string& action_id) {
diff --git a/chrome/browser/ui/toolbar/toolbar_actions_model.h b/chrome/browser/ui/toolbar/toolbar_actions_model.h index b8b99d5..c5fc84c797 100644 --- a/chrome/browser/ui/toolbar/toolbar_actions_model.h +++ b/chrome/browser/ui/toolbar/toolbar_actions_model.h
@@ -258,12 +258,11 @@ bool HasItem(const ToolbarItem& item) const; // Adds |item| to the toolbar. If the item has an existing preference for - // toolbar position, that will be used to determine its location. If - // |is_component| is true, the item will be given a default postion of 0, - // otherwise the default is at the end of the visible items. If the toolbar is - // in highlighting mode, the item will not be visible until highlighting mode - // is exited. - void AddItem(const ToolbarItem& item, bool is_component); + // toolbar position, that will be used to determine its location. Otherwise + // it will be placed at the end of the visible items. If the toolbar is in + // highlighting mode, the item will not be visible until highlighting mode is + // exited. + void AddItem(const ToolbarItem& item); // Removes |item| from the toolbar. If the toolbar is in highlighting mode, // the item is also removed from the highlighted list (if present).
diff --git a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc index a4bbd98..dbb66e5 100644 --- a/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc +++ b/chrome/browser/ui/toolbar/toolbar_actions_model_unittest.cc
@@ -1308,36 +1308,6 @@ observer()->inserted_count() - observer()->removed_count()); } -TEST_F(ToolbarActionsModelUnitTest, ComponentExtensionsAddedToEnd) { - Init(); - - ASSERT_TRUE(AddBrowserActionExtensions()); - - EXPECT_EQ(browser_action_a()->id(), GetActionIdAtIndex(0)); - EXPECT_EQ(browser_action_b()->id(), GetActionIdAtIndex(1)); - EXPECT_EQ(browser_action_c()->id(), GetActionIdAtIndex(2)); - - const char kName[] = "component"; - extensions::DictionaryBuilder manifest; - manifest.Set("name", kName) - .Set("description", "An extension") - .Set("manifest_version", 2) - .Set("version", "1.0.0") - .Set("browser_action", extensions::DictionaryBuilder().Build()); - scoped_refptr<const extensions::Extension> component_extension = - extensions::ExtensionBuilder() - .SetManifest(manifest.Build()) - .SetID(crx_file::id_util::GenerateId(kName)) - .SetLocation(extensions::Manifest::COMPONENT) - .Build(); - service()->AddExtension(component_extension.get()); - - EXPECT_EQ(component_extension.get()->id(), GetActionIdAtIndex(0)); - EXPECT_EQ(browser_action_a()->id(), GetActionIdAtIndex(1)); - EXPECT_EQ(browser_action_b()->id(), GetActionIdAtIndex(2)); - EXPECT_EQ(browser_action_c()->id(), GetActionIdAtIndex(3)); -} - // Test various different reorderings, removals, and reinsertions of the // toolbar with component actions. TEST_F(ToolbarActionsModelUnitTest,
diff --git a/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc b/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc index 217be79c..7a7bb6a 100644 --- a/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc +++ b/chrome/browser/ui/views/media_router/media_router_ui_browsertest.cc
@@ -8,6 +8,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/browser/ui/toolbar/media_router_action.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_delegate.h" #include "chrome/browser/ui/views/frame/browser_view.h" @@ -43,6 +44,8 @@ false)); media_router_action_.reset(new MediaRouterAction(browser(), browser_action_test_util_->GetToolbarActionsBar())); + // Toggle the "always show" setting on. + media_router_action_->ToggleVisibilityPreference(); toolbar_action_view_widget_ = new views::Widget(); views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); @@ -58,6 +61,8 @@ void TearDownOnMainThread() override { toolbar_action_view_widget_->Close(); + // Toggle the "always show" setting off. + media_router_action_->ToggleVisibilityPreference(); media_router_action_.reset(); browser_action_test_util_.reset(); InProcessBrowserTest::TearDownOnMainThread();
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc index 90d920f8..9d5bfa06 100644 --- a/chrome/browser/ui/views/tabs/tab.cc +++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -156,7 +156,7 @@ SkColor fill_color, SkColor stroke_color, bool use_fill_and_stroke_images, - ui::ScaleFactor scale_factor, + float scale_factor, const gfx::Size& size); ~ImageCacheEntryMetadata(); @@ -167,7 +167,7 @@ SkColor fill_color; // Both colors only needed by MD SkColor stroke_color; bool use_fill_and_stroke_images; - ui::ScaleFactor scale_factor; + float scale_factor; gfx::Size size; }; @@ -176,7 +176,7 @@ SkColor fill_color, SkColor stroke_color, bool use_fill_and_stroke_images, - ui::ScaleFactor scale_factor, + float scale_factor, const gfx::Size& size) : resource_id(resource_id), fill_color(fill_color), @@ -184,8 +184,6 @@ use_fill_and_stroke_images(use_fill_and_stroke_images), scale_factor(scale_factor), size(size) { - DCHECK_NE(ui::SCALE_FACTOR_NONE, scale_factor); - // Some fields are only relevant for pre-MD vs. MD. Erase the irrelevant ones // so they don't cause incorrect cache misses. // TODO(pkasting): Remove |resource_id| field when non-MD code is deleted. @@ -1548,7 +1546,7 @@ const ImageCacheEntryMetadata metadata( fill_id, tp->GetColor(ThemeProperties::COLOR_BACKGROUND_TAB), controller_->GetToolbarTopSeparatorColor(), use_fill_and_stroke_images, - ui::GetSupportedScaleFactor(canvas->image_scale()), size()); + canvas->image_scale(), size()); auto it = std::find_if( g_image_cache->begin(), g_image_cache->end(), [&metadata](const ImageCacheEntry& e) { return e.metadata == metadata; });
diff --git a/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.cc b/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.cc index ad698087..a8ff8a1c 100644 --- a/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.cc +++ b/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.cc
@@ -15,6 +15,8 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_window.h" +#include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/toolbar/component_toolbar_actions_factory.h" #include "chrome/browser/ui/toolbar/media_router_action.h" #include "chrome/browser/ui/webui/constrained_web_dialog_ui.h" #include "chrome/browser/ui/webui/media_router/media_router_ui.h" @@ -52,10 +54,9 @@ // will look like. class MediaRouterDialogDelegate : public WebDialogDelegate { public: - MediaRouterDialogDelegate(base::WeakPtr<MediaRouterAction> action, + explicit MediaRouterDialogDelegate( const base::WeakPtr<MediaRouterDialogControllerImpl>& controller) - : action_(action), - controller_(controller) {} + : controller_(controller) {} ~MediaRouterDialogDelegate() override {} // WebDialogDelegate implementation. @@ -77,7 +78,13 @@ // MediaRouterUI adds its own message handlers. } - void GetDialogSize(gfx::Size* size) const override; + void GetDialogSize(gfx::Size* size) const override { + DCHECK(size); + // GetDialogSize() is called when the browser window resizes. We may want to + // update the maximum height of the dialog and scale the WebUI to the new + // height. |size| is not set because the dialog is auto-resizeable. + controller_->UpdateMaxDialogSize(); + } std::string GetDialogArgs() const override { return std::string(); @@ -86,8 +93,6 @@ void OnDialogClosed(const std::string& json_retval) override { // We don't delete |this| here because this class is owned // by ConstrainedWebDialogDelegate. - if (action_) - action_->OnPopupHidden(); } void OnCloseContents(WebContents* source, bool* out_close_dialog) override { @@ -100,20 +105,11 @@ } private: - base::WeakPtr<MediaRouterAction> action_; base::WeakPtr<MediaRouterDialogControllerImpl> controller_; DISALLOW_COPY_AND_ASSIGN(MediaRouterDialogDelegate); }; -void MediaRouterDialogDelegate::GetDialogSize(gfx::Size* size) const { - DCHECK(size); - // GetDialogSize() is called when the browser window resizes. We may want to - // update the maximum height of the dialog and scale the WebUI to the new - // height. |size| is not set because the dialog is auto-resizeable. - controller_->UpdateMaxDialogSize(); -} - } // namespace // static @@ -160,7 +156,10 @@ WebContents* web_contents) : MediaRouterDialogController(web_contents), media_router_dialog_pending_(false), + tab_strip_model_observer_(this), weak_ptr_factory_(this) { + tab_strip_model_observer_.Add( + chrome::FindBrowserWithWebContents(initiator())->tab_strip_model()); } MediaRouterDialogControllerImpl::~MediaRouterDialogControllerImpl() { @@ -173,12 +172,7 @@ void MediaRouterDialogControllerImpl::SetMediaRouterAction( const base::WeakPtr<MediaRouterAction>& action) { - if (!action_) - action_ = action; -} - -bool MediaRouterDialogControllerImpl::IsShowingMediaRouterDialog() const { - return GetMediaRouterDialog() != nullptr; + action_ = action; } void MediaRouterDialogControllerImpl::UpdateMaxDialogSize() { @@ -208,6 +202,25 @@ } } +bool MediaRouterDialogControllerImpl::IsShowingMediaRouterDialog() const { + return GetMediaRouterDialog() != nullptr; +} + +bool MediaRouterDialogControllerImpl::ShowMediaRouterDialog() { + if (!action_) + ShowMediaRouterAction(); + return MediaRouterDialogController::ShowMediaRouterDialog(); +} + +void MediaRouterDialogControllerImpl::ActiveTabChanged( + content::WebContents* old_contents, + content::WebContents* new_contents, + int index, + int reason) { + if (IsShowingMediaRouterDialog() && !action_) + ShowMediaRouterAction(); +} + void MediaRouterDialogControllerImpl::CloseMediaRouterDialog() { WebContents* media_router_dialog = GetMediaRouterDialog(); if (!media_router_dialog) @@ -235,7 +248,7 @@ // |web_dialog_delegate|'s owner is |constrained_delegate|. // |constrained_delegate| is owned by the parent |views::View|. WebDialogDelegate* web_dialog_delegate = - new MediaRouterDialogDelegate(action_, weak_ptr_factory_.GetWeakPtr()); + new MediaRouterDialogDelegate(weak_ptr_factory_.GetWeakPtr()); // |ShowConstrainedWebDialogWithAutoResize()| will end up creating // ConstrainedWebDialogDelegateViewViews containing a WebContents containing @@ -266,14 +279,15 @@ dialog_observer_.reset(new DialogWebContentsObserver( media_router_dialog, this)); - - if (action_) - action_->OnPopupShown(); } void MediaRouterDialogControllerImpl::Reset() { MediaRouterDialogController::Reset(); dialog_observer_.reset(); + if (action_) { + action_->OnDialogHidden(); + action_->MaybeRemoveAction(); + } } void MediaRouterDialogControllerImpl::OnDialogNavigated( @@ -295,6 +309,9 @@ media_router_dialog_pending_ = false; PopulateDialog(media_router_dialog); + + if (action_) + action_->OnDialogShown(); } void MediaRouterDialogControllerImpl::PopulateDialog( @@ -325,4 +342,19 @@ } } +void MediaRouterDialogControllerImpl::ShowMediaRouterAction() { + Profile* profile = + Profile::FromBrowserContext(initiator()->GetBrowserContext()); + if (!profile) + return; + + ToolbarActionsModel* model = ToolbarActionsModel::Get(profile); + if (model && + !model->HasComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId)) { + model->AddComponentAction( + ComponentToolbarActionsFactory::kMediaRouterActionId); + } +} + } // namespace media_router
diff --git a/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h b/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h index 809bee8..c24a2bd0 100644 --- a/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h +++ b/chrome/browser/ui/webui/media_router/media_router_dialog_controller_impl.h
@@ -8,7 +8,9 @@ #include "base/gtest_prod_util.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "base/scoped_observer.h" #include "chrome/browser/media/router/media_router_dialog_controller.h" +#include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_user_data.h" @@ -22,7 +24,8 @@ // This class is not thread safe and must be called on the UI thread. class MediaRouterDialogControllerImpl : public content::WebContentsUserData<MediaRouterDialogControllerImpl>, - public MediaRouterDialogController { + public MediaRouterDialogController, + public TabStripModelObserver { public: ~MediaRouterDialogControllerImpl() override; @@ -36,10 +39,19 @@ // |action| must always be non-null. void SetMediaRouterAction(const base::WeakPtr<MediaRouterAction>& action); + void UpdateMaxDialogSize(); + // MediaRouterDialogController: bool IsShowingMediaRouterDialog() const override; + bool ShowMediaRouterDialog() override; - void UpdateMaxDialogSize(); + // ToolbarStripModelObserver: + void ActiveTabChanged(content::WebContents* old_contents, + content::WebContents* new_contents, + int index, + int reason) override; + + MediaRouterAction* action_for_test() { return action_.get(); } private: class DialogWebContentsObserver; @@ -60,12 +72,17 @@ void PopulateDialog(content::WebContents* media_router_dialog); + void ShowMediaRouterAction(); + std::unique_ptr<DialogWebContentsObserver> dialog_observer_; // True if the controller is waiting for a new media router dialog to be // created. bool media_router_dialog_pending_; + ScopedObserver<TabStripModel, TabStripModelObserver> + tab_strip_model_observer_; + // |action_| refers to the MediaRouterAction on the toolbar, rather than // overflow menu. A MediaRouterAction is always created for the toolbar // first. Any subsequent creations for the overflow menu will not be set as
diff --git a/chrome/browser/ui/webui/options/clear_browser_data_handler.cc b/chrome/browser/ui/webui/options/clear_browser_data_handler.cc index 15bf8b3..4f451ebd 100644 --- a/chrome/browser/ui/webui/options/clear_browser_data_handler.cc +++ b/chrome/browser/ui/webui/options/clear_browser_data_handler.cc
@@ -383,7 +383,7 @@ web_ui()->CallJavascriptFunctionUnsafe( "ClearBrowserDataOverlay.updateCounter", base::StringValue(result->source()->GetPrefName()), - base::StringValue(GetCounterTextFromResult(result.get()))); + base::StringValue(GetChromeCounterTextFromResult(result.get()))); } void ClearBrowserDataHandler::OnStateChanged() {
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc index 4649e648..2fd75f0 100644 --- a/chrome/browser/ui/webui/options/content_settings_handler.cc +++ b/chrome/browser/ui/webui/options/content_settings_handler.cc
@@ -84,14 +84,6 @@ namespace options { -// This struct is declared early so that it can used by functions below. -struct ContentSettingsHandler::ChooserTypeNameEntry { - ContentSettingsType type; - ChooserContextBase* (*get_context)(Profile*); - const char* name; - const char* ui_name_key; -}; - namespace { struct ContentSettingWithExceptions { @@ -101,15 +93,6 @@ UserMetricsAction uma; }; -// Maps from the UI string to the object it represents (for sorting purposes). -typedef std::multimap<std::string, const base::DictionaryValue*> SortedObjects; -// Maps from a secondary URL to the set of objects it has permission to access. -typedef std::map<GURL, SortedObjects> OneOriginObjects; -// Maps from a primary URL/source pair to a OneOriginObjects. All the mappings -// in OneOriginObjects share the given primary URL and source. -typedef std::map<std::pair<GURL, std::string>, OneOriginObjects> - AllOriginObjects; - // The AppFilter is used in AddExceptionsGrantedByHostedApps() to choose // extensions which should have their extent displayed. typedef bool (*AppFilter)(const extensions::Extension& app, @@ -121,17 +104,6 @@ const char kAppName[] = "appName"; const char kAppId[] = "appId"; const char kZoom[] = "zoom"; -const char kObject[] = "object"; -const char kObjectName[] = "objectName"; - -ChooserContextBase* GetUsbChooserContext(Profile* profile) { - return UsbChooserContextFactory::GetForProfile(profile); -} - -const ContentSettingsHandler::ChooserTypeNameEntry kChooserTypeGroupNames[] = { - {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, - "usb-devices", "name"}, -}; // A pseudo content type. We use it to display data like a content setting even // though it is not a real content setting. @@ -240,15 +212,6 @@ return web_ui->GetWebContents()->GetBrowserContext(); } -const ContentSettingsHandler::ChooserTypeNameEntry* ChooserTypeFromGroupName( - const std::string& name) { - for (const auto& chooser_type : kChooserTypeGroupNames) { - if (chooser_type.name == name) - return &chooser_type; - } - return nullptr; -} - // Create a DictionaryValue* that will act as a data source for a single row // in the Geolocation exceptions table. std::unique_ptr<base::DictionaryValue> GetGeolocationExceptionForPage( @@ -292,32 +255,6 @@ return base::WrapUnique(exception); } -// Create a DictionaryValue* that will act as a data source for a single row -// in a chooser permission exceptions table. -std::unique_ptr<base::DictionaryValue> GetChooserExceptionForPage( - const GURL& requesting_origin, - const GURL& embedding_origin, - const std::string& provider_name, - const std::string& name, - const base::DictionaryValue* object) { - std::unique_ptr<base::DictionaryValue> exception(new base::DictionaryValue()); - - std::string setting_string = - content_settings::ContentSettingToString(CONTENT_SETTING_DEFAULT); - DCHECK(!setting_string.empty()); - - exception->SetString(site_settings::kSetting, setting_string); - exception->SetString(site_settings::kOrigin, requesting_origin.spec()); - exception->SetString( - site_settings::kEmbeddingOrigin, embedding_origin.spec()); - exception->SetString(site_settings::kSource, provider_name); - if (object) { - exception->SetString(kObjectName, name); - exception->Set(kObject, object->CreateDeepCopy()); - } - return exception; -} - // Returns true whenever the |extension| is hosted and has |permission|. // Must have the AppFilter signature. template <APIPermission::ID permission> @@ -1050,19 +987,22 @@ } void ContentSettingsHandler::UpdateAllChooserExceptionsViewsFromModel() { - for (const ChooserTypeNameEntry& chooser_type : kChooserTypeGroupNames) + for (const site_settings::ChooserTypeNameEntry& chooser_type : + site_settings::kChooserTypeGroupNames) UpdateChooserExceptionsViewFromModel(chooser_type); } void ContentSettingsHandler::UpdateAllOTRChooserExceptionsViewsFromModel() { - for (const ChooserTypeNameEntry& chooser_type : kChooserTypeGroupNames) + for (const site_settings::ChooserTypeNameEntry& chooser_type : + site_settings::kChooserTypeGroupNames) UpdateOTRChooserExceptionsViewFromModel(chooser_type); } void ContentSettingsHandler::UpdateChooserExceptionsViewFromModel( - const ChooserTypeNameEntry& chooser_type) { + const site_settings::ChooserTypeNameEntry& chooser_type) { base::ListValue exceptions; - GetChooserExceptionsFromProfile(false, chooser_type, &exceptions); + site_settings::GetChooserExceptionsFromProfile( + Profile::FromWebUI(web_ui()), false, chooser_type, &exceptions); base::StringValue type_string(chooser_type.name); web_ui()->CallJavascriptFunctionUnsafe("ContentSettings.setExceptions", type_string, exceptions); @@ -1071,12 +1011,13 @@ } void ContentSettingsHandler::UpdateOTRChooserExceptionsViewFromModel( - const ChooserTypeNameEntry& chooser_type) { + const site_settings::ChooserTypeNameEntry& chooser_type) { if (!Profile::FromWebUI(web_ui())->HasOffTheRecordProfile()) return; base::ListValue exceptions; - GetChooserExceptionsFromProfile(true, chooser_type, &exceptions); + site_settings::GetChooserExceptionsFromProfile( + Profile::FromWebUI(web_ui()), true, chooser_type, &exceptions); base::StringValue type_string(chooser_type.name); web_ui()->CallJavascriptFunctionUnsafe("ContentSettings.setOTRExceptions", type_string, exceptions); @@ -1196,97 +1137,6 @@ type_string, exceptions); } -void ContentSettingsHandler::GetChooserExceptionsFromProfile( - bool incognito, - const ChooserTypeNameEntry& chooser_type, - base::ListValue* exceptions) { - Profile* profile = Profile::FromWebUI(web_ui()); - if (incognito) { - if (profile->HasOffTheRecordProfile()) - profile = profile->GetOffTheRecordProfile(); - else - return; - } - - ChooserContextBase* chooser_context = chooser_type.get_context(profile); - std::vector<std::unique_ptr<ChooserContextBase::Object>> objects = - chooser_context->GetAllGrantedObjects(); - AllOriginObjects all_origin_objects; - for (const auto& object : objects) { - std::string name; - bool found = object->object.GetString(chooser_type.ui_name_key, &name); - DCHECK(found); - // It is safe for this structure to hold references into |objects| because - // they are both destroyed at the end of this function. - all_origin_objects[make_pair(object->requesting_origin, - object->source)][object->embedding_origin] - .insert(make_pair(name, &object->object)); - } - - // Keep the exceptions sorted by provider so they will be displayed in - // precedence order. - std::vector<std::unique_ptr<base::DictionaryValue>> - all_provider_exceptions[HostContentSettingsMap::NUM_PROVIDER_TYPES]; - - for (const auto& all_origin_objects_entry : all_origin_objects) { - const GURL& requesting_origin = all_origin_objects_entry.first.first; - const std::string& source = all_origin_objects_entry.first.second; - const OneOriginObjects& one_origin_objects = - all_origin_objects_entry.second; - - auto& this_provider_exceptions = all_provider_exceptions - [HostContentSettingsMap::GetProviderTypeFromSource(source)]; - - // Add entries for any non-embedded origins. - bool has_embedded_entries = false; - for (const auto& one_origin_objects_entry : one_origin_objects) { - const GURL& embedding_origin = one_origin_objects_entry.first; - const SortedObjects& sorted_objects = one_origin_objects_entry.second; - - // Skip the embedded settings which will be added below. - if (requesting_origin != embedding_origin) { - has_embedded_entries = true; - continue; - } - - for (const auto& sorted_objects_entry : sorted_objects) { - this_provider_exceptions.push_back(GetChooserExceptionForPage( - requesting_origin, embedding_origin, source, - sorted_objects_entry.first, sorted_objects_entry.second)); - } - } - - if (has_embedded_entries) { - // Add a "parent" entry that simply acts as a heading for all entries - // where |requesting_origin| has been embedded. - this_provider_exceptions.push_back( - GetChooserExceptionForPage(requesting_origin, requesting_origin, - source, std::string(), nullptr)); - - // Add the "children" for any embedded settings. - for (const auto& one_origin_objects_entry : one_origin_objects) { - const GURL& embedding_origin = one_origin_objects_entry.first; - const SortedObjects& sorted_objects = one_origin_objects_entry.second; - - // Skip the non-embedded setting which we already added above. - if (requesting_origin == embedding_origin) - continue; - - for (const auto& sorted_objects_entry : sorted_objects) { - this_provider_exceptions.push_back(GetChooserExceptionForPage( - requesting_origin, embedding_origin, source, - sorted_objects_entry.first, sorted_objects_entry.second)); - } - } - } - } - - for (auto& one_provider_exceptions : all_provider_exceptions) { - for (auto& exception : one_provider_exceptions) - exceptions->Append(std::move(exception)); - } -} - void ContentSettingsHandler::RemoveExceptionFromHostContentSettingsMap( const base::ListValue* args, ContentSettingsType type) { @@ -1350,7 +1200,7 @@ } void ContentSettingsHandler::RemoveChooserException( - const ChooserTypeNameEntry* chooser_type, + const site_settings::ChooserTypeNameEntry* chooser_type, const base::ListValue* args) { std::string mode; bool rv = args->GetString(1, &mode); @@ -1445,8 +1295,8 @@ return; } - const ChooserTypeNameEntry* chooser_type = - ChooserTypeFromGroupName(type_string); + const site_settings::ChooserTypeNameEntry* chooser_type = + site_settings::ChooserTypeFromGroupName(type_string); if (chooser_type) { RemoveChooserException(chooser_type, args); return;
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.h b/chrome/browser/ui/webui/options/content_settings_handler.h index a4d047d0..768ff702 100644 --- a/chrome/browser/ui/webui/options/content_settings_handler.h +++ b/chrome/browser/ui/webui/options/content_settings_handler.h
@@ -28,6 +28,10 @@ class Profile; class ProtocolHandlerRegistry; +namespace site_settings { +struct ChooserTypeNameEntry; +} + namespace options { class ContentSettingsHandler : public OptionsPageUIHandler, @@ -35,8 +39,6 @@ public content::NotificationObserver, public PepperFlashSettingsManager::Client { public: - struct ChooserTypeNameEntry; - ContentSettingsHandler(); ~ContentSettingsHandler() override; @@ -161,11 +163,11 @@ // Clobbers and rebuilds the exception table for a particular chooser-based // permission. void UpdateChooserExceptionsViewFromModel( - const ChooserTypeNameEntry& chooser_type); + const site_settings::ChooserTypeNameEntry& chooser_type); // As above, but only OTR tables. void UpdateOTRChooserExceptionsViewFromModel( - const ChooserTypeNameEntry& chooser_type); + const site_settings::ChooserTypeNameEntry& chooser_type); // Modifies the zoom level exceptions list to display correct chrome // signin page entry. When the legacy (non-WebView-based) signin page @@ -207,8 +209,9 @@ // Removes one exception for a chooser-based permission. |args| contains the // parameters passed to RemoveException(). - void RemoveChooserException(const ChooserTypeNameEntry* chooser_type, - const base::ListValue* args); + void RemoveChooserException( + const site_settings::ChooserTypeNameEntry* chooser_type, + const base::ListValue* args); // Callbacks used by the page ------------------------------------------------ @@ -248,11 +251,6 @@ void RefreshFlashMediaSettings(); - // Fills in |exceptions| with Values for the given |type| from |map|. - void GetChooserExceptionsFromProfile(bool incognito, - const ChooserTypeNameEntry& type, - base::ListValue* exceptions); - void OnPepperFlashPrefChanged(); // content::HostZoomMap subscription.
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc index 6337e83..185bb9e 100644 --- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -1181,6 +1181,8 @@ {"siteSettingsPopups", IDS_SETTINGS_SITE_SETTINGS_POPUPS}, {"siteSettingsUnsandboxedPlugins", IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS}, + {"siteSettingsUsbDevices", + IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES}, {"siteSettingsFullscreen", IDS_SETTINGS_SITE_SETTINGS_FULLSCREEN}, {"siteSettingsMaySaveCookies", IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES},
diff --git a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc index add5962..0835756 100644 --- a/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc +++ b/chrome/browser/ui/webui/settings/settings_clear_browsing_data_handler.cc
@@ -303,7 +303,7 @@ "cr.webUIListenerCallback", base::StringValue("update-counter-text"), base::StringValue(result->source()->GetPrefName()), - base::StringValue(GetCounterTextFromResult(result.get()))); + base::StringValue(GetChromeCounterTextFromResult(result.get()))); } } // namespace settings
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.cc b/chrome/browser/ui/webui/settings/site_settings_handler.cc index e1e590d..03595e1 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler.cc +++ b/chrome/browser/ui/webui/settings/site_settings_handler.cc
@@ -13,6 +13,7 @@ #include "base/values.h" #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/permissions/chooser_context_base.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/site_settings_helper.h" #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" @@ -121,6 +122,14 @@ base::Bind(&SiteSettingsHandler::HandleClearUsage, base::Unretained(this))); web_ui()->RegisterMessageCallback( + "fetchUsbDevices", + base::Bind(&SiteSettingsHandler::HandleFetchUsbDevices, + base::Unretained(this))); + web_ui()->RegisterMessageCallback( + "removeUsbDevice", + base::Bind(&SiteSettingsHandler::HandleRemoveUsbDevice, + base::Unretained(this))); + web_ui()->RegisterMessageCallback( "setDefaultValueForContentType", base::Bind(&SiteSettingsHandler::HandleSetDefaultValueForContentType, base::Unretained(this))); @@ -251,6 +260,45 @@ } } +void SiteSettingsHandler::HandleFetchUsbDevices(const base::ListValue* args) { + AllowJavascript(); + + CHECK_EQ(1U, args->GetSize()); + const base::Value* callback_id; + CHECK(args->Get(0, &callback_id)); + + base::ListValue exceptions; + const site_settings::ChooserTypeNameEntry* chooser_type = + site_settings::ChooserTypeFromGroupName(site_settings::kGroupTypeUsb); + // TODO(finnur): Figure out whether incognito permissions are also needed. + site_settings::GetChooserExceptionsFromProfile( + profile_, false, *chooser_type, &exceptions); + ResolveJavascriptCallback(*callback_id, exceptions); +} + +void SiteSettingsHandler::HandleRemoveUsbDevice(const base::ListValue* args) { + CHECK_EQ(3U, args->GetSize()); + + std::string origin_string; + CHECK(args->GetString(0, &origin_string)); + GURL requesting_origin(origin_string); + CHECK(requesting_origin.is_valid()); + + std::string embedding_origin_string; + CHECK(args->GetString(1, &embedding_origin_string)); + GURL embedding_origin(embedding_origin_string); + CHECK(embedding_origin.is_valid()); + + const base::DictionaryValue* object = nullptr; + CHECK(args->GetDictionary(2, &object)); + + const site_settings::ChooserTypeNameEntry* chooser_type = + site_settings::ChooserTypeFromGroupName(site_settings::kGroupTypeUsb); + ChooserContextBase* chooser_context = chooser_type->get_context(profile_); + chooser_context->RevokeObjectPermission(requesting_origin, embedding_origin, + *object); +} + void SiteSettingsHandler::HandleSetDefaultValueForContentType( const base::ListValue* args) { CHECK_EQ(2U, args->GetSize());
diff --git a/chrome/browser/ui/webui/settings/site_settings_handler.h b/chrome/browser/ui/webui/settings/site_settings_handler.h index 4442c50a..5025c37 100644 --- a/chrome/browser/ui/webui/settings/site_settings_handler.h +++ b/chrome/browser/ui/webui/settings/site_settings_handler.h
@@ -33,6 +33,7 @@ void OnJavascriptAllowed() override; void OnJavascriptDisallowed() override; + // Usage info. void OnGetUsageInfo(const storage::UsageInfoEntries& entries); void OnUsageInfoCleared(storage::QuotaStatusCode code); @@ -54,6 +55,12 @@ // Deletes the storage being used for a given host. void HandleClearUsage(const base::ListValue* args); + // Handles the request for a list of all USB devices. + void HandleFetchUsbDevices(const base::ListValue* args); + + // Removes a particular USB device permission. + void HandleRemoveUsbDevice(const base::ListValue* args); + // Gets and sets the default value for a particular content settings type. void HandleSetDefaultValueForContentType(const base::ListValue* args); void HandleGetDefaultValueForContentType(const base::ListValue* args);
diff --git a/chrome/browser/ui/webui/site_settings_helper.cc b/chrome/browser/ui/webui/site_settings_helper.cc index 78adacb..a0b57cf 100644 --- a/chrome/browser/ui/webui/site_settings_helper.cc +++ b/chrome/browser/ui/webui/site_settings_helper.cc
@@ -6,7 +6,9 @@ #include "base/memory/ptr_util.h" #include "base/values.h" +#include "chrome/browser/permissions/chooser_context_base.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/usb/usb_chooser_context_factory.h" #include "chrome/common/pref_names.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/prefs/pref_service.h" @@ -19,36 +21,30 @@ const char kSource[] = "source"; const char kEmbeddingOrigin[] = "embeddingOrigin"; const char kPreferencesSource[] = "preference"; +const char kObject[] = "object"; +const char kObjectName[] = "objectName"; -struct ContentSettingsTypeNameEntry { - ContentSettingsType type; - const char* name; -}; +const char kGroupTypeUsb[] = "usb-devices"; -const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {CONTENT_SETTINGS_TYPE_COOKIES, "cookies"}, - {CONTENT_SETTINGS_TYPE_IMAGES, "images"}, - {CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript"}, - {CONTENT_SETTINGS_TYPE_PLUGINS, "plugins"}, - {CONTENT_SETTINGS_TYPE_POPUPS, "popups"}, - {CONTENT_SETTINGS_TYPE_GEOLOCATION, "location"}, - {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications"}, - {CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, "auto-select-certificate"}, - {CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen"}, - {CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock"}, - {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "register-protocol-handler"}, - {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic"}, - {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera"}, - {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker"}, - {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "multiple-automatic-downloads"}, - {CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex"}, - {CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, "ssl-cert-decisions"}, -#if defined(OS_CHROMEOS) - {CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, "protectedContent"}, -#endif - {CONTENT_SETTINGS_TYPE_KEYGEN, "keygen"}, - {CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync"}, -}; +ChooserContextBase* GetUsbChooserContext(Profile* profile) { + return reinterpret_cast<ChooserContextBase*>( + UsbChooserContextFactory::GetForProfile(profile)); +} + +namespace { + +// Maps from the UI string to the object it represents (for sorting purposes). +typedef std::multimap<std::string, const base::DictionaryValue*> SortedObjects; + +// Maps from a secondary URL to the set of objects it has permission to access. +typedef std::map<GURL, SortedObjects> OneOriginObjects; + +// Maps from a primary URL/source pair to a OneOriginObjects. All the mappings +// in OneOriginObjects share the given primary URL and source. +typedef std::map<std::pair<GURL, std::string>, OneOriginObjects> + AllOriginObjects; + +} // namespace bool HasRegisteredGroupName(ContentSettingsType type) { for (size_t i = 0; i < arraysize(kContentSettingsTypeGroupNames); ++i) { @@ -232,4 +228,128 @@ } } +const ChooserTypeNameEntry* ChooserTypeFromGroupName(const std::string& name) { + for (const auto& chooser_type : kChooserTypeGroupNames) { + if (chooser_type.name == name) + return &chooser_type; + } + return nullptr; +} + +// Create a DictionaryValue* that will act as a data source for a single row +// in a chooser permission exceptions table. +std::unique_ptr<base::DictionaryValue> GetChooserExceptionForPage( + const GURL& requesting_origin, + const GURL& embedding_origin, + const std::string& provider_name, + const std::string& name, + const base::DictionaryValue* object) { + std::unique_ptr<base::DictionaryValue> exception(new base::DictionaryValue()); + + std::string setting_string = + content_settings::ContentSettingToString(CONTENT_SETTING_DEFAULT); + DCHECK(!setting_string.empty()); + + exception->SetString(site_settings::kSetting, setting_string); + exception->SetString(site_settings::kOrigin, requesting_origin.spec()); + exception->SetString( + site_settings::kEmbeddingOrigin, embedding_origin.spec()); + exception->SetString(site_settings::kSource, provider_name); + if (object) { + exception->SetString(kObjectName, name); + exception->Set(kObject, object->CreateDeepCopy()); + } + return exception; +} + +void GetChooserExceptionsFromProfile( + Profile* profile, + bool incognito, + const ChooserTypeNameEntry& chooser_type, + base::ListValue* exceptions) { + if (incognito) { + if (!profile->HasOffTheRecordProfile()) + return; + profile = profile->GetOffTheRecordProfile(); + } + + ChooserContextBase* chooser_context = chooser_type.get_context(profile); + std::vector<std::unique_ptr<ChooserContextBase::Object>> objects = + chooser_context->GetAllGrantedObjects(); + AllOriginObjects all_origin_objects; + for (const auto& object : objects) { + std::string name; + bool found = object->object.GetString(chooser_type.ui_name_key, &name); + DCHECK(found); + // It is safe for this structure to hold references into |objects| because + // they are both destroyed at the end of this function. + all_origin_objects[make_pair(object->requesting_origin, + object->source)][object->embedding_origin] + .insert(make_pair(name, &object->object)); + } + + // Keep the exceptions sorted by provider so they will be displayed in + // precedence order. + std::vector<std::unique_ptr<base::DictionaryValue>> + all_provider_exceptions[HostContentSettingsMap::NUM_PROVIDER_TYPES]; + + for (const auto& all_origin_objects_entry : all_origin_objects) { + const GURL& requesting_origin = all_origin_objects_entry.first.first; + const std::string& source = all_origin_objects_entry.first.second; + const OneOriginObjects& one_origin_objects = + all_origin_objects_entry.second; + + auto& this_provider_exceptions = all_provider_exceptions + [HostContentSettingsMap::GetProviderTypeFromSource(source)]; + + // Add entries for any non-embedded origins. + bool has_embedded_entries = false; + for (const auto& one_origin_objects_entry : one_origin_objects) { + const GURL& embedding_origin = one_origin_objects_entry.first; + const SortedObjects& sorted_objects = one_origin_objects_entry.second; + + // Skip the embedded settings which will be added below. + if (requesting_origin != embedding_origin) { + has_embedded_entries = true; + continue; + } + + for (const auto& sorted_objects_entry : sorted_objects) { + this_provider_exceptions.push_back(GetChooserExceptionForPage( + requesting_origin, embedding_origin, source, + sorted_objects_entry.first, sorted_objects_entry.second)); + } + } + + if (has_embedded_entries) { + // Add a "parent" entry that simply acts as a heading for all entries + // where |requesting_origin| has been embedded. + this_provider_exceptions.push_back( + GetChooserExceptionForPage(requesting_origin, requesting_origin, + source, std::string(), nullptr)); + + // Add the "children" for any embedded settings. + for (const auto& one_origin_objects_entry : one_origin_objects) { + const GURL& embedding_origin = one_origin_objects_entry.first; + const SortedObjects& sorted_objects = one_origin_objects_entry.second; + + // Skip the non-embedded setting which we already added above. + if (requesting_origin == embedding_origin) + continue; + + for (const auto& sorted_objects_entry : sorted_objects) { + this_provider_exceptions.push_back(GetChooserExceptionForPage( + requesting_origin, embedding_origin, source, + sorted_objects_entry.first, sorted_objects_entry.second)); + } + } + } + } + + for (auto& one_provider_exceptions : all_provider_exceptions) { + for (auto& exception : one_provider_exceptions) + exceptions->Append(std::move(exception)); + } +} + } // namespace site_settings
diff --git a/chrome/browser/ui/webui/site_settings_helper.h b/chrome/browser/ui/webui/site_settings_helper.h index 9ab9f195..413207c 100644 --- a/chrome/browser/ui/webui/site_settings_helper.h +++ b/chrome/browser/ui/webui/site_settings_helper.h
@@ -14,7 +14,9 @@ #include "components/content_settings/core/common/content_settings_types.h" #include "content/public/browser/web_ui.h" +class ChooserContextBase; class HostContentSettingsMap; +class Profile; namespace base { class DictionaryValue; @@ -39,6 +41,9 @@ extern const char kEmbeddingOrigin[]; extern const char kPreferencesSource[]; +// Group types. +extern const char kGroupTypeUsb[]; + // Returns whether a group name has been registered for the given type. bool HasRegisteredGroupName(ContentSettingsType type); @@ -62,6 +67,62 @@ std::vector<std::unique_ptr<base::DictionaryValue>>* exceptions, content::WebUI* web_ui); +// This struct facilitates lookup of a chooser context factory function by name +// for a given content settings type and is declared early so that it can used +// by functions below. +struct ChooserTypeNameEntry { + ContentSettingsType type; + ChooserContextBase* (*get_context)(Profile*); + const char* name; + const char* ui_name_key; +}; + +ChooserContextBase* GetUsbChooserContext(Profile* profile); + +struct ContentSettingsTypeNameEntry { + ContentSettingsType type; + const char* name; +}; + +const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { + {CONTENT_SETTINGS_TYPE_COOKIES, "cookies"}, + {CONTENT_SETTINGS_TYPE_IMAGES, "images"}, + {CONTENT_SETTINGS_TYPE_JAVASCRIPT, "javascript"}, + {CONTENT_SETTINGS_TYPE_PLUGINS, "plugins"}, + {CONTENT_SETTINGS_TYPE_POPUPS, "popups"}, + {CONTENT_SETTINGS_TYPE_GEOLOCATION, "location"}, + {CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "notifications"}, + {CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE, "auto-select-certificate"}, + {CONTENT_SETTINGS_TYPE_FULLSCREEN, "fullscreen"}, + {CONTENT_SETTINGS_TYPE_MOUSELOCK, "mouselock"}, + {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, "register-protocol-handler"}, + {CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, "media-stream-mic"}, + {CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, "media-stream-camera"}, + {CONTENT_SETTINGS_TYPE_PPAPI_BROKER, "ppapi-broker"}, + {CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS, "multiple-automatic-downloads"}, + {CONTENT_SETTINGS_TYPE_MIDI_SYSEX, "midi-sysex"}, + {CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS, "ssl-cert-decisions"}, +#if defined(OS_CHROMEOS) + {CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER, "protectedContent"}, +#endif + {CONTENT_SETTINGS_TYPE_KEYGEN, "keygen"}, + {CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC, "background-sync"}, +}; + +const ChooserTypeNameEntry kChooserTypeGroupNames[] = { + {CONTENT_SETTINGS_TYPE_USB_CHOOSER_DATA, &GetUsbChooserContext, + kGroupTypeUsb, "name"}, +}; + +const ChooserTypeNameEntry* ChooserTypeFromGroupName(const std::string& name); + +// Fills in |exceptions| with Values for the given |chooser_type| from map. +void GetChooserExceptionsFromProfile( + Profile* profile, + bool incognito, + const ChooserTypeNameEntry& chooser_type, + base::ListValue* exceptions); + } // namespace site_settings #endif // CHROME_BROWSER_UI_WEBUI_SITE_SETTINGS_HELPER_H_
diff --git a/chrome/common/extensions/api/automation.idl b/chrome/common/extensions/api/automation.idl index 976bbcd..8c7f666 100644 --- a/chrome/common/extensions/api/automation.idl +++ b/chrome/common/extensions/api/automation.idl
@@ -328,6 +328,7 @@ enum TreeChangeObserverFilter { noTreeChanges, liveRegionTreeChanges, + textMarkerChanges, allTreeChanges };
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index c5e2281e..6eeb338 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc
@@ -2251,7 +2251,9 @@ // user. const char kMediaRouterFirstRunFlowAcknowledged[] = "media_router.firstrunflow.acknowledged"; -#endif +const char kMediaRouterAlwaysShowActionIcon[] = + "media_router.action.always_show"; +#endif // defined(ENABLE_MEDIA_ROUTER) // The base64-encoded representation of the public key to use to validate origin // trial token signatures.
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index cee6e27c..bf1e2714 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h
@@ -826,6 +826,7 @@ extern const char kMediaRouterEnableCloudServices[]; #endif // defined(GOOGLE_CHROME_BUILD) extern const char kMediaRouterFirstRunFlowAcknowledged[]; +extern const char kMediaRouterAlwaysShowActionIcon[]; #endif extern const char kOriginTrialPublicKey[];
diff --git a/chrome/renderer/extensions/automation_internal_custom_bindings.cc b/chrome/renderer/extensions/automation_internal_custom_bindings.cc index 17bfce5e..301e74d0 100644 --- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc +++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
@@ -421,8 +421,7 @@ ScriptContext* context) : ObjectBackedNativeHandler(context), is_active_profile_(true), - tree_change_observer_overall_filter_( - api::automation::TREE_CHANGE_OBSERVER_FILTER_NOTREECHANGES) { + tree_change_observer_overall_filter_(0) { // It's safe to use base::Unretained(this) here because these bindings // will only be called on a valid AutomationInternalCustomBindings instance // and none of the functions have any side effects. @@ -802,7 +801,9 @@ void AutomationInternalCustomBindings::RemoveTreeChangeObserver( const v8::FunctionCallbackInfo<v8::Value>& args) { - if (args.Length() != 1 || !args[0]->IsNumber()) { + // The argument is an integer key for an object which is automatically + // converted to a string. + if (args.Length() != 1 || !args[0]->IsString()) { ThrowInvalidArgumentsException(this); return; } @@ -965,12 +966,9 @@ } void AutomationInternalCustomBindings::UpdateOverallTreeChangeObserverFilter() { - tree_change_observer_overall_filter_ = - api::automation::TREE_CHANGE_OBSERVER_FILTER_NOTREECHANGES; - for (const auto& observer : tree_change_observers_) { - tree_change_observer_overall_filter_ = - std::max(observer.filter, tree_change_observer_overall_filter_); - } + tree_change_observer_overall_filter_ = 0; + for (const auto& observer : tree_change_observers_) + tree_change_observer_overall_filter_ |= 1 << observer.filter; } ui::AXNode* AutomationInternalCustomBindings::GetParent( @@ -1222,20 +1220,29 @@ if (node->data().HasIntAttribute(ui::AX_ATTR_CHILD_TREE_ID)) SendChildTreeIDEvent(tree, node); - switch (tree_change_observer_overall_filter_) { - case api::automation::TREE_CHANGE_OBSERVER_FILTER_NOTREECHANGES: - default: - return; - case api::automation::TREE_CHANGE_OBSERVER_FILTER_LIVEREGIONTREECHANGES: - if (!node->data().HasStringAttribute(ui::AX_ATTR_CONTAINER_LIVE_STATUS) && - node->data().role != ui::AX_ROLE_ALERT) { - return; - } - break; - case api::automation::TREE_CHANGE_OBSERVER_FILTER_ALLTREECHANGES: - break; + bool has_filter = false; + if (tree_change_observer_overall_filter_ & + (1 << + api::automation::TREE_CHANGE_OBSERVER_FILTER_LIVEREGIONTREECHANGES)) { + if (node->data().HasStringAttribute(ui::AX_ATTR_CONTAINER_LIVE_STATUS) || + node->data().role == ui::AX_ROLE_ALERT) { + has_filter = true; + } } + if (tree_change_observer_overall_filter_ & + (1 << api::automation::TREE_CHANGE_OBSERVER_FILTER_TEXTMARKERCHANGES)) { + if (node->data().HasIntListAttribute(ui::AX_ATTR_MARKER_TYPES)) + has_filter = true; + } + + if (tree_change_observer_overall_filter_ & + (1 << api::automation::TREE_CHANGE_OBSERVER_FILTER_ALLTREECHANGES)) + has_filter = true; + + if (!has_filter) + return; + auto iter = axtree_to_tree_cache_map_.find(tree); if (iter == axtree_to_tree_cache_map_.end()) return; @@ -1258,6 +1265,10 @@ continue; } break; + case api::automation::TREE_CHANGE_OBSERVER_FILTER_TEXTMARKERCHANGES: + if (!node->data().HasIntListAttribute(ui::AX_ATTR_MARKER_TYPES)) + continue; + break; case api::automation::TREE_CHANGE_OBSERVER_FILTER_ALLTREECHANGES: break; }
diff --git a/chrome/renderer/extensions/automation_internal_custom_bindings.h b/chrome/renderer/extensions/automation_internal_custom_bindings.h index a6c8a4cc6..0a55808 100644 --- a/chrome/renderer/extensions/automation_internal_custom_bindings.h +++ b/chrome/renderer/extensions/automation_internal_custom_bindings.h
@@ -172,8 +172,8 @@ scoped_refptr<AutomationMessageFilter> message_filter_; bool is_active_profile_; std::vector<TreeChangeObserver> tree_change_observers_; - api::automation::TreeChangeObserverFilter - tree_change_observer_overall_filter_; + // A bit-map of api::automation::TreeChangeObserverFilter. + int tree_change_observer_overall_filter_; std::vector<int> deleted_node_ids_; std::vector<int> text_changed_node_ids_;
diff --git a/chrome/renderer/resources/extensions/automation/automation_node.js b/chrome/renderer/resources/extensions/automation/automation_node.js index fa7e9e7e..f273f76 100644 --- a/chrome/renderer/resources/extensions/automation/automation_node.js +++ b/chrome/renderer/resources/extensions/automation/automation_node.js
@@ -688,6 +688,9 @@ var intListAttributes = [ 'characterOffsets', 'lineBreaks', + 'markerEnds', + 'markerStarts', + 'markerTypes', 'wordEnds', 'wordStarts'];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 18c988c5..0cfb533e 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -10,6 +10,7 @@ import("//chrome/chrome_tests.gni") import("//chrome/common/features.gni") import("//chrome/test/base/js2gtest.gni") +import("//components/os_crypt/features.gni") import("//testing/test.gni") import("//v8/gni/v8.gni") @@ -2128,7 +2129,7 @@ } else { sources -= [ "../browser/password_manager/password_store_x_unittest.cc" ] } - if (is_desktop_linux && current_cpu == "x64") { + if (use_gnome_keyring && current_cpu == "x64") { # Only add this test for 64 bit builds because otherwise we need the 32 # bit library on 64 bit systems when running this test. sources +=
diff --git a/chrome/test/data/webui/settings/site_settings_category_tests.js b/chrome/test/data/webui/settings/site_settings_category_tests.js index d926b56d..8f68198 100644 --- a/chrome/test/data/webui/settings/site_settings_category_tests.js +++ b/chrome/test/data/webui/settings/site_settings_category_tests.js
@@ -103,10 +103,23 @@ for (var key in settings.ContentSettingsTypes) { var category = settings.ContentSettingsTypes[key]; - // All top-level categories must have category text ids and - // descriptions. Categories that only appear under Site Details don't - // need that. - if (category != settings.ContentSettingsTypes.FULLSCREEN) { + // A quick testing note on a few special categories... + + // Full Screen is not a top-level category, and only appears as a + // permission under Site Details. Therefore it has no Category Desc + // that can be tested for. + + // The USB Devices category has no global toggle -- and therefore no + // Category Desc (and has a special way of storing its data). + + // The Protocol Handlers is a special category in that is does not + // store its data like the rest, but it has a global default toggle + // and therefore can be tested like the rest below. + + // Test category text ids and descriptions for those categories that + // have those. + if (category != settings.ContentSettingsTypes.FULLSCREEN && + category != settings.ContentSettingsTypes.USB_DEVICES) { assertNotEquals('', testElement.computeCategoryTextId(category)); assertNotEquals(
diff --git a/components/BUILD.gn b/components/BUILD.gn index 3ceef463..b64dc1c 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn
@@ -64,6 +64,7 @@ "//components/bookmarks/browser:unit_tests", "//components/bookmarks/managed:unit_tests", "//components/browser_sync/browser:unit_tests", + "//components/browsing_data/core:unit_tests", "//components/browsing_data_ui:unit_tests", "//components/bubble:unit_tests", "//components/captive_portal:unit_tests",
diff --git a/components/OWNERS b/components/OWNERS index 00584eb..71931f50 100644 --- a/components/OWNERS +++ b/components/OWNERS
@@ -18,6 +18,7 @@ per-file browser_sync.gypi=file://components/browser_sync/OWNERS +per-file browsing_data_strings.grdp=file://components/browsing_data/OWNERS per-file browsing_data.gypi=file://components/browsing_data/OWNERS per-file bubble.gypi=file://components/bubble/OWNERS
diff --git a/components/autofill/core/browser/ui/card_unmask_prompt_controller_impl.cc b/components/autofill/core/browser/ui/card_unmask_prompt_controller_impl.cc index a7fdb32..738b5ac 100644 --- a/components/autofill/core/browser/ui/card_unmask_prompt_controller_impl.cc +++ b/components/autofill/core/browser/ui/card_unmask_prompt_controller_impl.cc
@@ -322,7 +322,8 @@ base::TimeDelta CardUnmaskPromptControllerImpl::GetSuccessMessageDuration() const { - return base::TimeDelta::FromMilliseconds(500); + return base::TimeDelta::FromMilliseconds( + reason_ == AutofillClient::UNMASK_FOR_PAYMENT_REQUEST ? 0 : 500); } } // namespace autofill
diff --git a/components/browsing_data/core/BUILD.gn b/components/browsing_data/core/BUILD.gn index 927ce1259..aa7e7db 100644 --- a/components/browsing_data/core/BUILD.gn +++ b/components/browsing_data/core/BUILD.gn
@@ -28,8 +28,10 @@ "//components/history/core/browser", "//components/password_manager/core/browser", "//components/prefs:prefs", + "//components/strings", "//components/sync", "//components/webdata/common", + "//ui/base", ] } @@ -41,3 +43,17 @@ ] } } + +source_set("unit_tests") { + testonly = true + sources = [ + "browsing_data_utils_unittest.cc", + ] + + deps = [ + ":core", + "//base", + "//components/autofill/core/browser:browser", + "//testing/gtest", + ] +}
diff --git a/components/browsing_data/core/DEPS b/components/browsing_data/core/DEPS index 7efb83a..1ca2970 100644 --- a/components/browsing_data/core/DEPS +++ b/components/browsing_data/core/DEPS
@@ -5,4 +5,6 @@ "+components/prefs", "+components/sync/driver", "+components/webdata/common", + "+grit", + "+ui/base", ]
diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/browsing_data/core/browsing_data_utils.cc index aa516ad8..a64f02b3 100644 --- a/components/browsing_data/core/browsing_data_utils.cc +++ b/components/browsing_data/core/browsing_data_utils.cc
@@ -4,6 +4,13 @@ #include "components/browsing_data/core/browsing_data_utils.h" +#include "components/browsing_data/core/counters/autofill_counter.h" +#include "components/browsing_data/core/counters/history_counter.h" +#include "components/browsing_data/core/counters/passwords_counter.h" +#include "components/browsing_data/core/pref_names.h" +#include "grit/components_strings.h" +#include "ui/base/l10n/l10n_util.h" + namespace browsing_data { base::Time CalculateBeginDeleteTime(TimePeriod time_period) { @@ -29,4 +36,109 @@ return delete_begin_time - diff; } +base::string16 GetCounterTextFromResult( + const browsing_data::BrowsingDataCounter::Result* result) { + base::string16 text; + std::string pref_name = result->source()->GetPrefName(); + + if (!result->Finished()) { + // The counter is still counting. + text = l10n_util::GetStringUTF16(IDS_CLEAR_BROWSING_DATA_CALCULATING); + + } else if (pref_name == browsing_data::prefs::kDeletePasswords || + pref_name == browsing_data::prefs::kDeleteDownloadHistory) { + // Counters with trivially formatted result: passwords and downloads. + browsing_data::BrowsingDataCounter::ResultInt count = + static_cast<const browsing_data::BrowsingDataCounter::FinishedResult*>( + result) + ->Value(); + text = l10n_util::GetPluralStringFUTF16( + pref_name == browsing_data::prefs::kDeletePasswords + ? IDS_DEL_PASSWORDS_COUNTER + : IDS_DEL_DOWNLOADS_COUNTER, + count); + } else if (pref_name == browsing_data::prefs::kDeleteBrowsingHistory) { + // History counter. + const browsing_data::HistoryCounter::HistoryResult* history_result = + static_cast<const browsing_data::HistoryCounter::HistoryResult*>( + result); + browsing_data::BrowsingDataCounter::ResultInt local_item_count = + history_result->Value(); + bool has_synced_visits = history_result->has_synced_visits(); + + text = has_synced_visits + ? l10n_util::GetPluralStringFUTF16( + IDS_DEL_BROWSING_HISTORY_COUNTER_SYNCED, local_item_count) + : l10n_util::GetPluralStringFUTF16( + IDS_DEL_BROWSING_HISTORY_COUNTER, local_item_count); + + } else if (pref_name == browsing_data::prefs::kDeleteFormData) { + // Autofill counter. + const browsing_data::AutofillCounter::AutofillResult* autofill_result = + static_cast<const browsing_data::AutofillCounter::AutofillResult*>( + result); + browsing_data::AutofillCounter::ResultInt num_suggestions = + autofill_result->Value(); + browsing_data::AutofillCounter::ResultInt num_credit_cards = + autofill_result->num_credit_cards(); + browsing_data::AutofillCounter::ResultInt num_addresses = + autofill_result->num_addresses(); + + std::vector<base::string16> displayed_strings; + + if (num_credit_cards) { + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_CREDIT_CARDS, num_credit_cards)); + } + if (num_addresses) { + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_ADDRESSES, num_addresses)); + } + if (num_suggestions) { + // We use a different wording for autocomplete suggestions based on the + // length of the entire string. + switch (displayed_strings.size()) { + case 0: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS, num_suggestions)); + break; + case 1: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_LONG, num_suggestions)); + break; + case 2: + displayed_strings.push_back(l10n_util::GetPluralStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_SHORT, num_suggestions)); + break; + default: + NOTREACHED(); + } + } + + // Construct the resulting string from the sections in |displayed_strings|. + switch (displayed_strings.size()) { + case 0: + text = l10n_util::GetStringUTF16(IDS_DEL_AUTOFILL_COUNTER_EMPTY); + break; + case 1: + text = displayed_strings[0]; + break; + case 2: + text = l10n_util::GetStringFUTF16(IDS_DEL_AUTOFILL_COUNTER_TWO_TYPES, + displayed_strings[0], + displayed_strings[1]); + break; + case 3: + text = l10n_util::GetStringFUTF16( + IDS_DEL_AUTOFILL_COUNTER_THREE_TYPES, displayed_strings[0], + displayed_strings[1], displayed_strings[2]); + break; + default: + NOTREACHED(); + } + } + + return text; +} + } // namespace browsing_data
diff --git a/components/browsing_data/core/browsing_data_utils.h b/components/browsing_data/core/browsing_data_utils.h index 449dfe5b..62586e4 100644 --- a/components/browsing_data/core/browsing_data_utils.h +++ b/components/browsing_data/core/browsing_data_utils.h
@@ -7,6 +7,7 @@ #include "base/strings/string16.h" #include "base/time/time.h" +#include "components/browsing_data/core/counters/browsing_data_counter.h" namespace browsing_data { @@ -42,6 +43,12 @@ // Calculate the begin time for the deletion range specified by |time_period|. base::Time CalculateBeginDeleteTime(TimePeriod time_period); +// Constructs the text to be displayed by a counter from the given |result|. +// Currently this can only be used for counters for which the Result is defined +// in components/browsing_data/core/counters. +base::string16 GetCounterTextFromResult( + const browsing_data::BrowsingDataCounter::Result* result); + } // namespace browsing_data #endif // COMPONENTS_BROWSING_DATA_CORE_BROWSING_DATA_UTILS_H_
diff --git a/components/browsing_data/core/browsing_data_utils_unittest.cc b/components/browsing_data/core/browsing_data_utils_unittest.cc new file mode 100644 index 0000000..eaad13b4b --- /dev/null +++ b/components/browsing_data/core/browsing_data_utils_unittest.cc
@@ -0,0 +1,79 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/browsing_data/core/browsing_data_utils.h" + +#include <string> + +#include "base/message_loop/message_loop.h" +#include "base/strings/stringprintf.h" +#include "base/strings/utf_string_conversions.h" +#include "base/threading/thread_task_runner_handle.h" +#include "components/autofill/core/browser/webdata/autofill_webdata_service.h" +#include "components/browsing_data/core/counters/autofill_counter.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +class FakeWebDataService : public autofill::AutofillWebDataService { + public: + FakeWebDataService() + : AutofillWebDataService(base::ThreadTaskRunnerHandle::Get(), + base::ThreadTaskRunnerHandle::Get()) {} + + protected: + ~FakeWebDataService() override {} +}; + +} // namespace + +class BrowsingDataUtilsTest : public testing::Test { + public: + BrowsingDataUtilsTest() {} + ~BrowsingDataUtilsTest() override {} + + private: + base::MessageLoop loop_; +}; + +// Tests the complex output of the Autofill counter. +TEST_F(BrowsingDataUtilsTest, AutofillCounterResult) { + browsing_data::AutofillCounter counter( + scoped_refptr<FakeWebDataService>(new FakeWebDataService())); + + // Test all configurations of zero and nonzero partial results for datatypes. + // Test singular and plural for each datatype. + const struct TestCase { + int num_credit_cards; + int num_addresses; + int num_suggestions; + std::string expected_output; + } kTestCases[] = { + {0, 0, 0, "none"}, + {1, 0, 0, "1 credit card"}, + {0, 5, 0, "5 addresses"}, + {0, 0, 1, "1 suggestion"}, + {0, 0, 2, "2 suggestions"}, + {4, 7, 0, "4 credit cards, 7 addresses"}, + {3, 0, 9, "3 credit cards, 9 other suggestions"}, + {0, 1, 1, "1 address, 1 other suggestion"}, + {9, 6, 3, "9 credit cards, 6 addresses, 3 others"}, + {4, 2, 1, "4 credit cards, 2 addresses, 1 other"}, + }; + + for (const TestCase& test_case : kTestCases) { + browsing_data::AutofillCounter::AutofillResult result( + &counter, test_case.num_suggestions, test_case.num_credit_cards, + test_case.num_addresses); + + SCOPED_TRACE( + base::StringPrintf("Test params: %d credit card(s), " + "%d address(es), %d suggestion(s).", + test_case.num_credit_cards, test_case.num_addresses, + test_case.num_suggestions)); + + base::string16 output = browsing_data::GetCounterTextFromResult(&result); + EXPECT_EQ(output, base::ASCIIToUTF16(test_case.expected_output)); + } +}
diff --git a/components/browsing_data_strings.grdp b/components/browsing_data_strings.grdp new file mode 100644 index 0000000..ae70855 --- /dev/null +++ b/components/browsing_data_strings.grdp
@@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="utf-8"?> +<grit-part> + + <!-- Clear Browsing Data counters--> + <message name="IDS_CLEAR_BROWSING_DATA_CALCULATING" desc="A text that is shown while the data volume is being counted."> + Calculating... + </message> + <message name="IDS_CLEAR_BROWSING_DATA_UNKNOWN_SIZE" desc="A text that is shown when the data volume could not be calculated. This string refers to uncountable objects, such as cache."> + unknown size + </message> + <message name="IDS_CLEAR_BROWSING_DATA_UNKNOWN_AMOUNT" desc="A text that is shown when the data volume could not be calculated. This string refers to countable objects, such as history entries or passwords."> + unknown amount + </message> + <message name="IDS_DEL_BROWSING_HISTORY_COUNTER" desc="A counter showing how many items of browsing history the user has."> + {COUNT, plural, + =0 {none} + =1 {1 item} + other {# items}} + </message> + <message name="IDS_DEL_BROWSING_HISTORY_COUNTER_SYNCED" desc="A counter showing the user how many local items of browsing history they have, and informing them that more items might be synced. In the case when COUNT is zero, the counter only mentions existence of synced items."> + {COUNT, plural, + =0 {at least 1 item on synced devices} + =1 {1 item (and more on synced devices)} + other {# items (and more on synced devices)}} + </message> + <message name="IDS_DEL_CACHE_COUNTER_UPPER_ESTIMATE" desc="A counter showing that the user has less than X megabytes of cache. The value X will be substituted."> + less than <ph name="UPPER_ESTIMATE">$1<ex>328 MB</ex></ph> + </message> + <message name="IDS_DEL_CACHE_COUNTER_ALMOST_EMPTY" desc="A counter showing that the user's cache is almost empty, having less than 1 MB of data."> + less than 1 MB + </message> + <message name="IDS_DEL_PASSWORDS_COUNTER" desc="A counter showing how many passwords the user has."> + {COUNT, plural, + =0 {none} + =1 {1} + other {#}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_EMPTY" desc="A counter showing that the user has no form data stored."> + none + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_CREDIT_CARDS" desc="A counter showing how many credit cards the user has."> + {COUNT, plural, + =1 {1 credit card} + other {# credit cards}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_ADDRESSES" desc="A counter showing how many addresses the user has."> + {COUNT, plural, + =1 {1 address} + other {# addresses}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS" desc="A counter showing how many form autocompletion suggestions the user has."> + {COUNT, plural, + =1 {1 suggestion} + other {# suggestions}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_LONG" desc="A counter showing how many other form autocompletion suggestions the user has. Note that this message is shown at the end of an enumeration of form data types, such as '2 addresses, 5 others suggestions'."> + {COUNT, plural, + =1 {1 other suggestion} + other {# other suggestions}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_SUGGESTIONS_SHORT" desc="A counter showing how many other items of form data the user has. Note that this message is shown at the end of an enumeration of form data types, such as '3 credit cards, 2 addresses, 5 others'."> + {COUNT, plural, + =1 {1 other} + other {# others}} + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_TWO_TYPES" desc="A counter showing that the user has two types of form data. The types and their counts will be substituted, this message only provides the comma separator."> + <ph name="TYPE_1">$1<ex>2 credit cards</ex></ph>, <ph name="TYPE_2">$2<ex>1 address</ex></ph> + </message> + <message name="IDS_DEL_AUTOFILL_COUNTER_THREE_TYPES" desc="A counter showing that the user has three types of form data. The types and their counts will be substituted, this message only provides the comma separators."> + <ph name="TYPE_1">$1<ex>2 credit cards</ex></ph>, <ph name="TYPE_2">$2<ex>1 address</ex></ph>, <ph name="TYPE_3">$3<ex>5 others</ex></ph> + </message> + <message name="IDS_DEL_COOKIES_COUNTER" desc="A static message shown in the Clear Browsing Data dialog explaining to the user that deleting cookies and site data will result in the user being signed out of most websites."> + This will sign you out of most websites. + </message> + <message name="IDS_DEL_DOWNLOADS_COUNTER" desc="A counter showing how many items of downloads history the user has."> + {COUNT, plural, + =0 {none} + =1 {1 item} + other {# items}} + </message> + <message name="IDS_DEL_HOSTED_APPS_COUNTER" desc="A counter showing how many hosted apps the user has. We show the number of apps, and in the cases where there is one or two apps, we will also give two example app names, denoted as placeholders $1 and $2. If there are more than two apps, we will give two examples and say 'and X more'. The 'and X more' string, denoted by the placeholder $3, will be supplied from another message."> + {COUNT, plural, + =0 {none} + =1 {1 app ($1)} + =2 {2 apps ($1, $2)} + other {# apps ($1, $2, $3)}} + </message> + <message name="IDS_DEL_HOSTED_APPS_COUNTER_AND_X_MORE" desc="This message stands at the end of a sentence enumerating hosted apps the user has installed, e.g.: 'App1, App2, and 5 more'"> + {COUNT, plural, + =1 {and 1 more} + other {and # more}} + </message> + <message name="IDS_DEL_MEDIA_LICENSES_COUNTER_GENERAL_COMMENT" desc="A static message shown in the Clear Browsing Data dialog explaining to the user that clearing media licenses will result in the user being unable to play some premium content"> + You may lose access to premium content from some sites. + </message> + <message name="IDS_DEL_MEDIA_LICENSES_COUNTER_SITE_COMMENT" desc="A message shown in the Clear Browsing Data dialog explaining to the user that clearing media licenses will result in the user being unable to play some premium content from at least one specific web site"> + You may lose access to premium content from <ph name="SITE">$1<ex>youtube.com</ex></ph> and some other sites. + </message> +</grit-part> \ No newline at end of file
diff --git a/components/components_strings.grd b/components/components_strings.grd index 8e1adc5..028b5728 100644 --- a/components/components_strings.grd +++ b/components/components_strings.grd
@@ -187,6 +187,7 @@ <part file="bookmark_bar_strings.grdp" /> <part file="bookmark_component_strings.grdp" /> <part file="browser_sync_strings.grdp" /> + <part file="browsing_data_strings.grdp" /> <part file="components_settings_strings.grdp" /> <part file="crash_strings.grdp" /> <part file="dialog_strings.grdp" />
diff --git a/components/cronet/android/BUILD.gn b/components/cronet/android/BUILD.gn index 8534e6bdb..99485b52 100644 --- a/components/cronet/android/BUILD.gn +++ b/components/cronet/android/BUILD.gn
@@ -816,11 +816,22 @@ "--depfile", rebase_path(depfile, root_build_dir), ] + + if (defined(invoker.src_jars)) { + _rebased_src_jars = rebase_path(invoker.src_jars, root_build_dir) + args += [ "--src-jar=${_rebased_src_jars}" ] + } + deps = [ + ":effective_connection_type_java", + ] } } jar_src("jar_cronet_api_source") { src_dirs = [ "api/src" ] + + # Include generated Java files which should be a part of the API. + src_jars = [ "$root_gen_dir/components/cronet/android/effective_connection_type_java.srcjar" ] jar_path = "$_package_dir/cronet_api-src.jar" } @@ -872,9 +883,14 @@ "--lib-java-dir", rebase_path("$root_build_dir/lib.java/components/cronet/android", root_build_dir), + + # JavaDoc is generated from Cronet's API source jar. + "--input-src-jar", + rebase_path("$_package_dir/cronet_api-src.jar", root_build_dir), ] deps = [ ":cronet_javadoc_classpath", + ":jar_cronet_api_source", ] }
diff --git a/components/cronet/android/api/build.xml b/components/cronet/android/api/build.xml index b77d5fbd..5a8a5df 100644 --- a/components/cronet/android/api/build.xml +++ b/components/cronet/android/api/build.xml
@@ -13,6 +13,9 @@ <exclude name="**/HttpUrl*.java"/> <exclude name="**/ResponseTooLargeException.java"/> <exclude name="**/UrlRequestContextConfig.java"/> + <!-- This file is removed but it still appears in the checkout of one bot. See crbug.com/637887 --> + <!-- TODO(xunjieli): Remove this. --> + <exclude name="**/RequestFinishedListener.java"/> </fileset> <doclet name="com.google.doclava.Doclava"> <param name="-title" /><param name="Cronet API"/>
diff --git a/components/cronet/android/chromium_url_request.cc b/components/cronet/android/chromium_url_request.cc index 178307b..9286c4e 100644 --- a/components/cronet/android/chromium_url_request.cc +++ b/components/cronet/android/chromium_url_request.cc
@@ -70,8 +70,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> java_buffer( env, env->NewDirectByteBuffer(request_adapter->Data(), bytes_read)); - cronet::Java_ChromiumUrlRequest_onBytesRead( - env, owner_, java_buffer.obj()); + cronet::Java_ChromiumUrlRequest_onBytesRead(env, owner_, java_buffer); } } @@ -85,7 +84,7 @@ base::android::ScopedJavaLocalRef<jobject> java_buffer( env, env->NewDirectByteBuffer(buf->data(), buf_length)); jint bytes_read = cronet::Java_ChromiumUrlRequest_readFromUploadChannel( - env, owner_, java_buffer.obj()); + env, owner_, java_buffer); return bytes_read; } @@ -387,7 +386,7 @@ ScopedJavaLocalRef<jstring> value = ConvertUTF8ToJavaString(env, header_value); Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, - name.obj(), value.obj()); + name, value); } // Some implementations (notably HttpURLConnection) include a mapping for the @@ -395,7 +394,7 @@ ScopedJavaLocalRef<jstring> status_line = ConvertUTF8ToJavaString(env, headers->GetStatusLine()); Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, - nullptr, status_line.obj()); + nullptr, status_line); } static ScopedJavaLocalRef<jstring> GetNegotiatedProtocol(
diff --git a/components/cronet/android/cronet_upload_data_stream_adapter.cc b/components/cronet/android/cronet_upload_data_stream_adapter.cc index dabcfbb..af2854b 100644 --- a/components/cronet/android/cronet_upload_data_stream_adapter.cc +++ b/components/cronet/android/cronet_upload_data_stream_adapter.cc
@@ -52,7 +52,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> java_buffer( env, env->NewDirectByteBuffer(buffer->data(), buf_len)); - Java_CronetUploadDataStream_readData(env, jupload_data_stream_.obj(), + Java_CronetUploadDataStream_readData(env, jupload_data_stream_, java_buffer.obj()); } @@ -61,7 +61,7 @@ DCHECK(network_task_runner_->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_CronetUploadDataStream_rewind(env, jupload_data_stream_.obj()); + Java_CronetUploadDataStream_rewind(env, jupload_data_stream_); } void CronetUploadDataStreamAdapter::OnUploadDataStreamDestroyed() { @@ -71,8 +71,8 @@ network_task_runner_->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_CronetUploadDataStream_onUploadDataStreamDestroyed( - env, jupload_data_stream_.obj()); + Java_CronetUploadDataStream_onUploadDataStreamDestroyed(env, + jupload_data_stream_); // |this| is invalid here since the Java call above effectively destroys it. }
diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc index 82e574d..12de78c 100644 --- a/components/cronet/android/cronet_url_request_context_adapter.cc +++ b/components/cronet/android/cronet_url_request_context_adapter.cc
@@ -711,8 +711,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); jcronet_url_request_context_.Reset(env, jcronet_url_request_context.obj()); - Java_CronetUrlRequestContext_initNetworkThread( - env, jcronet_url_request_context.obj()); + Java_CronetUrlRequestContext_initNetworkThread(env, + jcronet_url_request_context); #if defined(DATA_REDUCTION_PROXY_SUPPORT) if (data_reduction_proxy_) @@ -872,7 +872,7 @@ const base::TimeTicks& timestamp, net::NetworkQualityObservationSource source) { Java_CronetUrlRequestContext_onRttObservation( - base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), + base::android::AttachCurrentThread(), jcronet_url_request_context_, rtt_ms, (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), source); } @@ -882,7 +882,7 @@ const base::TimeTicks& timestamp, net::NetworkQualityObservationSource source) { Java_CronetUrlRequestContext_onThroughputObservation( - base::android::AttachCurrentThread(), jcronet_url_request_context_.obj(), + base::android::AttachCurrentThread(), jcronet_url_request_context_, throughput_kbps, (timestamp - base::TimeTicks::UnixEpoch()).InMilliseconds(), source); }
diff --git a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java index 5e0cdda..4697f0c 100644 --- a/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java +++ b/components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestContextTest.java
@@ -13,6 +13,7 @@ import android.test.suitebuilder.annotation.SmallTest; import org.chromium.base.FileUtils; +import org.chromium.base.Log; import org.chromium.base.PathUtils; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.test.util.Feature; @@ -41,6 +42,7 @@ "http://mock.failed.request/-2"; private static final String MOCK_CRONET_TEST_SUCCESS_URL = "http://mock.http/success.txt"; + private static final String TAG = "RequestContextTest"; private static final int MAX_FILE_SIZE = 1000000000; private static final int NUM_EVENT_FILES = 10; @@ -101,14 +103,22 @@ class ShutdownTestUrlRequestCallback extends TestUrlRequestCallback { @Override public void onSucceeded(UrlRequest request, UrlResponseInfo info) { + // TODO: Remove logging when http://crbug.com/596929 & http://crbug.com/635025 is fixed. + Log.d(TAG, "ShutdownTestUrlRequestCallback.onSucceeded() has started"); super.onSucceeded(request, info); + Log.d(TAG, "ShutdownTestUrlRequestCallback.onSucceeded() before calling shutdown"); mTestFramework.mCronetEngine.shutdown(); + Log.d(TAG, "ShutdownTestUrlRequestCallback.hasFinished() has finished"); } @Override public void onFailed(UrlRequest request, UrlResponseInfo info, UrlRequestException error) { + // TODO: Remove logging when http://crbug.com/596929 & http://crbug.com/635025 is fixed. + Log.d(TAG, "ShutdownTestUrlRequestCallback.onFailed() has started"); super.onFailed(request, info, error); + Log.d(TAG, "ShutdownTestUrlRequestCallback.onFailed() before calling shutdown"); mTestFramework.mCronetEngine.shutdown(); + Log.d(TAG, "ShutdownTestUrlRequestCallback.onFailed() has finished."); } } @@ -338,7 +348,10 @@ @SmallTest @Feature({"Cronet"}) + // TODO: Remove the annotation after fixing http://crbug.com/637979 & http://crbug.com/637972 + @OnlyRunNativeCronet public void testShutdown() throws Exception { + Log.i(TAG, "testShutdown() has started"); mTestFramework = startCronetTestFramework(); TestUrlRequestCallback callback = new ShutdownTestUrlRequestCallback(); // Block callback when response starts to verify that shutdown fails @@ -382,6 +395,11 @@ callback.setAutoAdvance(true); callback.startNextRead(urlRequest); callback.blockForDone(); + // TODO: Remove sleep when http://crbug.com/596929 is fixed. + // The sleep gives the thread that shuts down the engine time to complete. + // See http://crbug.com/596929 + Thread.sleep(3000); + Log.i(TAG, "testShutdown() has finished"); } @SmallTest @@ -472,7 +490,10 @@ @SmallTest @Feature({"Cronet"}) + // TODO: Remove the annotation after fixing http://crbug.com/637972 + @OnlyRunNativeCronet public void testShutdownAfterError() throws Exception { + Log.i(TAG, "testShutdownAfterError() has started"); mTestFramework = startCronetTestFramework(); TestUrlRequestCallback callback = new ShutdownTestUrlRequestCallback(); UrlRequest.Builder urlRequestBuilder = new UrlRequest.Builder(MOCK_CRONET_TEST_FAILED_URL, @@ -480,6 +501,11 @@ urlRequestBuilder.build().start(); callback.blockForDone(); assertTrue(callback.mOnErrorCalled); + // TODO: Remove sleep when http://crbug.com/635025 is fixed. + // The sleep gives the thread that shuts down the engine time to complete. + // See http://crbug.com/637986 + Thread.sleep(3000); + Log.i(TAG, "testShutdownAfterError() has finished"); } @SmallTest
diff --git a/components/cronet/android/test/sdch_test_util.cc b/components/cronet/android/test/sdch_test_util.cc index d6016c9f..695ca0df 100644 --- a/components/cronet/android/test/sdch_test_util.cc +++ b/components/cronet/android/test/sdch_test_util.cc
@@ -41,7 +41,7 @@ // Only notify if the dictionary for the |target_url_| has been added. if (manager_->GetDictionarySet(target_url_)) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_SdchObserver_onDictionaryAdded(env, jsdch_observer_ref_.obj()); + Java_SdchObserver_onDictionaryAdded(env, jsdch_observer_ref_); manager_->RemoveObserver(this); delete this; } @@ -72,14 +72,13 @@ // If dictionaries for |target_url| are already added, skip adding the // observer. if (url_request_context->sdch_manager()->GetDictionarySet(target_url)) { - Java_SdchObserver_onDictionarySetAlreadyPresent(env, - jsdch_observer_ref.obj()); + Java_SdchObserver_onDictionarySetAlreadyPresent(env, jsdch_observer_ref); return; } url_request_context->sdch_manager()->AddObserver(new TestSdchObserver( target_url, url_request_context->sdch_manager(), jsdch_observer_ref)); - Java_SdchObserver_onAddSdchObserverCompleted(env, jsdch_observer_ref.obj()); + Java_SdchObserver_onAddSdchObserverCompleted(env, jsdch_observer_ref); } void AddSdchObserverOnNetworkThread(
diff --git a/components/cronet/android/test/test_upload_data_stream_handler.cc b/components/cronet/android/test/test_upload_data_stream_handler.cc index 92de649a..e3fb74e 100644 --- a/components/cronet/android/test/test_upload_data_stream_handler.cc +++ b/components/cronet/android/test/test_upload_data_stream_handler.cc
@@ -56,7 +56,7 @@ init_callback_invoked_ = true; JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_TestUploadDataStreamHandler_onInitCompleted( - env, jtest_upload_data_stream_handler_.obj(), res); + env, jtest_upload_data_stream_handler_, res); } void TestUploadDataStreamHandler::OnReadCompleted(int res) { @@ -119,11 +119,11 @@ &TestUploadDataStreamHandler::OnInitCompleted, base::Unretained(this))); JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_TestUploadDataStreamHandler_onInitCalled( - env, jtest_upload_data_stream_handler_.obj(), res); + env, jtest_upload_data_stream_handler_, res); if (res == net::OK) { cronet::Java_TestUploadDataStreamHandler_onInitCompleted( - env, jtest_upload_data_stream_handler_.obj(), res); + env, jtest_upload_data_stream_handler_, res); } } @@ -150,21 +150,21 @@ upload_data_stream_->Reset(); JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_TestUploadDataStreamHandler_onResetCompleted( - env, jtest_upload_data_stream_handler_.obj()); + env, jtest_upload_data_stream_handler_); } void TestUploadDataStreamHandler::CheckInitCallbackNotInvokedOnNetworkThread() { DCHECK(network_thread_->task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_TestUploadDataStreamHandler_onCheckInitCallbackNotInvoked( - env, jtest_upload_data_stream_handler_.obj(), !init_callback_invoked_); + env, jtest_upload_data_stream_handler_, !init_callback_invoked_); } void TestUploadDataStreamHandler::CheckReadCallbackNotInvokedOnNetworkThread() { DCHECK(network_thread_->task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); cronet::Java_TestUploadDataStreamHandler_onCheckReadCallbackNotInvoked( - env, jtest_upload_data_stream_handler_.obj(), !read_callback_invoked_); + env, jtest_upload_data_stream_handler_, !read_callback_invoked_); } void TestUploadDataStreamHandler::NotifyJavaReadCompleted() { @@ -174,7 +174,7 @@ if (read_buffer_.get() && bytes_read_ > 0) data_read = std::string(read_buffer_->data(), bytes_read_); cronet::Java_TestUploadDataStreamHandler_onReadCompleted( - env, jtest_upload_data_stream_handler_.obj(), bytes_read_, + env, jtest_upload_data_stream_handler_, bytes_read_, base::android::ConvertUTF8ToJavaString(env, data_read).obj()); }
diff --git a/components/cronet/tools/generate_javadoc.py b/components/cronet/tools/generate_javadoc.py index d46ed67..7eb3bac6 100755 --- a/components/cronet/tools/generate_javadoc.py +++ b/components/cronet/tools/generate_javadoc.py
@@ -7,6 +7,7 @@ import optparse import os import sys +import tempfile REPOSITORY_ROOT = os.path.abspath(os.path.join( os.path.dirname(__file__), '..', '..', '..')) @@ -30,7 +31,7 @@ CronetPostprocessor(md), '_end') -def GenerateJavadoc(options): +def GenerateJavadoc(options, src_dir): output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) working_dir = os.path.join(options.input_dir, 'android/api') overview_file = os.path.abspath(options.overview_file) @@ -38,7 +39,7 @@ build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) - javadoc_cmd = ['ant', '-Dsource.dir=src', '-Ddoc.dir=' + output_dir, + javadoc_cmd = ['ant', '-Dsource.dir=' + src_dir , '-Ddoc.dir=' + output_dir, '-Dlib.java.dir=' + lib_java_dir, '-Doverview=' + overview_file, 'doc'] stdout = build_utils.CheckOutput(javadoc_cmd, cwd=working_dir) @@ -52,16 +53,24 @@ build_utils.AddDepfileOption(parser) parser.add_option('--output-dir', help='Directory to put javadoc') parser.add_option('--input-dir', help='Root of cronet source') + parser.add_option('--input-src-jar', help='Cronet api source jar') parser.add_option('--overview-file', help='Path of the overview page') parser.add_option('--readme-file', help='Path of the README.md') parser.add_option('--lib-java-dir', help='Directory containing java libs') options, _ = parser.parse_args() + # A temporary directory to put the output of cronet api source jar files. + unzipped_jar_path = tempfile.mkdtemp(dir=options.output_dir) + if os.path.exists(options.input_src_jar): + jar_cmd = ['jar', 'xf', os.path.abspath(options.input_src_jar)] + build_utils.CheckOutput(jar_cmd, cwd=unzipped_jar_path) + else: + raise Exception('Jar file does not exist: %s' % options.input_src_jar) net_docs.ProcessDocs([options.readme_file], options.input_dir, options.output_dir, extensions=[CronetExtension()]) - GenerateJavadoc(options) + GenerateJavadoc(options, os.path.abspath(unzipped_jar_path)) if options.depfile: input_paths = [] @@ -69,6 +78,8 @@ input_paths.extend(os.path.join(root, f) for f in filenames) build_utils.WriteDepfile(options.depfile, input_paths + build_utils.GetPythonDependencies()) + # Clean up temporary output directory. + build_utils.DeleteDirectory(unzipped_jar_path) if __name__ == '__main__': sys.exit(main())
diff --git a/components/cronet/tools/jar_src.py b/components/cronet/tools/jar_src.py index 4470eb8c..7e73f48b 100755 --- a/components/cronet/tools/jar_src.py +++ b/components/cronet/tools/jar_src.py
@@ -7,6 +7,7 @@ import optparse import os import sys +import tempfile REPOSITORY_ROOT = os.path.abspath(os.path.join( os.path.dirname(__file__), '..', '..', '..')) @@ -28,20 +29,43 @@ build_utils.CheckOutput(jar_cmd, cwd=jar_cwd) +# Uncompress source jars so that they can be combined with other sources +def UnzipSourceJar(jar, unzipped_jar_path): + if os.path.exists(jar): + jar_cmd = ['jar', 'xf', os.path.abspath(jar)] + build_utils.CheckOutput(jar_cmd, cwd=unzipped_jar_path) + else: + raise Exception('Jar file does not exist %s' % jar) + def main(): parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--src-dir', action="append", help='Directory containing .java files.') + parser.add_option('--src-jars', action="append", + help='A list of source jars to include in addition to source files.') parser.add_option('--jar-path', help='Jar output path.') parser.add_option('--stamp', help='Path to touch on success.') options, _ = parser.parse_args() + # A temporary directory to put the output of jar files. + unzipped_jar_path = None + if options.src_jars: + unzipped_jar_path = tempfile.mkdtemp(dir=os.path.dirname(options.jar_path)) + jar_list = [] + for gn_list in options.src_jars: + jar_list.extend(build_utils.ParseGnList(gn_list)) + + for jar in jar_list: + UnzipSourceJar(jar, unzipped_jar_path) + src_dirs = [] for src_dir in options.src_dir: src_dirs.extend(build_utils.ParseGypList(src_dir)) + if unzipped_jar_path: + src_dirs += [unzipped_jar_path] for src_dir in src_dirs: JarSources(src_dir, options.jar_path) @@ -53,6 +77,9 @@ input_paths.extend(os.path.join(root, f) for f in filenames) build_utils.WriteDepfile(options.depfile, input_paths + build_utils.GetPythonDependencies()) + # Clean up temporary output directory. + if unzipped_jar_path: + build_utils.DeleteDirectory(unzipped_jar_path) if options.stamp: build_utils.Touch(options.stamp)
diff --git a/components/dom_distiller/core/distilled_page_prefs_android.cc b/components/dom_distiller/core/distilled_page_prefs_android.cc index 269e8702..b10cb0fb 100644 --- a/components/dom_distiller/core/distilled_page_prefs_android.cc +++ b/components/dom_distiller/core/distilled_page_prefs_android.cc
@@ -109,21 +109,21 @@ DistilledPagePrefs::FontFamily new_font_family) { JNIEnv* env = base::android::AttachCurrentThread(); Java_DistilledPagePrefsObserverWrapper_onChangeFontFamily( - env, java_ref_.obj(), (int)new_font_family); + env, java_ref_, (int)new_font_family); } void DistilledPagePrefsObserverAndroid::OnChangeTheme( DistilledPagePrefs::Theme new_theme) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_DistilledPagePrefsObserverWrapper_onChangeTheme( - env, java_ref_.obj(), (int)new_theme); + Java_DistilledPagePrefsObserverWrapper_onChangeTheme(env, java_ref_, + (int)new_theme); } void DistilledPagePrefsObserverAndroid::OnChangeFontScaling( float scaling) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_DistilledPagePrefsObserverWrapper_onChangeFontScaling( - env, java_ref_.obj(), scaling); + Java_DistilledPagePrefsObserverWrapper_onChangeFontScaling(env, java_ref_, + scaling); } jlong InitObserverAndroid(JNIEnv* env, const JavaParamRef<jobject>& obj) {
diff --git a/components/domain_reliability/quic_error_mapping.cc b/components/domain_reliability/quic_error_mapping.cc index 1e8a965..853f49f 100644 --- a/components/domain_reliability/quic_error_mapping.cc +++ b/components/domain_reliability/quic_error_mapping.cc
@@ -165,6 +165,8 @@ // values. { net::QUIC_CRYPTO_MESSAGE_INDEX_NOT_FOUND, "quic_crypto_message_index_not_found" }, + // A demand for an unsupport proof type was received. + { net::QUIC_UNSUPPORTED_PROOF_DEMAND, "quic.unsupported_proof_demand" }, // An internal error occured in crypto processing. { net::QUIC_CRYPTO_INTERNAL_ERROR, "quic.crypto.internal_error" }, // A crypto handshake message specified an unsupported version.
diff --git a/components/exo/BUILD.gn b/components/exo/BUILD.gn index c770897..16af5ce 100644 --- a/components/exo/BUILD.gn +++ b/components/exo/BUILD.gn
@@ -36,6 +36,8 @@ "touch.cc", "touch.h", "touch_delegate.h", + "wm_helper.cc", + "wm_helper.h", ] deps = [
diff --git a/components/exo/gamepad.cc b/components/exo/gamepad.cc index c7a5f56..876d05d8 100644 --- a/components/exo/gamepad.cc +++ b/components/exo/gamepad.cc
@@ -6,7 +6,6 @@ #include <cmath> -#include "ash/shell.h" #include "base/bind.h" #include "base/location.h" #include "base/single_thread_task_runner.h" @@ -18,7 +17,6 @@ #include "device/gamepad/gamepad_data_fetcher.h" #include "device/gamepad/gamepad_pad_state_provider.h" #include "device/gamepad/gamepad_platform_data_fetcher_linux.h" -#include "ui/aura/client/focus_client.h" #include "ui/aura/window.h" namespace exo { @@ -208,10 +206,9 @@ base::Bind(&Gamepad::ProcessGamepadChanges, weak_factory_.GetWeakPtr()), create_fetcher_callback, polling_task_runner); - aura::client::FocusClient* focus_client = - aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); - focus_client->AddObserver(this); - OnWindowFocused(focus_client->GetFocusedWindow(), nullptr); + auto* helper = WMHelper::GetInstance(); + helper->AddFocusObserver(this); + OnWindowFocused(helper->GetFocusedWindow(), nullptr); } Gamepad::~Gamepad() { @@ -220,8 +217,7 @@ gamepad_change_fetcher_->EnablePolling(false); delegate_->OnGamepadDestroying(this); - aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()) - ->RemoveObserver(this); + WMHelper::GetInstance()->RemoveFocusObserver(this); } ////////////////////////////////////////////////////////////////////////////////
diff --git a/components/exo/gamepad.h b/components/exo/gamepad.h index 578a8d1..f1991a1f 100644 --- a/components/exo/gamepad.h +++ b/components/exo/gamepad.h
@@ -13,6 +13,7 @@ #include "base/synchronization/lock.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" +#include "components/exo/wm_helper.h" #include "device/gamepad/gamepad_data_fetcher.h" #include "ui/aura/client/focus_change_observer.h" @@ -25,7 +26,7 @@ // This class represents one or more gamepads, it uses a background thread // for polling gamepad devices and notifies the GamepadDelegate of any // changes. -class Gamepad : public aura::client::FocusChangeObserver { +class Gamepad : public WMHelper::FocusObserver { public: // This class will post tasks to invoke the delegate on the thread runner // which is associated with the thread that is creating this instance. @@ -38,7 +39,7 @@ CreateGamepadDataFetcherCallback create_fetcher_callback); ~Gamepad() override; - // Overridden aura::client::FocusChangeObserver: + // Overridden WMHelper::FocusObserver: void OnWindowFocused(aura::Window* gained_focus, aura::Window* lost_focus) override;
diff --git a/components/exo/keyboard.cc b/components/exo/keyboard.cc index 4aba4902..7ccf3ee 100644 --- a/components/exo/keyboard.cc +++ b/components/exo/keyboard.cc
@@ -4,7 +4,6 @@ #include "components/exo/keyboard.h" -#include "ash/shell.h" #include "components/exo/keyboard_delegate.h" #include "components/exo/shell_surface.h" #include "components/exo/surface.h" @@ -74,20 +73,19 @@ // Keyboard, public: Keyboard::Keyboard(KeyboardDelegate* delegate) : delegate_(delegate) { - ash::Shell::GetInstance()->AddPostTargetHandler(this); - aura::client::FocusClient* focus_client = - aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); - focus_client->AddObserver(this); - OnWindowFocused(focus_client->GetFocusedWindow(), nullptr); + auto* helper = WMHelper::GetInstance(); + helper->AddPostTargetHandler(this); + helper->AddFocusObserver(this); + OnWindowFocused(helper->GetFocusedWindow(), nullptr); } Keyboard::~Keyboard() { delegate_->OnKeyboardDestroying(this); if (focus_) focus_->RemoveSurfaceObserver(this); - aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()) - ->RemoveObserver(this); - ash::Shell::GetInstance()->RemovePostTargetHandler(this); + auto* helper = WMHelper::GetInstance(); + helper->RemoveFocusObserver(this); + helper->RemovePostTargetHandler(this); } ////////////////////////////////////////////////////////////////////////////////
diff --git a/components/exo/keyboard.h b/components/exo/keyboard.h index 7bed17db..dd54a82c 100644 --- a/components/exo/keyboard.h +++ b/components/exo/keyboard.h
@@ -9,6 +9,7 @@ #include "base/macros.h" #include "components/exo/surface_observer.h" +#include "components/exo/wm_helper.h" #include "ui/aura/client/focus_change_observer.h" #include "ui/events/event_handler.h" @@ -25,7 +26,7 @@ // This class implements a client keyboard that represents one or more keyboard // devices. class Keyboard : public ui::EventHandler, - public aura::client::FocusChangeObserver, + public WMHelper::FocusObserver, public SurfaceObserver { public: explicit Keyboard(KeyboardDelegate* delegate); @@ -34,7 +35,7 @@ // Overridden from ui::EventHandler: void OnKeyEvent(ui::KeyEvent* event) override; - // Overridden aura::client::FocusChangeObserver: + // Overridden WMHelper::FocusObserver: void OnWindowFocused(aura::Window* gained_focus, aura::Window* lost_focus) override;
diff --git a/components/exo/pointer.cc b/components/exo/pointer.cc index 7650896..750be615 100644 --- a/components/exo/pointer.cc +++ b/components/exo/pointer.cc
@@ -7,12 +7,14 @@ #include "ash/common/display/display_info.h" #include "ash/common/shell_window_ids.h" #include "ash/display/display_manager.h" -#include "ash/shell.h" #include "components/exo/pointer_delegate.h" #include "components/exo/pointer_stylus_delegate.h" #include "components/exo/surface.h" +#include "components/exo/wm_helper.h" +#include "ui/aura/client/cursor_client.h" #include "ui/aura/env.h" #include "ui/aura/window.h" +#include "ui/display/screen.h" #include "ui/events/event.h" #include "ui/gfx/geometry/vector2d_conversions.h" #include "ui/views/widget/widget.h" @@ -42,12 +44,9 @@ surface_(nullptr), focus_(nullptr), cursor_scale_(1.0f) { - ash::Shell* ash_shell = ash::Shell::GetInstance(); - ash_shell->AddPreTargetHandler(this); - - wm::CursorManager* cursor_manager = ash_shell->cursor_manager(); - DCHECK(cursor_manager); - cursor_manager->AddObserver(this); + auto* helper = WMHelper::GetInstance(); + helper->AddPreTargetHandler(this); + helper->AddCursorObserver(this); } Pointer::~Pointer() { @@ -63,10 +62,9 @@ if (widget_) widget_->CloseNow(); - ash::Shell* ash_shell = ash::Shell::GetInstance(); - DCHECK(ash_shell->cursor_manager()); - ash_shell->cursor_manager()->RemoveObserver(this); - ash_shell->RemovePreTargetHandler(this); + auto* helper = WMHelper::GetInstance(); + helper->RemoveCursorObserver(this); + helper->RemovePreTargetHandler(this); } void Pointer::SetCursor(Surface* surface, const gfx::Point& hotspot) { @@ -321,9 +319,8 @@ params.shadow_type = views::Widget::InitParams::SHADOW_TYPE_NONE; params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; params.accept_events = false; - params.parent = - ash::Shell::GetContainer(ash::Shell::GetPrimaryRootWindow(), - ash::kShellWindowId_MouseCursorContainer); + params.parent = WMHelper::GetInstance()->GetContainer( + ash::kShellWindowId_MouseCursorContainer); widget_.reset(new views::Widget); widget_->Init(params); widget_->GetNativeWindow()->set_owned_by_parent(false); @@ -347,13 +344,10 @@ display::Display display = display::Screen::GetScreen()->GetDisplayNearestWindow( widget_->GetNativeWindow()); - float ui_scale = ash::Shell::GetInstance() - ->display_manager() + float ui_scale = WMHelper::GetInstance() ->GetDisplayInfo(display.id()) .GetEffectiveUIScale(); - - ash::Shell* ash_shell = ash::Shell::GetInstance(); - if (ash_shell->cursor_manager()->GetCursorSet() == ui::CURSOR_SET_LARGE) + if (WMHelper::GetInstance()->GetCursorSet() == ui::CURSOR_SET_LARGE) ui_scale *= kLargeCursorScale; if (ui_scale != cursor_scale_) {
diff --git a/components/exo/pointer.h b/components/exo/pointer.h index 183ee94..f5cc9f2 100644 --- a/components/exo/pointer.h +++ b/components/exo/pointer.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "components/exo/surface_delegate.h" #include "components/exo/surface_observer.h" -#include "ui/aura/client/cursor_client_observer.h" +#include "components/exo/wm_helper.h" #include "ui/events/event_handler.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point_f.h" @@ -33,7 +33,7 @@ // This class implements a client pointer that represents one or more input // devices, such as mice, which control the pointer location and pointer focus. class Pointer : public ui::EventHandler, - public aura::client::CursorClientObserver, + public WMHelper::CursorObserver, public SurfaceDelegate, public SurfaceObserver { public: @@ -54,7 +54,7 @@ void OnMouseEvent(ui::MouseEvent* event) override; void OnScrollEvent(ui::ScrollEvent* event) override; - // Overridden from aura::client::CursorClientObserver: + // Overridden from WMHelper::CursorObserver: void OnCursorSetChanged(ui::CursorSetType cursor_set) override; // Overridden from SurfaceDelegate:
diff --git a/components/exo/shell_surface.cc b/components/exo/shell_surface.cc index 10efe72..c7beb9ad 100644 --- a/components/exo/shell_surface.cc +++ b/components/exo/shell_surface.cc
@@ -9,7 +9,6 @@ #include "ash/common/wm/window_resizer.h" #include "ash/common/wm/window_state.h" #include "ash/common/wm/window_state_delegate.h" -#include "ash/shell.h" #include "ash/wm/window_state_aura.h" #include "ash/wm/window_util.h" #include "base/logging.h" @@ -20,6 +19,7 @@ #include "base/trace_event/trace_event_argument.h" #include "components/exo/surface.h" #include "ui/aura/client/aura_constants.h" +#include "ui/aura/client/cursor_client.h" #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_property.h" @@ -34,7 +34,6 @@ #include "ui/wm/core/shadow_controller.h" #include "ui/wm/core/shadow_types.h" #include "ui/wm/core/window_util.h" -#include "ui/wm/public/activation_client.h" DECLARE_WINDOW_PROPERTY_TYPE(std::string*) @@ -254,7 +253,7 @@ initial_bounds_(initial_bounds), activatable_(activatable), container_(container) { - ash::Shell::GetInstance()->activation_client()->AddObserver(this); + WMHelper::GetInstance()->AddActivationObserver(this); surface_->SetSurfaceDelegate(this); surface_->AddSurfaceObserver(this); surface_->window()->Show(); @@ -281,7 +280,7 @@ widget_->Hide(); widget_->CloseNow(); } - ash::Shell::GetInstance()->activation_client()->RemoveObserver(this); + WMHelper::GetInstance()->RemoveActivationObserver(this); if (parent_) parent_->RemoveObserver(this); if (surface_) { @@ -796,10 +795,9 @@ } //////////////////////////////////////////////////////////////////////////////// -// aura::client::ActivationChangeObserver overrides: +// WMHelper::ActivationObserver overrides: void ShellSurface::OnWindowActivated( - aura::client::ActivationChangeObserver::ActivationReason reason, aura::Window* gained_active, aura::Window* lost_active) { if (!widget_) @@ -906,8 +904,8 @@ params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; params.show_state = show_state; // Make shell surface a transient child if |parent_| has been set. - params.parent = parent_ ? parent_ : - ash::Shell::GetContainer(ash::Shell::GetTargetRootWindow(), container_); + params.parent = + parent_ ? parent_ : WMHelper::GetInstance()->GetContainer(container_); params.bounds = initial_bounds_; bool activatable = activatable_; // ShellSurfaces in system modal container are only activatable if input @@ -1077,7 +1075,7 @@ pending_origin_offset_ = gfx::Vector2d(); resize_component_ = pending_resize_component_; - ash::Shell::GetInstance()->AddPreTargetHandler(this); + WMHelper::GetInstance()->AddPreTargetHandler(this); widget_->GetNativeWindow()->SetCapture(); // Notify client that resizing state has changed. @@ -1096,7 +1094,7 @@ else resizer_->CompleteDrag(); - ash::Shell::GetInstance()->RemovePreTargetHandler(this); + WMHelper::GetInstance()->RemovePreTargetHandler(this); widget_->GetNativeWindow()->ReleaseCapture(); resizer_.reset();
diff --git a/components/exo/shell_surface.h b/components/exo/shell_surface.h index 1f8ee393..1c7e3072 100644 --- a/components/exo/shell_surface.h +++ b/components/exo/shell_surface.h
@@ -14,13 +14,13 @@ #include "base/strings/string16.h" #include "components/exo/surface_delegate.h" #include "components/exo/surface_observer.h" +#include "components/exo/wm_helper.h" #include "ui/aura/window_observer.h" #include "ui/base/hit_test.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/vector2d.h" #include "ui/views/widget/widget_delegate.h" -#include "ui/wm/public/activation_change_observer.h" namespace ash { class WindowResizer; @@ -44,7 +44,7 @@ public views::View, public ash::wm::WindowStateObserver, public aura::WindowObserver, - public aura::client::ActivationChangeObserver { + public WMHelper::ActivationObserver { public: ShellSurface(Surface* surface, ShellSurface* parent, @@ -206,9 +206,8 @@ const gfx::Rect& new_bounds) override; void OnWindowDestroying(aura::Window* window) override; - // Overridden from aura::client::ActivationChangeObserver: + // Overridden from WMHelper::ActivationObserver: void OnWindowActivated( - aura::client::ActivationChangeObserver::ActivationReason reason, aura::Window* gained_active, aura::Window* lost_active) override;
diff --git a/components/exo/touch.cc b/components/exo/touch.cc index 25507227..f0db5959 100644 --- a/components/exo/touch.cc +++ b/components/exo/touch.cc
@@ -4,9 +4,9 @@ #include "components/exo/touch.h" -#include "ash/shell.h" #include "components/exo/surface.h" #include "components/exo/touch_delegate.h" +#include "components/exo/wm_helper.h" #include "ui/aura/window.h" #include "ui/events/event.h" @@ -32,14 +32,14 @@ // Touch, public: Touch::Touch(TouchDelegate* delegate) : delegate_(delegate) { - ash::Shell::GetInstance()->AddPreTargetHandler(this); + WMHelper::GetInstance()->AddPreTargetHandler(this); } Touch::~Touch() { delegate_->OnTouchDestroying(this); if (focus_) focus_->RemoveSurfaceObserver(this); - ash::Shell::GetInstance()->RemovePreTargetHandler(this); + WMHelper::GetInstance()->RemovePreTargetHandler(this); } ////////////////////////////////////////////////////////////////////////////////
diff --git a/components/exo/wayland/server.cc b/components/exo/wayland/server.cc index ed5ec022..004f9d9 100644 --- a/components/exo/wayland/server.cc +++ b/components/exo/wayland/server.cc
@@ -30,9 +30,6 @@ #include "ash/common/display/display_info.h" #include "ash/common/shell_observer.h" #include "ash/common/shell_window_ids.h" -#include "ash/common/wm/maximize_mode/maximize_mode_controller.h" -#include "ash/common/wm_shell.h" -#include "ash/display/display_manager.h" #include "ash/shell.h" #include "base/bind.h" #include "base/cancelable_callback.h" @@ -63,6 +60,7 @@ #include "components/exo/surface_property.h" #include "components/exo/touch.h" #include "components/exo/touch_delegate.h" +#include "components/exo/wm_helper.h" #include "ipc/unix_domain_socket_util.h" #include "third_party/skia/include/core/SkRegion.h" #include "ui/aura/window_property.h" @@ -75,8 +73,6 @@ #include "ui/gfx/buffer_types.h" #include "ui/views/widget/widget.h" #include "ui/views/widget/widget_observer.h" -#include "ui/wm/public/activation_change_observer.h" -#include "ui/wm/public/activation_client.h" #if defined(USE_OZONE) #include <drm_fourcc.h> @@ -1079,8 +1075,7 @@ display::Screen::GetScreen()->GetPrimaryDisplay(); const ash::DisplayInfo& info = - ash::Shell::GetInstance()->display_manager()->GetDisplayInfo( - display.id()); + WMHelper::GetInstance()->GetDisplayInfo(display.id()); const float kInchInMm = 25.4f; const char* kUnknownMake = "unknown"; @@ -1573,8 +1568,8 @@ // Implements remote shell interface and monitors workspace state needed // for the remote shell interface. -class WaylandRemoteShell : public ash::ShellObserver, - public aura::client::ActivationChangeObserver, +class WaylandRemoteShell : public WMHelper::MaximizeModeObserver, + public WMHelper::ActivationObserver, public display::DisplayObserver { public: WaylandRemoteShell(Display* display, @@ -1582,23 +1577,22 @@ : display_(display), remote_shell_resource_(remote_shell_resource), weak_ptr_factory_(this) { - ash::WmShell::Get()->AddShellObserver(this); - ash::Shell* shell = ash::Shell::GetInstance(); - shell->activation_client()->AddObserver(this); + auto* helper = WMHelper::GetInstance(); + helper->AddMaximizeModeObserver(this); + helper->AddActivationObserver(this); display::Screen::GetScreen()->AddObserver(this); - layout_mode_ = ash::WmShell::Get() - ->maximize_mode_controller() - ->IsMaximizeModeWindowManagerEnabled() + layout_mode_ = helper->IsMaximizeModeWindowManagerEnabled() ? ZWP_REMOTE_SHELL_V1_LAYOUT_MODE_TABLET : ZWP_REMOTE_SHELL_V1_LAYOUT_MODE_WINDOWED; SendPrimaryDisplayMetrics(); - SendActivated(shell->activation_client()->GetActiveWindow(), nullptr); + SendActivated(helper->GetActiveWindow(), nullptr); } ~WaylandRemoteShell() override { - ash::WmShell::Get()->RemoveShellObserver(this); - ash::Shell::GetInstance()->activation_client()->RemoveObserver(this); + auto* helper = WMHelper::GetInstance(); + helper->RemoveMaximizeModeObserver(this); + helper->RemoveActivationObserver(this); display::Screen::GetScreen()->RemoveObserver(this); } @@ -1632,7 +1626,7 @@ SendConfigure_DEPRECATED(display); } - // Overridden from ash::ShellObserver: + // Overridden from WMHelper::MaximizeModeObserver: void OnMaximizeModeStarted() override { layout_mode_ = ZWP_REMOTE_SHELL_V1_LAYOUT_MODE_TABLET; SendLayoutModeChange_DEPRECATED(); @@ -1653,9 +1647,8 @@ base::TimeDelta::FromMilliseconds(kConfigureDelayAfterLayoutSwitchMs)); } - // Overridden from aura::client::ActivationChangeObserver: + // Overridden from WMHelper::ActivationObserver: void OnWindowActivated( - aura::client::ActivationChangeObserver::ActivationReason reason, aura::Window* gained_active, aura::Window* lost_active) override { SendActivated(gained_active, lost_active);
diff --git a/components/exo/wm_helper.cc b/components/exo/wm_helper.cc new file mode 100644 index 0000000..f73138a4 --- /dev/null +++ b/components/exo/wm_helper.cc
@@ -0,0 +1,161 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/exo/wm_helper.h" + +#include "ash/common/wm/maximize_mode/maximize_mode_controller.h" +#include "ash/common/wm_shell.h" +#include "ash/display/display_manager.h" +#include "ash/shell.h" +#include "base/memory/singleton.h" +#include "ui/aura/client/focus_client.h" +#include "ui/wm/public/activation_client.h" + +namespace exo { + +//////////////////////////////////////////////////////////////////////////////// +// WMHelper, public: + +WMHelper::WMHelper() { + ash::WmShell::Get()->AddShellObserver(this); + ash::Shell::GetInstance()->activation_client()->AddObserver(this); + aura::client::FocusClient* focus_client = + aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); + focus_client->AddObserver(this); +} + +WMHelper::~WMHelper() { + if (!ash::Shell::HasInstance()) + return; + aura::client::FocusClient* focus_client = + aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); + focus_client->AddObserver(this); + focus_client->RemoveObserver(this); + ash::Shell::GetInstance()->activation_client()->RemoveObserver(this); + ash::WmShell::Get()->RemoveShellObserver(this); +} + +// static +WMHelper* WMHelper::GetInstance() { + return base::Singleton<WMHelper>::get(); +} + +const ash::DisplayInfo& WMHelper::GetDisplayInfo(int64_t display_id) const { + return ash::Shell::GetInstance()->display_manager()->GetDisplayInfo( + display_id); +} + +// static +aura::Window* WMHelper::GetContainer(int container_id) { + return ash::Shell::GetContainer(ash::Shell::GetTargetRootWindow(), + container_id); +} + +aura::Window* WMHelper::GetActiveWindow() const { + return ash::Shell::GetInstance()->activation_client()->GetActiveWindow(); +} + +void WMHelper::AddActivationObserver(ActivationObserver* observer) { + activation_observers_.AddObserver(observer); +} + +void WMHelper::RemoveActivationObserver(ActivationObserver* observer) { + activation_observers_.RemoveObserver(observer); +} + +aura::Window* WMHelper::GetFocusedWindow() const { + aura::client::FocusClient* focus_client = + aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow()); + return focus_client->GetFocusedWindow(); +} + +void WMHelper::AddFocusObserver(FocusObserver* observer) { + focus_observers_.AddObserver(observer); +} + +void WMHelper::RemoveFocusObserver(FocusObserver* observer) { + focus_observers_.RemoveObserver(observer); +} + +ui::CursorSetType WMHelper::GetCursorSet() const { + return ash::Shell::GetInstance()->cursor_manager()->GetCursorSet(); +} + +void WMHelper::AddCursorObserver(CursorObserver* observer) { + cursor_observers_.AddObserver(observer); +} + +void WMHelper::RemoveCursorObserver(CursorObserver* observer) { + cursor_observers_.RemoveObserver(observer); +} + +void WMHelper::AddPreTargetHandler(ui::EventHandler* handler) { + ash::Shell::GetInstance()->AddPreTargetHandler(handler); +} + +void WMHelper::PrependPreTargetHandler(ui::EventHandler* handler) { + ash::Shell::GetInstance()->PrependPreTargetHandler(handler); +} + +void WMHelper::RemovePreTargetHandler(ui::EventHandler* handler) { + ash::Shell::GetInstance()->RemovePreTargetHandler(handler); +} + +void WMHelper::AddPostTargetHandler(ui::EventHandler* handler) { + ash::Shell::GetInstance()->AddPostTargetHandler(handler); +} + +void WMHelper::RemovePostTargetHandler(ui::EventHandler* handler) { + ash::Shell::GetInstance()->RemovePostTargetHandler(handler); +} + +bool WMHelper::IsMaximizeModeWindowManagerEnabled() const { + return ash::WmShell::Get() + ->maximize_mode_controller() + ->IsMaximizeModeWindowManagerEnabled(); +} + +void WMHelper::AddMaximizeModeObserver(MaximizeModeObserver* observer) { + maximize_mode_observers_.AddObserver(observer); +} + +void WMHelper::RemoveMaximizeModeObserver(MaximizeModeObserver* observer) { + maximize_mode_observers_.RemoveObserver(observer); +} + +void WMHelper::OnWindowActivated( + aura::client::ActivationChangeObserver::ActivationReason reason, + aura::Window* gained_active, + aura::Window* lost_active) { + FOR_EACH_OBSERVER(ActivationObserver, activation_observers_, + OnWindowActivated(gained_active, lost_active)); +} + +void WMHelper::OnWindowFocused(aura::Window* gained_focus, + aura::Window* lost_focus) { + FOR_EACH_OBSERVER(FocusObserver, focus_observers_, + OnWindowFocused(gained_focus, lost_focus)); +} + +void WMHelper::OnCursorVisibilityChanged(bool is_visible) { + FOR_EACH_OBSERVER(CursorObserver, cursor_observers_, + OnCursorVisibilityChanged(is_visible)); +} + +void WMHelper::OnCursorSetChanged(ui::CursorSetType cursor_set) { + FOR_EACH_OBSERVER(CursorObserver, cursor_observers_, + OnCursorSetChanged(cursor_set)); +} + +void WMHelper::OnMaximizeModeStarted() { + FOR_EACH_OBSERVER(MaximizeModeObserver, maximize_mode_observers_, + OnMaximizeModeStarted()); +} + +void WMHelper::OnMaximizeModeEnded() { + FOR_EACH_OBSERVER(MaximizeModeObserver, maximize_mode_observers_, + OnMaximizeModeEnded()); +} + +} // namespace exo
diff --git a/components/exo/wm_helper.h b/components/exo/wm_helper.h new file mode 100644 index 0000000..d43aef88 --- /dev/null +++ b/components/exo/wm_helper.h
@@ -0,0 +1,138 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_EXO_WM_HELPER_H_ +#define COMPONENTS_EXO_WM_HELPER_H_ + +#include "ash/common/shell_observer.h" +#include "base/macros.h" +#include "base/observer_list.h" +#include "ui/aura/client/cursor_client_observer.h" +#include "ui/aura/client/focus_change_observer.h" +#include "ui/wm/public/activation_change_observer.h" + +namespace ash { +class DisplayInfo; +} + +namespace aura { +class Window; +} + +namespace ui { +class EventHandler; +} + +namespace base { +template <typename T> +struct DefaultSingletonTraits; +} + +namespace exo { + +// A helper class for accessing WindowManager related features. +class WMHelper : public aura::client::ActivationChangeObserver, + public aura::client::FocusChangeObserver, + public aura::client::CursorClientObserver, + public ash::ShellObserver { + public: + class ActivationObserver { + public: + virtual void OnWindowActivated(aura::Window* gained_active, + aura::Window* lost_active) = 0; + + protected: + virtual ~ActivationObserver() {} + }; + + class FocusObserver { + public: + virtual void OnWindowFocused(aura::Window* gained_focus, + aura::Window* lost_focus) = 0; + + protected: + virtual ~FocusObserver() {} + }; + + class CursorObserver { + public: + virtual void OnCursorVisibilityChanged(bool is_visible) {} + virtual void OnCursorSetChanged(ui::CursorSetType cursor_set) {} + + protected: + virtual ~CursorObserver() {} + }; + + class MaximizeModeObserver { + public: + virtual void OnMaximizeModeStarted() = 0; + virtual void OnMaximizeModeEnded() = 0; + + protected: + virtual ~MaximizeModeObserver() {} + }; + + static WMHelper* GetInstance(); + + const ash::DisplayInfo& GetDisplayInfo(int64_t display_id) const; + aura::Window* GetContainer(int container_id); + + aura::Window* GetActiveWindow() const; + void AddActivationObserver(ActivationObserver* observer); + void RemoveActivationObserver(ActivationObserver* observer); + + aura::Window* GetFocusedWindow() const; + void AddFocusObserver(FocusObserver* observer); + void RemoveFocusObserver(FocusObserver* observer); + + ui::CursorSetType GetCursorSet() const; + void AddCursorObserver(CursorObserver* observer); + void RemoveCursorObserver(CursorObserver* observer); + + void AddPreTargetHandler(ui::EventHandler* handler); + void PrependPreTargetHandler(ui::EventHandler* handler); + void RemovePreTargetHandler(ui::EventHandler* handler); + + void AddPostTargetHandler(ui::EventHandler* handler); + void RemovePostTargetHandler(ui::EventHandler* handler); + + bool IsMaximizeModeWindowManagerEnabled() const; + void AddMaximizeModeObserver(MaximizeModeObserver* observer); + void RemoveMaximizeModeObserver(MaximizeModeObserver* observer); + + private: + WMHelper(); + ~WMHelper() override; + + friend struct base::DefaultSingletonTraits<WMHelper>; + + // Overriden from aura::client::ActivationChangeObserver: + void OnWindowActivated( + aura::client::ActivationChangeObserver::ActivationReason reason, + aura::Window* gained_active, + aura::Window* lost_active) override; + + // Overriden from aura::client::FocusChangeObserver: + void OnWindowFocused(aura::Window* gained_focus, + aura::Window* lost_focus) override; + + // Overriden from aura::client::CursorClientObserver: + void OnCursorVisibilityChanged(bool is_visible) override; + void OnCursorSetChanged(ui::CursorSetType cursor_set) override; + + // Overriden from ash::ShellObserver: + void OnMaximizeModeStarted() override; + void OnMaximizeModeEnded() override; + + base::ObserverList<ActivationObserver> activation_observers_; + base::ObserverList<FocusObserver> focus_observers_; + base::ObserverList<CursorObserver> cursor_observers_; + base::ObserverList<MaximizeModeObserver> maximize_mode_observers_; + + DISALLOW_COPY_AND_ASSIGN(WMHelper); +}; + +} // namespace exo + +#endif // COMPONENTS_EXO_WM_HELPER_H_
diff --git a/components/external_video_surface/browser/android/external_video_surface_container_impl.cc b/components/external_video_surface/browser/android/external_video_surface_container_impl.cc index 9b7295f0..af66b09 100644 --- a/components/external_video_surface/browser/android/external_video_surface_container_impl.cc +++ b/components/external_video_surface/browser/android/external_video_surface_container_impl.cc
@@ -36,12 +36,12 @@ base::android::ScopedJavaLocalRef<jobject> java_content_view_core) { JNIEnv* env = AttachCurrentThread(); jobject_.Reset(Java_ExternalVideoSurfaceContainer_create( - env, reinterpret_cast<intptr_t>(this), java_content_view_core.obj())); + env, reinterpret_cast<intptr_t>(this), java_content_view_core)); } ExternalVideoSurfaceContainerImpl::~ExternalVideoSurfaceContainerImpl() { JNIEnv* env = AttachCurrentThread(); - Java_ExternalVideoSurfaceContainer_destroy(env, jobject_.obj()); + Java_ExternalVideoSurfaceContainer_destroy(env, jobject_); jobject_.Reset(); } @@ -54,15 +54,14 @@ JNIEnv* env = AttachCurrentThread(); Java_ExternalVideoSurfaceContainer_requestExternalVideoSurface( - env, jobject_.obj(), static_cast<jint>(player_id)); + env, jobject_, static_cast<jint>(player_id)); } int ExternalVideoSurfaceContainerImpl::GetCurrentPlayerId() { JNIEnv* env = AttachCurrentThread(); int current_player = static_cast<int>( - Java_ExternalVideoSurfaceContainer_getCurrentPlayerId( - env, jobject_.obj())); + Java_ExternalVideoSurfaceContainer_getCurrentPlayerId(env, jobject_)); if (current_player < 0) return kInvalidPlayerId; @@ -74,7 +73,7 @@ int player_id) { JNIEnv* env = AttachCurrentThread(); Java_ExternalVideoSurfaceContainer_releaseExternalVideoSurface( - env, jobject_.obj(), static_cast<jint>(player_id)); + env, jobject_, static_cast<jint>(player_id)); surface_created_cb_.Reset(); surface_destroyed_cb_.Reset(); @@ -82,18 +81,15 @@ void ExternalVideoSurfaceContainerImpl::OnFrameInfoUpdated() { JNIEnv* env = AttachCurrentThread(); - Java_ExternalVideoSurfaceContainer_onFrameInfoUpdated(env, jobject_.obj()); + Java_ExternalVideoSurfaceContainer_onFrameInfoUpdated(env, jobject_); } void ExternalVideoSurfaceContainerImpl::OnExternalVideoSurfacePositionChanged( int player_id, const gfx::RectF& rect) { JNIEnv* env = AttachCurrentThread(); Java_ExternalVideoSurfaceContainer_onExternalVideoSurfacePositionChanged( - env, - jobject_.obj(), - static_cast<jint>(player_id), - static_cast<jfloat>(rect.x()), - static_cast<jfloat>(rect.y()), + env, jobject_, static_cast<jint>(player_id), + static_cast<jfloat>(rect.x()), static_cast<jfloat>(rect.y()), static_cast<jfloat>(rect.x() + rect.width()), static_cast<jfloat>(rect.y() + rect.height())); }
diff --git a/components/gcm_driver/gcm_driver_android.cc b/components/gcm_driver/gcm_driver_android.cc index 3354c22..325f83fb 100644 --- a/components/gcm_driver/gcm_driver_android.cc +++ b/components/gcm_driver/gcm_driver_android.cc
@@ -38,7 +38,7 @@ GCMDriverAndroid::~GCMDriverAndroid() { JNIEnv* env = AttachCurrentThread(); - Java_GCMDriver_destroy(env, java_ref_.obj()); + Java_GCMDriver_destroy(env, java_ref_); } void GCMDriverAndroid::OnRegisterFinished( @@ -233,9 +233,8 @@ recorder_.RecordRegistrationSent(app_id); - Java_GCMDriver_register(env, java_ref_.obj(), - ConvertUTF8ToJavaString(env, app_id).obj(), - ConvertUTF8ToJavaString(env, sender_ids[0]).obj()); + Java_GCMDriver_register(env, java_ref_, ConvertUTF8ToJavaString(env, app_id), + ConvertUTF8ToJavaString(env, sender_ids[0])); } void GCMDriverAndroid::UnregisterImpl(const std::string& app_id) { @@ -249,9 +248,9 @@ recorder_.RecordUnregistrationSent(app_id); - Java_GCMDriver_unregister(env, java_ref_.obj(), - ConvertUTF8ToJavaString(env, app_id).obj(), - ConvertUTF8ToJavaString(env, sender_id).obj()); + Java_GCMDriver_unregister(env, java_ref_, + ConvertUTF8ToJavaString(env, app_id), + ConvertUTF8ToJavaString(env, sender_id)); } void GCMDriverAndroid::SendImpl(const std::string& app_id,
diff --git a/components/gcm_driver/instance_id/instance_id_android.cc b/components/gcm_driver/instance_id/instance_id_android.cc index c49cf41..fa81705 100644 --- a/components/gcm_driver/instance_id/instance_id_android.cc +++ b/components/gcm_driver/instance_id/instance_id_android.cc
@@ -62,17 +62,17 @@ std::string subtype = app_id; JNIEnv* env = AttachCurrentThread(); - java_ref_.Reset(Java_InstanceIDBridge_create( - env, reinterpret_cast<intptr_t>(this), - base::android::GetApplicationContext(), - ConvertUTF8ToJavaString(env, subtype).obj())); + java_ref_.Reset( + Java_InstanceIDBridge_create(env, reinterpret_cast<intptr_t>(this), + base::android::GetApplicationContext(), + ConvertUTF8ToJavaString(env, subtype))); } InstanceIDAndroid::~InstanceIDAndroid() { DCHECK(thread_checker_.CalledOnValidThread()); JNIEnv* env = AttachCurrentThread(); - Java_InstanceIDBridge_destroy(env, java_ref_.obj()); + Java_InstanceIDBridge_destroy(env, java_ref_); } void InstanceIDAndroid::GetID(const GetIDCallback& callback) { @@ -81,7 +81,7 @@ int32_t request_id = get_id_callbacks_.Add(new GetIDCallback(callback)); JNIEnv* env = AttachCurrentThread(); - Java_InstanceIDBridge_getId(env, java_ref_.obj(), request_id); + Java_InstanceIDBridge_getId(env, java_ref_, request_id); } void InstanceIDAndroid::GetCreationTime( @@ -92,7 +92,7 @@ get_creation_time_callbacks_.Add(new GetCreationTimeCallback(callback)); JNIEnv* env = AttachCurrentThread(); - Java_InstanceIDBridge_getCreationTime(env, java_ref_.obj(), request_id); + Java_InstanceIDBridge_getCreationTime(env, java_ref_, request_id); } void InstanceIDAndroid::GetToken( @@ -112,10 +112,10 @@ JNIEnv* env = AttachCurrentThread(); Java_InstanceIDBridge_getToken( - env, java_ref_.obj(), request_id, - ConvertUTF8ToJavaString(env, authorized_entity).obj(), - ConvertUTF8ToJavaString(env, scope).obj(), - base::android::ToJavaArrayOfStrings(env, options_strings).obj()); + env, java_ref_, request_id, + ConvertUTF8ToJavaString(env, authorized_entity), + ConvertUTF8ToJavaString(env, scope), + base::android::ToJavaArrayOfStrings(env, options_strings)); } void InstanceIDAndroid::DeleteTokenImpl(const std::string& authorized_entity, @@ -128,9 +128,9 @@ JNIEnv* env = AttachCurrentThread(); Java_InstanceIDBridge_deleteToken( - env, java_ref_.obj(), request_id, - ConvertUTF8ToJavaString(env, authorized_entity).obj(), - ConvertUTF8ToJavaString(env, scope).obj()); + env, java_ref_, request_id, + ConvertUTF8ToJavaString(env, authorized_entity), + ConvertUTF8ToJavaString(env, scope)); } void InstanceIDAndroid::DeleteIDImpl(const DeleteIDCallback& callback) { @@ -139,7 +139,7 @@ int32_t request_id = delete_id_callbacks_.Add(new DeleteIDCallback(callback)); JNIEnv* env = AttachCurrentThread(); - Java_InstanceIDBridge_deleteInstanceID(env, java_ref_.obj(), request_id); + Java_InstanceIDBridge_deleteInstanceID(env, java_ref_, request_id); } void InstanceIDAndroid::DidGetID(
diff --git a/components/invalidation/impl/invalidation_service_android.cc b/components/invalidation/impl/invalidation_service_android.cc index c0704a5..c909c42 100644 --- a/components/invalidation/impl/invalidation_service_android.cc +++ b/components/invalidation/impl/invalidation_service_android.cc
@@ -14,13 +14,14 @@ using base::android::ConvertJavaStringToUTF8; using base::android::ConvertUTF8ToJavaString; +using base::android::JavaRef; using base::android::JavaParamRef; namespace invalidation { -InvalidationServiceAndroid::InvalidationServiceAndroid(jobject context) - : invalidator_state_(syncer::INVALIDATIONS_ENABLED), - logger_() { +InvalidationServiceAndroid::InvalidationServiceAndroid( + const JavaRef<jobject>& context) + : invalidator_state_(syncer::INVALIDATIONS_ENABLED), logger_() { DCHECK(CalledOnValidThread()); JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> local_java_ref = @@ -63,10 +64,8 @@ } Java_InvalidationService_setRegisteredObjectIds( - env, - java_ref_.obj(), - base::android::ToJavaIntArray(env, sources).obj(), - base::android::ToJavaArrayOfStrings(env, names).obj()); + env, java_ref_, base::android::ToJavaIntArray(env, sources), + base::android::ToJavaArrayOfStrings(env, names)); logger_.OnUpdateIds(invalidator_registrar_.GetSanitizedHandlersIdsMap()); return true; @@ -92,7 +91,7 @@ // Ask the Java code to for the invalidator ID it's currently using. base::android::ScopedJavaLocalRef<_jbyteArray*> id_bytes_java = - Java_InvalidationService_getInvalidatorClientId(env, java_ref_.obj()); + Java_InvalidationService_getInvalidatorClientId(env, java_ref_); // Convert it into a more convenient format for C++. std::vector<uint8_t> id_bytes;
diff --git a/components/invalidation/impl/invalidation_service_android.h b/components/invalidation/impl/invalidation_service_android.h index b35f3b6..43def716 100644 --- a/components/invalidation/impl/invalidation_service_android.h +++ b/components/invalidation/impl/invalidation_service_android.h
@@ -30,7 +30,8 @@ : public base::NonThreadSafe, public InvalidationService { public: - explicit InvalidationServiceAndroid(jobject context); + explicit InvalidationServiceAndroid( + const base::android::JavaRef<jobject>& context); ~InvalidationServiceAndroid() override; // InvalidationService implementation.
diff --git a/components/navigation_interception/intercept_navigation_delegate.cc b/components/navigation_interception/intercept_navigation_delegate.cc index d29fb88..23dab25 100644 --- a/components/navigation_interception/intercept_navigation_delegate.cc +++ b/components/navigation_interception/intercept_navigation_delegate.cc
@@ -138,9 +138,7 @@ env, navigation_params, has_user_gesture_carryover); return Java_InterceptNavigationDelegate_shouldIgnoreNavigation( - env, - jdelegate.obj(), - jobject_params.obj()); + env, jdelegate, jobject_params); } void InterceptNavigationDelegate::UpdateLastUserGestureCarryoverTimestamp() {
diff --git a/components/navigation_interception/navigation_params_android.cc b/components/navigation_interception/navigation_params_android.cc index c761d15..e459d362 100644 --- a/components/navigation_interception/navigation_params_android.cc +++ b/components/navigation_interception/navigation_params_android.cc
@@ -23,15 +23,9 @@ ConvertUTF8ToJavaString(env, params.referrer().url.spec()); return Java_NavigationParams_create( - env, - jstring_url.obj(), - jstring_referrer.obj(), - params.is_post(), - params.has_user_gesture(), - params.transition_type(), - params.is_redirect(), - params.is_external_protocol(), - params.is_main_frame(), + env, jstring_url, jstring_referrer, params.is_post(), + params.has_user_gesture(), params.transition_type(), params.is_redirect(), + params.is_external_protocol(), params.is_main_frame(), has_user_gesture_carryover); }
diff --git a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc index 5efe847..cba876e 100644 --- a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc +++ b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc
@@ -51,8 +51,12 @@ // If there are bookmarks for |url|, set their last visit date to now. std::string now = FormatLastVisitDate(base::Time::Now()); - for (const BookmarkNode* node : bookmarks_for_url) + for (const BookmarkNode* node : bookmarks_for_url) { bookmark_model->SetNodeMetaInfo(node, kBookmarkLastVisitDateKey, now); + // If the bookmark has been dismissed from NTP before, a new visit overrides + // such a dismission. + bookmark_model->DeleteNodeMetaInfo(node, kBookmarkDismissedFromNTP); + } } base::Time GetLastVisitDateForBookmark(const BookmarkNode* node) {
diff --git a/components/ntp_snippets/category.cc b/components/ntp_snippets/category.cc index 0629a58..c9dff312 100644 --- a/components/ntp_snippets/category.cc +++ b/components/ntp_snippets/category.cc
@@ -20,6 +20,11 @@ return !(left == right); } +bool Category::CompareByID::operator()(const Category& left, + const Category& right) const { + return left.id() < right.id(); +} + std::ostream& operator<<(std::ostream& os, const Category& obj) { os << obj.id(); return os;
diff --git a/components/ntp_snippets/category.h b/components/ntp_snippets/category.h index bd19a15..eedcb32 100644 --- a/components/ntp_snippets/category.h +++ b/components/ntp_snippets/category.h
@@ -41,6 +41,10 @@ // CategoryFactory to obtain instances. class Category { public: + // An arbitrary but consistent ordering. Can be used to look up categories in + // a std::map, but should not be used to order categories for other purposes. + struct CompareByID; + // Returns a non-negative identifier that is unique for the category and can // be converted back to a Category instance using // |CategoryFactory::FromIDValue(id)|. @@ -64,6 +68,10 @@ bool operator!=(const Category& left, const Category& right); +struct Category::CompareByID { + bool operator()(const Category& left, const Category& right) const; +}; + std::ostream& operator<<(std::ostream& os, const Category& obj); } // namespace ntp_snippets
diff --git a/components/ntp_snippets/content_suggestions_service.cc b/components/ntp_snippets/content_suggestions_service.cc index 7b23609c..c71c8ca 100644 --- a/components/ntp_snippets/content_suggestions_service.cc +++ b/components/ntp_snippets/content_suggestions_service.cc
@@ -15,12 +15,6 @@ namespace ntp_snippets { -bool ContentSuggestionsService::CompareCategoriesByID::operator()( - const Category& left, - const Category& right) const { - return left.id() < right.id(); -} - ContentSuggestionsService::ContentSuggestionsService(State state) : state_(state) {}
diff --git a/components/ntp_snippets/content_suggestions_service.h b/components/ntp_snippets/content_suggestions_service.h index ad7f8a9..76f79cf4 100644 --- a/components/ntp_snippets/content_suggestions_service.h +++ b/components/ntp_snippets/content_suggestions_service.h
@@ -148,12 +148,6 @@ private: friend class ContentSuggestionsServiceTest; - // This is just an arbitrary ordering by ID, used by the maps in this class, - // because the ordering needs to be constant for maps. - struct CompareCategoriesByID { - bool operator()(const Category& left, const Category& right) const; - }; - // Implementation of ContentSuggestionsProvider::Observer. void OnNewSuggestions(ContentSuggestionsProvider* provider, Category category, @@ -184,7 +178,7 @@ // multiple times, if it provides multiple categories. The keys of this map // are exactly the entries of |categories_| and the values are a subset of // |providers_|. - std::map<Category, ContentSuggestionsProvider*, CompareCategoriesByID> + std::map<Category, ContentSuggestionsProvider*, Category::CompareByID> providers_by_category_; // All current suggestion categories, in an order determined by the @@ -196,7 +190,7 @@ // every category in |categories_| whose status is an available status. It may // contain an empty vector if the category is available but empty (or still // loading). - std::map<Category, std::vector<ContentSuggestion>, CompareCategoriesByID> + std::map<Category, std::vector<ContentSuggestion>, Category::CompareByID> suggestions_by_category_; // Map used to determine the category of a suggestion (of which only the ID
diff --git a/components/ntp_snippets/content_suggestions_service_unittest.cc b/components/ntp_snippets/content_suggestions_service_unittest.cc index a7f7538..91fd665 100644 --- a/components/ntp_snippets/content_suggestions_service_unittest.cc +++ b/components/ntp_snippets/content_suggestions_service_unittest.cc
@@ -151,9 +151,7 @@ } } - const std::map<Category, - ContentSuggestionsProvider*, - ContentSuggestionsService::CompareCategoriesByID>& + const std::map<Category, ContentSuggestionsProvider*, Category::CompareByID>& providers() { return service()->providers_by_category_; }
diff --git a/components/ntp_snippets/ntp_snippet.cc b/components/ntp_snippets/ntp_snippet.cc index 8515e4f9..d69a77ab 100644 --- a/components/ntp_snippets/ntp_snippet.cc +++ b/components/ntp_snippets/ntp_snippet.cc
@@ -260,12 +260,6 @@ return base::Int64ToString((time - base::Time::UnixEpoch()).InSeconds()); } -bool NTPSnippet::CompareCategoriesByID::operator()( - const Category& left, - const Category& right) const { - return left.id() < right.id(); -} - void NTPSnippet::FindBestSource() { // The same article can be hosted by multiple sources, e.g. nytimes.com, // cnn.com, etc. We need to parse the list of sources for this article and
diff --git a/components/ntp_snippets/ntp_snippet.h b/components/ntp_snippets/ntp_snippet.h index 3d2d6bf..1c35b345 100644 --- a/components/ntp_snippets/ntp_snippet.h +++ b/components/ntp_snippets/ntp_snippet.h
@@ -34,11 +34,9 @@ }; class NTPSnippet { - struct CompareCategoriesByID; - public: using PtrVector = std::vector<std::unique_ptr<NTPSnippet>>; - using CategoryMap = std::map<Category, PtrVector, CompareCategoriesByID>; + using CategoryMap = std::map<Category, PtrVector, Category::CompareByID>; // Creates a new snippet with the given |id|. // Public for testing only - create snippets using the Create* methods below. @@ -135,10 +133,6 @@ static std::string TimeToJsonString(const base::Time& time); private: - struct CompareCategoriesByID { - bool operator()(const Category& left, const Category& right) const; - }; - void FindBestSource(); std::string id_;
diff --git a/components/os_crypt/BUILD.gn b/components/os_crypt/BUILD.gn index 2c40d08..be2ce6f 100644 --- a/components/os_crypt/BUILD.gn +++ b/components/os_crypt/BUILD.gn
@@ -5,8 +5,9 @@ import("//build/config/features.gni") import("//build/config/ui.gni") import("//build/config/linux/pkg_config.gni") +import("//components/os_crypt/features.gni") -if (is_desktop_linux) { +if (use_gnome_keyring) { # Gnome-keyring is normally dynamically loaded. The gnome_keyring config # will set this up. pkg_config("gnome_keyring") { @@ -76,19 +77,21 @@ ] defines = [] + if (use_gnome_keyring) { + sources += [ + "keyring_util_linux.cc", + "keyring_util_linux.h", + ] + configs += [ ":gnome_keyring" ] + } if (use_glib) { sources += [ "key_storage_libsecret.cc", "key_storage_libsecret.h", - "keyring_util_linux.cc", - "keyring_util_linux.h", "libsecret_util_linux.cc", "libsecret_util_linux.h", ] - configs += [ - "//build/config/linux:glib", - ":gnome_keyring", - ] + configs += [ "//build/config/linux:glib" ] deps += [ "//third_party/libsecret" ] defines += [ "USE_LIBSECRET" ] }
diff --git a/components/os_crypt/features.gni b/components/os_crypt/features.gni new file mode 100644 index 0000000..f67c8b97 --- /dev/null +++ b/components/os_crypt/features.gni
@@ -0,0 +1,11 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/ui.gni") + +declare_args() { + # Whether to use libgnome-keyring (deprecated by libsecret). + # See http://crbug.com/466975 and http://crbug.com/355223. + use_gnome_keyring = is_desktop_linux && use_glib +}
diff --git a/components/pdf/browser/pdf_web_contents_helper.cc b/components/pdf/browser/pdf_web_contents_helper.cc index c3f7db4a..ae931d4e 100644 --- a/components/pdf/browser/pdf_web_contents_helper.cc +++ b/components/pdf/browser/pdf_web_contents_helper.cc
@@ -41,7 +41,9 @@ UpdateLocationBar(); } -bool PDFWebContentsHelper::OnMessageReceived(const IPC::Message& message) { +bool PDFWebContentsHelper::OnMessageReceived( + const IPC::Message& message, + content::RenderFrameHost* render_frame_host) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(PDFWebContentsHelper, message) IPC_MESSAGE_HANDLER(PDFHostMsg_PDFHasUnsupportedFeature,
diff --git a/components/pdf/browser/pdf_web_contents_helper.h b/components/pdf/browser/pdf_web_contents_helper.h index c8b7a782..85d7d02a 100644 --- a/components/pdf/browser/pdf_web_contents_helper.h +++ b/components/pdf/browser/pdf_web_contents_helper.h
@@ -45,7 +45,8 @@ ~PDFWebContentsHelper() override; // content::WebContentsObserver overrides: - bool OnMessageReceived(const IPC::Message& message) override; + bool OnMessageReceived(const IPC::Message& message, + content::RenderFrameHost* render_frame_host) override; void DidNavigateMainFrame( const content::LoadCommittedDetails& details, const content::FrameNavigateParams& params) override;
diff --git a/components/policy/core/browser/android/android_combined_policy_provider.cc b/components/policy/core/browser/android/android_combined_policy_provider.cc index 7f1aeecf..50a9ecc 100644 --- a/components/policy/core/browser/android/android_combined_policy_provider.cc +++ b/components/policy/core/browser/android/android_combined_policy_provider.cc
@@ -29,7 +29,7 @@ policy_converter_.reset(new policy::android::PolicyConverter(schema)); java_combined_policy_provider_.Reset(Java_CombinedPolicyProvider_linkNative( AttachCurrentThread(), reinterpret_cast<intptr_t>(this), - policy_converter_->GetJavaObject().obj())); + policy_converter_->GetJavaObject())); } AndroidCombinedPolicyProvider::~AndroidCombinedPolicyProvider() { @@ -39,8 +39,8 @@ void AndroidCombinedPolicyProvider::RefreshPolicies() { JNIEnv* env = AttachCurrentThread(); - Java_CombinedPolicyProvider_refreshPolicies( - env, java_combined_policy_provider_.obj()); + Java_CombinedPolicyProvider_refreshPolicies(env, + java_combined_policy_provider_); } void AndroidCombinedPolicyProvider::FlushPolicies(
diff --git a/components/policy/core/browser/android/policy_converter.cc b/components/policy/core/browser/android/policy_converter.cc index 5a41094..972467e1 100644 --- a/components/policy/core/browser/android/policy_converter.cc +++ b/components/policy/core/browser/android/policy_converter.cc
@@ -39,7 +39,7 @@ PolicyConverter::~PolicyConverter() { Java_PolicyConverter_onNativeDestroyed(base::android::AttachCurrentThread(), - java_obj_.obj()); + java_obj_); } std::unique_ptr<PolicyBundle> PolicyConverter::GetPolicyBundle() {
diff --git a/components/safe_json/json_sanitizer_android.cc b/components/safe_json/json_sanitizer_android.cc index 12dd2503..b69b8d2 100644 --- a/components/safe_json/json_sanitizer_android.cc +++ b/components/safe_json/json_sanitizer_android.cc
@@ -73,7 +73,7 @@ // This will synchronously call either OnSuccess() or OnError(). Java_JsonSanitizer_sanitize(env, reinterpret_cast<jlong>(this), - unsafe_json_java.obj()); + unsafe_json_java); } void JsonSanitizerAndroid::OnSuccess(const std::string& json) {
diff --git a/components/signin/core/browser/child_account_info_fetcher_android.cc b/components/signin/core/browser/child_account_info_fetcher_android.cc index dbb6e6a8..2697018 100644 --- a/components/signin/core/browser/child_account_info_fetcher_android.cc +++ b/components/signin/core/browser/child_account_info_fetcher_android.cc
@@ -24,8 +24,8 @@ return; Java_ChildAccountInfoFetcher_fetch( env, reinterpret_cast<jlong>(service), - base::android::ConvertUTF8ToJavaString(env, account_id).obj(), - base::android::ConvertUTF8ToJavaString(env, account_name).obj()); + base::android::ConvertUTF8ToJavaString(env, account_id), + base::android::ConvertUTF8ToJavaString(env, account_name)); } // static
diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/components/subresource_filter/core/common/indexed_ruleset.cc index 66b4a68..424f4f3 100644 --- a/components/subresource_filter/core/common/indexed_ruleset.cc +++ b/components/subresource_filter/core/common/indexed_ruleset.cc
@@ -18,6 +18,185 @@ namespace subresource_filter { +namespace { + +// Checks whether a URL |rule| can be converted to its FlatBuffers equivalent, +// and performs the actual conversion. +class UrlRuleFlatBufferConverter { + public: + // Creates the converter, and initializes |is_convertible| bit. If + // |is_convertible| == true, then all the fields, needed for serializing the + // |rule| to FlatBuffer, are initialized (|options|, |anchor_right|, etc.). + UrlRuleFlatBufferConverter(const proto::UrlRule& rule) : rule_(rule) { + is_convertible_ = InitializeOptions() && InitializeElementTypes() && + InitializeActivationTypes() && InitializeUrlPattern(); + } + + // Returns whether the |rule| can be converted to its FlatBuffers equivalent. + // The conversion is not possible if the rule has attributes not supported by + // this client version. + bool is_convertible() const { return is_convertible_; } + + // Writes the URL |rule| to the FlatBuffer using the |builder|, and returns + // the offset to the serialized rule. + flatbuffers::Offset<flat::UrlRule> SerializeConvertedRule( + flatbuffers::FlatBufferBuilder* builder) const { + DCHECK(is_convertible()); + + flatbuffers::Offset< + flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> + domains_offset; + if (rule_.domains_size()) { + std::vector<flatbuffers::Offset<flatbuffers::String>> domains; + domains.reserve(rule_.domains_size()); + + std::string domain; + for (const auto& domain_list_item : rule_.domains()) { + domain.clear(); + domain.reserve(domain_list_item.domain().size() + 1); + if (domain_list_item.exclude()) + domain += '~'; + domain += domain_list_item.domain(); + domains.push_back(builder->CreateString(domain)); + } + domains_offset = builder->CreateVector(domains); + } + + auto url_pattern_offset = builder->CreateString(rule_.url_pattern()); + + std::vector<uint8_t> failure_function; + BuildFailureFunction(UrlPattern(rule_), &failure_function); + auto failure_function_offset = + builder->CreateVector(failure_function.data(), failure_function.size()); + + return flat::CreateUrlRule(*builder, options_, element_types_, + activation_types_, url_pattern_type_, + anchor_left_, anchor_right_, domains_offset, + url_pattern_offset, failure_function_offset); + } + + private: + static bool ConvertAnchorType(proto::AnchorType anchor_type, + flat::AnchorType* result) { + switch (anchor_type) { + case proto::ANCHOR_TYPE_NONE: + *result = flat::AnchorType_NONE; + break; + case proto::ANCHOR_TYPE_BOUNDARY: + *result = flat::AnchorType_BOUNDARY; + break; + case proto::ANCHOR_TYPE_SUBDOMAIN: + *result = flat::AnchorType_SUBDOMAIN; + break; + default: + return false; // Unsupported anchor type. + } + return true; + } + + bool InitializeOptions() { + if (rule_.semantics() == proto::RULE_SEMANTICS_WHITELIST) { + options_ |= flat::OptionFlag_IS_WHITELIST; + } else if (rule_.semantics() != proto::RULE_SEMANTICS_BLACKLIST) { + return false; // Unsupported semantics. + } + + switch (rule_.source_type()) { + case proto::SOURCE_TYPE_ANY: + options_ |= flat::OptionFlag_APPLIES_TO_THIRD_PARTY; + // Note: fall through here intentionally. + case proto::SOURCE_TYPE_FIRST_PARTY: + options_ |= flat::OptionFlag_APPLIES_TO_FIRST_PARTY; + break; + case proto::SOURCE_TYPE_THIRD_PARTY: + options_ |= flat::OptionFlag_APPLIES_TO_THIRD_PARTY; + break; + + default: + return false; // Unsupported source type. + } + + if (rule_.match_case()) + options_ |= flat::OptionFlag_IS_MATCH_CASE; + + return true; + } + + bool InitializeElementTypes() { + static_assert( + proto::ELEMENT_TYPE_ALL <= std::numeric_limits<uint16_t>::max(), + "Element types can not be stored in uint16_t."); + if ((rule_.element_types() & proto::ELEMENT_TYPE_ALL) != + rule_.element_types()) { + return false; // Unsupported element types. + } + element_types_ = static_cast<uint16_t>(rule_.element_types()); + // Note: Normally we can not distinguish between the main plugin resource + // and any other loads it makes. We treat them both as OBJECT requests. + if (element_types_ & proto::ELEMENT_TYPE_OBJECT_SUBREQUEST) + element_types_ |= proto::ELEMENT_TYPE_OBJECT; + return true; + } + + bool InitializeActivationTypes() { + static_assert( + proto::ACTIVATION_TYPE_ALL <= std::numeric_limits<uint8_t>::max(), + "Activation types can not be stored in uint8_t."); + if ((rule_.activation_types() & proto::ACTIVATION_TYPE_ALL) != + rule_.activation_types()) { + return false; // Unsupported activation types. + } + activation_types_ = static_cast<uint8_t>(rule_.activation_types()); + return true; + } + + bool InitializeUrlPattern() { + if (rule_.url_pattern().size() > + static_cast<size_t>(std::numeric_limits<uint8_t>::max())) { + // Failure function can not always be stored as an array of uint8_t in + // case the pattern's length exceeds 255. + return false; + } + + switch (rule_.url_pattern_type()) { + case proto::URL_PATTERN_TYPE_SUBSTRING: + url_pattern_type_ = flat::UrlPatternType_SUBSTRING; + break; + case proto::URL_PATTERN_TYPE_WILDCARDED: + url_pattern_type_ = flat::UrlPatternType_WILDCARDED; + break; + case proto::URL_PATTERN_TYPE_REGEXP: + url_pattern_type_ = flat::UrlPatternType_REGEXP; + break; + + default: + return false; // Unsupported URL pattern type. + } + + if (!ConvertAnchorType(rule_.anchor_left(), &anchor_left_) || + !ConvertAnchorType(rule_.anchor_right(), &anchor_right_)) { + return false; + } + if (anchor_right_ == flat::AnchorType_SUBDOMAIN) + return false; // Unsupported right anchor. + + return true; + } + + const proto::UrlRule& rule_; + + uint8_t options_ = 0; + uint16_t element_types_ = 0; + uint8_t activation_types_ = 0; + flat::UrlPatternType url_pattern_type_ = flat::UrlPatternType_WILDCARDED; + flat::AnchorType anchor_left_ = flat::AnchorType_NONE; + flat::AnchorType anchor_right_ = flat::AnchorType_NONE; + + bool is_convertible_ = true; +}; + +} // namespace + // RulesetIndexer -------------------------------------------------------------- // static @@ -30,138 +209,10 @@ RulesetIndexer::~RulesetIndexer() = default; bool RulesetIndexer::AddUrlRule(const proto::UrlRule& rule) { - if (rule.url_pattern().size() > - static_cast<size_t>(std::numeric_limits<uint8_t>::max())) { - // Failure function can not always be stored as an array of uint8_t in case - // the pattern's length exceeds 255. + UrlRuleFlatBufferConverter converter(rule); + if (!converter.is_convertible()) return false; - } - - flatbuffers::Offset< - flatbuffers::Vector<flatbuffers::Offset<flatbuffers::String>>> - domains_offset; - - if (rule.domains_size()) { - std::vector<flatbuffers::Offset<flatbuffers::String>> domains; - domains.reserve(rule.domains_size()); - - std::string domain; - for (const auto& domain_list_item : rule.domains()) { - domain.clear(); - domain.reserve(domain_list_item.domain().size() + 1); - if (domain_list_item.exclude()) - domain += '~'; - domain += domain_list_item.domain(); - domains.push_back(builder_.CreateString(domain)); - } - domains_offset = builder_.CreateVector(domains); - } - - auto url_pattern_offset = builder_.CreateString(rule.url_pattern()); - - std::vector<uint8_t> failure; - BuildFailureFunction(UrlPattern(rule), &failure); - auto failure_function_offset = - builder_.CreateVector(failure.data(), failure.size()); - - flat::UrlRuleBuilder rule_builder(builder_); - rule_builder.add_url_pattern(url_pattern_offset); - rule_builder.add_domains(domains_offset); - rule_builder.add_failure_function(failure_function_offset); - - uint8_t options = 0; - - if (rule.semantics() == proto::RULE_SEMANTICS_WHITELIST) { - options |= flat::OptionFlag_IS_WHITELIST; - } else if (rule.semantics() != proto::RULE_SEMANTICS_BLACKLIST) { - // Unsupported semantics. - return false; - } - - switch (rule.source_type()) { - case proto::SOURCE_TYPE_ANY: - options |= flat::OptionFlag_APPLIES_TO_THIRD_PARTY; - // Note: fall through here intentionally. - case proto::SOURCE_TYPE_FIRST_PARTY: - options |= flat::OptionFlag_APPLIES_TO_FIRST_PARTY; - break; - case proto::SOURCE_TYPE_THIRD_PARTY: - options |= flat::OptionFlag_APPLIES_TO_THIRD_PARTY; - break; - - default: - return false; // Unsupported source type. - } - - if (rule.match_case()) - options |= flat::OptionFlag_IS_MATCH_CASE; - - rule_builder.add_options(options); - - static_assert(proto::ELEMENT_TYPE_MAX <= std::numeric_limits<uint16_t>::max(), - "Element types can not be stored in uint16_t."); - if ((rule.element_types() & proto::ELEMENT_TYPE_ALL) != rule.element_types()) - return false; // Unsupported element types. - uint16_t element_types = static_cast<uint16_t>(rule.element_types()); - // Note: Normally we can not distinguish between the main plugin resource and - // any other loads it makes. We treat them both as OBJECT requests. - if (element_types & proto::ELEMENT_TYPE_OBJECT_SUBREQUEST) - element_types |= proto::ELEMENT_TYPE_OBJECT; - rule_builder.add_element_types(element_types); - - static_assert( - proto::ACTIVATION_TYPE_MAX <= std::numeric_limits<uint8_t>::max(), - "Activation types can not be stored in uint8_t."); - if ((rule.activation_types() & proto::ACTIVATION_TYPE_ALL) != - rule.activation_types()) { - return false; // Unsupported activation types. - } - rule_builder.add_activation_types( - static_cast<uint8_t>(rule.activation_types())); - - switch (rule.url_pattern_type()) { - case proto::URL_PATTERN_TYPE_SUBSTRING: - rule_builder.add_url_pattern_type(flat::UrlPatternType_SUBSTRING); - break; - case proto::URL_PATTERN_TYPE_WILDCARDED: - rule_builder.add_url_pattern_type(flat::UrlPatternType_WILDCARDED); - break; - case proto::URL_PATTERN_TYPE_REGEXP: - rule_builder.add_url_pattern_type(flat::UrlPatternType_REGEXP); - break; - - default: - return false; // Unsupported URL pattern type. - } - - switch (rule.anchor_left()) { - case proto::ANCHOR_TYPE_NONE: - rule_builder.add_anchor_left(flat::AnchorType_NONE); - break; - case proto::ANCHOR_TYPE_BOUNDARY: - rule_builder.add_anchor_left(flat::AnchorType_BOUNDARY); - break; - case proto::ANCHOR_TYPE_SUBDOMAIN: - rule_builder.add_anchor_left(flat::AnchorType_SUBDOMAIN); - break; - - default: - return false; // Unsupported left anchor. - } - - switch (rule.anchor_right()) { - case proto::ANCHOR_TYPE_NONE: - rule_builder.add_anchor_right(flat::AnchorType_NONE); - break; - case proto::ANCHOR_TYPE_BOUNDARY: - rule_builder.add_anchor_right(flat::AnchorType_BOUNDARY); - break; - - default: - return false; // Unsupported right anchor. - } - - auto rule_offset = rule_builder.Finish(); + auto rule_offset = converter.SerializeConvertedRule(&builder_); MutableUrlPatternIndex* index_part = (rule.semantics() == proto::RULE_SEMANTICS_BLACKLIST ? &blacklist_
diff --git a/components/subresource_filter/core/common/indexed_ruleset.h b/components/subresource_filter/core/common/indexed_ruleset.h index f128d369..fd65b5c 100644 --- a/components/subresource_filter/core/common/indexed_ruleset.h +++ b/components/subresource_filter/core/common/indexed_ruleset.h
@@ -42,10 +42,9 @@ RulesetIndexer(); ~RulesetIndexer(); - // Adds |rule| to the ruleset unless the rule has unsupported filter options, - // in which case the |rule| can be serialized partially and not added to the - // index. Return value indicates whether the |rule| has been serialized - // completely and added to the index. + // Adds |rule| to the ruleset and the index unless the |rule| has unsupported + // filter options, in which case the data structures remain unmodified. + // Returns whether the |rule| has been serialized and added to the index. bool AddUrlRule(const proto::UrlRule& rule); // Finalizes construction of the data structures.
diff --git a/components/subresource_filter/core/common/indexed_ruleset_unittest.cc b/components/subresource_filter/core/common/indexed_ruleset_unittest.cc index d9a3ff4..1cd4a6c 100644 --- a/components/subresource_filter/core/common/indexed_ruleset_unittest.cc +++ b/components/subresource_filter/core/common/indexed_ruleset_unittest.cc
@@ -78,7 +78,7 @@ void AddSimpleRule(const UrlPattern& url_pattern, bool is_whitelist) { proto::UrlRule rule = CreateRule(url_pattern, kAnyParty, is_whitelist); - indexer_.AddUrlRule(rule); + EXPECT_TRUE(indexer_.AddUrlRule(rule)); } void AddBlacklistRule(const UrlPattern& url_pattern, @@ -90,7 +90,7 @@ int32_t element_types) { proto::UrlRule rule = CreateRule(url_pattern, kAnyParty, false); rule.set_element_types(element_types); - indexer_.AddUrlRule(rule); + EXPECT_TRUE(indexer_.AddUrlRule(rule)); } void AddWhitelistRuleWithActivationTypes(const UrlPattern& url_pattern, @@ -98,7 +98,7 @@ proto::UrlRule rule = CreateRule(url_pattern, kAnyParty, true); rule.set_element_types(proto::ELEMENT_TYPE_UNSPECIFIED); rule.set_activation_types(activation_types); - indexer_.AddUrlRule(rule); + EXPECT_TRUE(indexer_.AddUrlRule(rule)); } void AddBlacklistRule(const UrlPattern& url_pattern, @@ -113,7 +113,7 @@ } domain->set_domain(domain_pattern); } - indexer_.AddUrlRule(rule); + EXPECT_TRUE(indexer_.AddUrlRule(rule)); } void Finish() { @@ -595,4 +595,18 @@ EXPECT_TRUE(ShouldAllow("https://xample.com")); } +TEST_F(IndexedRulesetTest, RuleWithUnsupportedOptions) { + auto rule = CreateRule(UrlPattern("exmpl"), proto::SOURCE_TYPE_ANY, false); + rule.set_activation_types(rule.activation_types() | + (proto::ACTIVATION_TYPE_MAX << 1)); + rule.set_element_types(rule.element_types() | (proto::ELEMENT_TYPE_MAX << 1)); + EXPECT_FALSE(indexer_.AddUrlRule(rule)); + + AddSimpleRule(UrlPattern("example.com", kSubstring), false); + Finish(); + + EXPECT_TRUE(ShouldAllow("https://exmpl.com")); + EXPECT_FALSE(ShouldAllow("https://example.com")); +} + } // namespace subresource_filter
diff --git a/components/translate/ios/browser/js_language_detection_manager.mm b/components/translate/ios/browser/js_language_detection_manager.mm index 3e223e5..aa338475 100644 --- a/components/translate/ios/browser/js_language_detection_manager.mm +++ b/components/translate/ios/browser/js_language_detection_manager.mm
@@ -25,8 +25,8 @@ #pragma mark - Public methods - (void)startLanguageDetection { - [self evaluate:@"__gCrWeb.languageDetection.detectLanguage()" - stringResultHandler:nil]; + [self executeJavaScript:@"__gCrWeb.languageDetection.detectLanguage()" + completionHandler:nil]; } - (void)retrieveBufferedTextContent: @@ -34,10 +34,10 @@ DCHECK(!callback.is_null()); // Copy the completion handler so that the block does not capture a reference. __block language_detection::BufferedTextCallback blockCallback = callback; - [self evaluate:@"__gCrWeb.languageDetection.retrieveBufferedTextContent()" - stringResultHandler:^(NSString* result, NSError*) { - blockCallback.Run(base::SysNSStringToUTF16(result)); - }]; + NSString* JS = @"__gCrWeb.languageDetection.retrieveBufferedTextContent()"; + [self executeJavaScript:JS completionHandler:^(id result, NSError*) { + blockCallback.Run(base::SysNSStringToUTF16(result)); + }]; } @end
diff --git a/components/variations/android/variations_seed_bridge.cc b/components/variations/android/variations_seed_bridge.cc index 6ad414c..f5b73e9 100644 --- a/components/variations/android/variations_seed_bridge.cc +++ b/components/variations/android/variations_seed_bridge.cc
@@ -89,10 +89,10 @@ bool is_gzip_compressed) { JNIEnv* env = AttachCurrentThread(); Java_VariationsSeedBridge_setVariationsFirstRunSeed( - env, GetApplicationContext(), StringToJavaByteArray(env, seed_data).obj(), - ConvertUTF8ToJavaString(env, seed_signature).obj(), - ConvertUTF8ToJavaString(env, seed_country).obj(), - ConvertUTF8ToJavaString(env, response_date).obj(), + env, GetApplicationContext(), StringToJavaByteArray(env, seed_data), + ConvertUTF8ToJavaString(env, seed_signature), + ConvertUTF8ToJavaString(env, seed_country), + ConvertUTF8ToJavaString(env, response_date), static_cast<jboolean>(is_gzip_compressed)); }
diff --git a/components/web_contents_delegate_android/color_chooser_android.cc b/components/web_contents_delegate_android/color_chooser_android.cc index 838be6c..5aeb8ee8 100644 --- a/components/web_contents_delegate_android/color_chooser_android.cc +++ b/components/web_contents_delegate_android/color_chooser_android.cc
@@ -37,11 +37,7 @@ ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString( env, suggestion.label); Java_ColorChooserAndroid_addToColorSuggestionArray( - env, - suggestions_array.obj(), - i, - suggestion.color, - label.obj()); + env, suggestions_array, i, suggestion.color, label); } } @@ -52,11 +48,8 @@ content_view_core->GetJavaObject(); if (!java_content_view_core.is_null()) { j_color_chooser_.Reset(Java_ColorChooserAndroid_createColorChooserAndroid( - env, - reinterpret_cast<intptr_t>(this), - java_content_view_core.obj(), - initial_color, - suggestions_array.obj())); + env, reinterpret_cast<intptr_t>(this), java_content_view_core, + initial_color, suggestions_array)); } } if (j_color_chooser_.is_null()) @@ -69,7 +62,7 @@ void ColorChooserAndroid::End() { if (!j_color_chooser_.is_null()) { JNIEnv* env = AttachCurrentThread(); - Java_ColorChooserAndroid_closeColorChooser(env, j_color_chooser_.obj()); + Java_ColorChooserAndroid_closeColorChooser(env, j_color_chooser_); } }
diff --git a/components/web_contents_delegate_android/validation_message_bubble_android.cc b/components/web_contents_delegate_android/validation_message_bubble_android.cc index 9223540..0dd5eee1 100644 --- a/components/web_contents_delegate_android/validation_message_bubble_android.cc +++ b/components/web_contents_delegate_android/validation_message_bubble_android.cc
@@ -43,19 +43,16 @@ JNIEnv* env = base::android::AttachCurrentThread(); java_validation_message_bubble_.Reset( Java_ValidationMessageBubble_createAndShow( - env, - java_content_view_core.obj(), - anchor_in_root_view.x(), - anchor_in_root_view.y(), - anchor_in_root_view.width(), + env, java_content_view_core, anchor_in_root_view.x(), + anchor_in_root_view.y(), anchor_in_root_view.width(), anchor_in_root_view.height(), - ConvertUTF16ToJavaString(env, main_text).obj(), - ConvertUTF16ToJavaString(env, sub_text).obj())); + ConvertUTF16ToJavaString(env, main_text), + ConvertUTF16ToJavaString(env, sub_text))); } ValidationMessageBubbleAndroid::~ValidationMessageBubbleAndroid() { Java_ValidationMessageBubble_close(base::android::AttachCurrentThread(), - java_validation_message_bubble_.obj()); + java_validation_message_bubble_); } void ValidationMessageBubbleAndroid::SetPositionRelativeToAnchor( @@ -66,13 +63,9 @@ return; Java_ValidationMessageBubble_setPositionRelativeToAnchor( - base::android::AttachCurrentThread(), - java_validation_message_bubble_.obj(), - java_content_view_core.obj(), - anchor_in_root_view.x(), - anchor_in_root_view.y(), - anchor_in_root_view.width(), - anchor_in_root_view.height()); + base::android::AttachCurrentThread(), java_validation_message_bubble_, + java_content_view_core, anchor_in_root_view.x(), anchor_in_root_view.y(), + anchor_in_root_view.width(), anchor_in_root_view.height()); } } // namespace web_contents_delegate_android
diff --git a/components/web_contents_delegate_android/web_contents_delegate_android.cc b/components/web_contents_delegate_android/web_contents_delegate_android.cc index 0f5d7db..61710e6 100644 --- a/components/web_contents_delegate_android/web_contents_delegate_android.cc +++ b/components/web_contents_delegate_android/web_contents_delegate_android.cc
@@ -93,13 +93,9 @@ ScopedJavaLocalRef<jobject> post_data; if (params.uses_post && params.post_data) post_data = params.post_data->ToJavaObject(env); - Java_WebContentsDelegateAndroid_openNewTab(env, - obj.obj(), - java_url.obj(), - extra_headers.obj(), - post_data.obj(), - disposition, - params.is_renderer_initiated); + Java_WebContentsDelegateAndroid_openNewTab( + env, obj, java_url, extra_headers, post_data, disposition, + params.is_renderer_initiated); return NULL; } @@ -130,10 +126,8 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_navigationStateChanged( - env, - obj.obj(), - changed_flags); + Java_WebContentsDelegateAndroid_navigationStateChanged(env, obj, + changed_flags); } void WebContentsDelegateAndroid::VisibleSSLStateChanged( @@ -142,9 +136,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_visibleSSLStateChanged( - env, - obj.obj()); + Java_WebContentsDelegateAndroid_visibleSSLStateChanged(env, obj); } void WebContentsDelegateAndroid::ActivateContents(WebContents* contents) { @@ -152,15 +144,14 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_activateContents(env, obj.obj()); + Java_WebContentsDelegateAndroid_activateContents(env, obj); } void WebContentsDelegateAndroid::LoadingStateChanged(WebContents* source, bool to_different_document) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); - Java_WebContentsDelegateAndroid_loadingStateChanged(env, - obj.obj(), + Java_WebContentsDelegateAndroid_loadingStateChanged(env, obj, to_different_document); } @@ -170,10 +161,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_notifyLoadProgressChanged( - env, - obj.obj(), - progress); + Java_WebContentsDelegateAndroid_notifyLoadProgressChanged(env, obj, progress); } void WebContentsDelegateAndroid::RendererUnresponsive(WebContents* source) { @@ -181,7 +169,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_rendererUnresponsive(env, obj.obj()); + Java_WebContentsDelegateAndroid_rendererUnresponsive(env, obj); } void WebContentsDelegateAndroid::RendererResponsive(WebContents* source) { @@ -189,7 +177,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_rendererResponsive(env, obj.obj()); + Java_WebContentsDelegateAndroid_rendererResponsive(env, obj); } bool WebContentsDelegateAndroid::ShouldCreateWebContents( @@ -208,8 +196,8 @@ return true; ScopedJavaLocalRef<jstring> java_url = ConvertUTF8ToJavaString(env, target_url.spec()); - return Java_WebContentsDelegateAndroid_shouldCreateWebContents(env, obj.obj(), - java_url.obj()); + return Java_WebContentsDelegateAndroid_shouldCreateWebContents(env, obj, + java_url); } bool WebContentsDelegateAndroid::OnGoToEntryOffset(int offset) { @@ -217,8 +205,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return true; - return Java_WebContentsDelegateAndroid_onGoToEntryOffset(env, obj.obj(), - offset); + return Java_WebContentsDelegateAndroid_onGoToEntryOffset(env, obj, offset); } void WebContentsDelegateAndroid::WebContentsCreated( @@ -238,10 +225,10 @@ jnew_contents = new_contents->GetJavaWebContents(); Java_WebContentsDelegateAndroid_webContentsCreated( - env, obj.obj(), jsource_contents.obj(), opener_render_frame_id, - base::android::ConvertUTF8ToJavaString(env, frame_name).obj(), - base::android::ConvertUTF8ToJavaString(env, target_url.spec()).obj(), - jnew_contents.obj()); + env, obj, jsource_contents, opener_render_frame_id, + base::android::ConvertUTF8ToJavaString(env, frame_name), + base::android::ConvertUTF8ToJavaString(env, target_url.spec()), + jnew_contents); } void WebContentsDelegateAndroid::CloseContents(WebContents* source) { @@ -249,7 +236,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_closeContents(env, obj.obj()); + Java_WebContentsDelegateAndroid_closeContents(env, obj); } void WebContentsDelegateAndroid::MoveContents(WebContents* source, @@ -289,12 +276,7 @@ NOTREACHED(); } return Java_WebContentsDelegateAndroid_addMessageToConsole( - env, - GetJavaDelegate(env).obj(), - jlevel, - jmessage.obj(), - line_no, - jsource_id.obj()); + env, GetJavaDelegate(env), jlevel, jmessage, line_no, jsource_id); } // This is either called from TabContents::DidNavigateMainFramePostCommit() with @@ -312,9 +294,7 @@ return; ScopedJavaLocalRef<jstring> java_url = ConvertUTF8ToJavaString(env, source->GetURL().spec()); - Java_WebContentsDelegateAndroid_onUpdateUrl(env, - obj.obj(), - java_url.obj()); + Java_WebContentsDelegateAndroid_onUpdateUrl(env, obj, java_url); } void WebContentsDelegateAndroid::HandleKeyboardEvent( @@ -326,8 +306,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_handleKeyboardEvent( - env, obj.obj(), key_event); + Java_WebContentsDelegateAndroid_handleKeyboardEvent(env, obj, key_event); } } @@ -336,8 +315,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return WebContentsDelegate::TakeFocus(source, reverse); - return Java_WebContentsDelegateAndroid_takeFocus( - env, obj.obj(), reverse); + return Java_WebContentsDelegateAndroid_takeFocus(env, obj, reverse); } void WebContentsDelegateAndroid::ShowRepostFormWarningDialog( @@ -346,7 +324,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_showRepostFormWarningDialog(env, obj.obj()); + Java_WebContentsDelegateAndroid_showRepostFormWarningDialog(env, obj); } void WebContentsDelegateAndroid::EnterFullscreenModeForTab( @@ -356,8 +334,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_toggleFullscreenModeForTab(env, obj.obj(), - true); + Java_WebContentsDelegateAndroid_toggleFullscreenModeForTab(env, obj, true); } void WebContentsDelegateAndroid::ExitFullscreenModeForTab( @@ -366,8 +343,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return; - Java_WebContentsDelegateAndroid_toggleFullscreenModeForTab(env, obj.obj(), - false); + Java_WebContentsDelegateAndroid_toggleFullscreenModeForTab(env, obj, false); } bool WebContentsDelegateAndroid::IsFullscreenForTabOrPending( @@ -376,8 +352,7 @@ ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env); if (obj.is_null()) return false; - return Java_WebContentsDelegateAndroid_isFullscreenForTabOrPending( - env, obj.obj()); + return Java_WebContentsDelegateAndroid_isFullscreenForTabOrPending(env, obj); } void WebContentsDelegateAndroid::ShowValidationMessage(
diff --git a/components/web_restrictions/browser/web_restrictions_client.cc b/components/web_restrictions/browser/web_restrictions_client.cc index bb1a99b..d28fe20 100644 --- a/components/web_restrictions/browser/web_restrictions_client.cc +++ b/components/web_restrictions/browser/web_restrictions_client.cc
@@ -24,14 +24,14 @@ const base::android::JavaRef<jobject>& java_provider) { JNIEnv* env = base::android::AttachCurrentThread(); return Java_WebRestrictionsClient_requestPermission( - env, java_provider.obj(), - base::android::ConvertUTF8ToJavaString(env, url.spec()).obj()); + env, java_provider, + base::android::ConvertUTF8ToJavaString(env, url.spec())); } bool CheckSupportsRequestTask( const base::android::JavaRef<jobject>& java_provider) { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_WebRestrictionsClient_supportsRequest(env, java_provider.obj()); + return Java_WebRestrictionsClient_supportsRequest(env, java_provider); } } // namespace @@ -56,7 +56,7 @@ if (java_provider_.is_null()) return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_WebRestrictionsClient_onDestroy(env, java_provider_.obj()); + Java_WebRestrictionsClient_onDestroy(env, java_provider_); java_provider_.Reset(); } @@ -66,7 +66,7 @@ // Destroy any existing content resolver. JNIEnv* env = base::android::AttachCurrentThread(); if (!java_provider_.is_null()) { - Java_WebRestrictionsClient_onDestroy(env, java_provider_.obj()); + Java_WebRestrictionsClient_onDestroy(env, java_provider_); java_provider_.Reset(); } ClearCache(); @@ -78,8 +78,7 @@ return; java_provider_.Reset(Java_WebRestrictionsClient_create( env, - base::android::ConvertUTF8ToJavaString(env, content_provider_authority) - .obj(), + base::android::ConvertUTF8ToJavaString(env, content_provider_authority), reinterpret_cast<jlong>(this))); supports_request_ = false; base::PostTaskAndReplyWithResult( @@ -100,9 +99,8 @@ if (iter != cache_.end()) { RecordURLAccess(url); JNIEnv* env = base::android::AttachCurrentThread(); - return Java_ShouldProceedResult_shouldProceed(env, iter->second.obj()) - ? ALLOW - : DISALLOW; + return Java_ShouldProceedResult_shouldProceed(env, iter->second) ? ALLOW + : DISALLOW; } base::PostTaskAndReplyWithResult( background_task_runner_.get(), FROM_HERE, @@ -126,7 +124,7 @@ if (iter == cache_.end()) return 0; return Java_ShouldProceedResult_getColumnCount( - base::android::AttachCurrentThread(), iter->second.obj()); + base::android::AttachCurrentThread(), iter->second); } std::string WebRestrictionsClient::GetResultColumnName(const GURL& url, @@ -141,8 +139,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); return base::android::ConvertJavaStringToUTF8( env, - Java_ShouldProceedResult_getColumnName(env, iter->second.obj(), column) - .obj()); + Java_ShouldProceedResult_getColumnName(env, iter->second, column).obj()); } int WebRestrictionsClient::GetResultIntValue(const GURL& url, @@ -154,7 +151,7 @@ if (iter == cache_.end()) return 0; return Java_ShouldProceedResult_getInt(base::android::AttachCurrentThread(), - iter->second.obj(), column); + iter->second, column); } std::string WebRestrictionsClient::GetResultStringValue(const GURL& url, @@ -168,8 +165,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); return base::android::ConvertJavaStringToUTF8( - env, Java_ShouldProceedResult_getString(env, iter->second.obj(), column) - .obj()); + env, Java_ShouldProceedResult_getString(env, iter->second, column).obj()); } void WebRestrictionsClient::RequestPermission( @@ -232,7 +228,7 @@ const ScopedJavaGlobalRef<jobject>& result) { UpdateCache(provider_authority, url, result); JNIEnv* env = base::android::AttachCurrentThread(); - callback.Run(Java_ShouldProceedResult_shouldProceed(env, result.obj())); + callback.Run(Java_ShouldProceedResult_shouldProceed(env, result)); } void WebRestrictionsClient::ClearCache() { @@ -248,8 +244,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaGlobalRef<jobject> result( Java_WebRestrictionsClient_shouldProceed( - env, java_provider.obj(), - base::android::ConvertUTF8ToJavaString(env, url.spec()).obj())); + env, java_provider, + base::android::ConvertUTF8ToJavaString(env, url.spec()))); return result; }
diff --git a/content/app/android/child_process_service_impl.cc b/content/app/android/child_process_service_impl.cc index d4772047..99ae3f8 100644 --- a/content/app/android/child_process_service_impl.cc +++ b/content/app/android/child_process_service_impl.cc
@@ -56,24 +56,21 @@ gl::SurfaceTexture* surface_texture) override { JNIEnv* env = base::android::AttachCurrentThread(); Java_ChildProcessServiceImpl_createSurfaceTextureSurface( - env, - service_impl_.obj(), - surface_texture_id, - client_id, - surface_texture->j_surface_texture().obj()); + env, service_impl_, surface_texture_id, client_id, + surface_texture->j_surface_texture()); } void UnregisterSurfaceTexture(int surface_texture_id, int client_id) override { JNIEnv* env = base::android::AttachCurrentThread(); Java_ChildProcessServiceImpl_destroySurfaceTextureSurface( - env, service_impl_.obj(), surface_texture_id, client_id); + env, service_impl_, surface_texture_id, client_id); } gfx::AcceleratedWidget AcquireNativeWidgetForSurfaceTexture( int surface_texture_id) override { JNIEnv* env = base::android::AttachCurrentThread(); gl::ScopedJavaSurface surface( Java_ChildProcessServiceImpl_getSurfaceTextureSurface( - env, service_impl_.obj(), surface_texture_id)); + env, service_impl_, surface_texture_id)); if (surface.j_surface().is_null()) return NULL; @@ -96,20 +93,16 @@ int secondary_id) override { JNIEnv* env = base::android::AttachCurrentThread(); content::Java_ChildProcessServiceImpl_establishSurfaceTexturePeer( - env, - service_impl_.obj(), - pid, - surface_texture->j_surface_texture().obj(), - primary_id, - secondary_id); + env, service_impl_, pid, surface_texture->j_surface_texture(), + primary_id, secondary_id); } // Overridden from GpuSurfaceLookup: gfx::AcceleratedWidget AcquireNativeWidget(int surface_id) override { JNIEnv* env = base::android::AttachCurrentThread(); gl::ScopedJavaSurface surface( - content::Java_ChildProcessServiceImpl_getViewSurface( - env, service_impl_.obj(), surface_id)); + content::Java_ChildProcessServiceImpl_getViewSurface(env, service_impl_, + surface_id)); if (surface.j_surface().is_null()) return NULL; @@ -128,8 +121,8 @@ gl::ScopedJavaSurface AcquireJavaSurface(int surface_id) override { JNIEnv* env = base::android::AttachCurrentThread(); return gl::ScopedJavaSurface( - content::Java_ChildProcessServiceImpl_getViewSurface( - env, service_impl_.obj(), surface_id)); + content::Java_ChildProcessServiceImpl_getViewSurface(env, service_impl_, + surface_id)); } private:
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc index 6253e4e..05dcb03b 100644 --- a/content/browser/accessibility/browser_accessibility_manager_android.cc +++ b/content/browser/accessibility/browser_accessibility_manager_android.cc
@@ -154,7 +154,7 @@ return; Java_BrowserAccessibilityManager_onNativeObjectDestroyed( - env, obj.obj(),reinterpret_cast<intptr_t>(this)); + env, obj, reinterpret_cast<intptr_t>(this)); } // static @@ -179,8 +179,8 @@ JNIEnv* env = AttachCurrentThread(); java_ref_ = JavaObjectWeakGlobalRef( env, Java_BrowserAccessibilityManager_create( - env, reinterpret_cast<intptr_t>(this), - content_view_core.obj()).obj()); + env, reinterpret_cast<intptr_t>(this), content_view_core) + .obj()); } bool BrowserAccessibilityManagerAndroid::ShouldExposePasswordText() { @@ -189,8 +189,7 @@ if (obj.is_null()) return false; - return Java_BrowserAccessibilityManager_shouldExposePasswordText( - env, obj.obj()); + return Java_BrowserAccessibilityManager_shouldExposePasswordText(env, obj); } BrowserAccessibility* BrowserAccessibilityManagerAndroid::GetFocus() { @@ -229,8 +228,8 @@ // Always send AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED to notify // the Android system that the accessibility hierarchy rooted at this // node has changed. - Java_BrowserAccessibilityManager_handleContentChanged( - env, obj.obj(), node->unique_id()); + Java_BrowserAccessibilityManager_handleContentChanged(env, obj, + node->unique_id()); // Ignore load complete events on iframes. if (event_type == ui::AX_EVENT_LOAD_COMPLETE && @@ -241,27 +240,27 @@ switch (event_type) { case ui::AX_EVENT_LOAD_COMPLETE: Java_BrowserAccessibilityManager_handlePageLoaded( - env, obj.obj(), GetFocus()->unique_id()); + env, obj, GetFocus()->unique_id()); break; case ui::AX_EVENT_FOCUS: - Java_BrowserAccessibilityManager_handleFocusChanged( - env, obj.obj(), node->unique_id()); + Java_BrowserAccessibilityManager_handleFocusChanged(env, obj, + node->unique_id()); break; case ui::AX_EVENT_CHECKED_STATE_CHANGED: Java_BrowserAccessibilityManager_handleCheckStateChanged( - env, obj.obj(), node->unique_id()); + env, obj, node->unique_id()); break; case ui::AX_EVENT_CLICKED: - Java_BrowserAccessibilityManager_handleClicked(env, obj.obj(), + Java_BrowserAccessibilityManager_handleClicked(env, obj, node->unique_id()); break; case ui::AX_EVENT_SCROLL_POSITION_CHANGED: Java_BrowserAccessibilityManager_handleScrollPositionChanged( - env, obj.obj(), node->unique_id()); + env, obj, node->unique_id()); break; case ui::AX_EVENT_SCROLLED_TO_ANCHOR: Java_BrowserAccessibilityManager_handleScrolledToAnchor( - env, obj.obj(), node->unique_id()); + env, obj, node->unique_id()); break; case ui::AX_EVENT_ALERT: // An alert is a special case of live region. Fall through to the @@ -270,23 +269,22 @@ // This event is fired when an object appears in a live region. // Speak its text. Java_BrowserAccessibilityManager_announceLiveRegionText( - env, obj.obj(), - base::android::ConvertUTF16ToJavaString( - env, android_node->GetText()).obj()); + env, obj, base::android::ConvertUTF16ToJavaString( + env, android_node->GetText())); break; } case ui::AX_EVENT_TEXT_SELECTION_CHANGED: Java_BrowserAccessibilityManager_handleTextSelectionChanged( - env, obj.obj(), node->unique_id()); + env, obj, node->unique_id()); break; case ui::AX_EVENT_TEXT_CHANGED: case ui::AX_EVENT_VALUE_CHANGED: if (android_node->IsEditableText() && GetFocus() == node) { Java_BrowserAccessibilityManager_handleEditableTextChanged( - env, obj.obj(), node->unique_id()); + env, obj, node->unique_id()); } else if (android_node->IsSlider()) { - Java_BrowserAccessibilityManager_handleSliderChanged( - env, obj.obj(), node->unique_id()); + Java_BrowserAccessibilityManager_handleSliderChanged(env, obj, + node->unique_id()); } break; default: @@ -307,8 +305,8 @@ JNIEnv* env = AttachCurrentThread(); if (obj.is_null()) return; - Java_BrowserAccessibilityManager_sendDelayedWindowContentChangedEvent( - env, obj.obj()); + Java_BrowserAccessibilityManager_sendDelayedWindowContentChangedEvent(env, + obj); return; } @@ -427,17 +425,16 @@ node->IsFocused()); Java_BrowserAccessibilityManager_setAccessibilityNodeInfoClassName( env, obj, info, - base::android::ConvertUTF8ToJavaString(env, node->GetClassName()).obj()); + base::android::ConvertUTF8ToJavaString(env, node->GetClassName())); Java_BrowserAccessibilityManager_setAccessibilityNodeInfoText( env, obj, info, - base::android::ConvertUTF16ToJavaString(env, node->GetText()).obj(), - node->IsLink(), - node->IsEditableText()); + base::android::ConvertUTF16ToJavaString(env, node->GetText()), + node->IsLink(), node->IsEditableText()); base::string16 element_id; if (node->GetHtmlAttribute("id", &element_id)) { Java_BrowserAccessibilityManager_setAccessibilityNodeInfoViewIdResourceName( env, obj, info, - base::android::ConvertUTF16ToJavaString(env, element_id).obj()); + base::android::ConvertUTF16ToJavaString(env, element_id)); } gfx::Rect absolute_rect = node->GetPageBoundsRect(); @@ -456,11 +453,8 @@ is_root); Java_BrowserAccessibilityManager_setAccessibilityNodeInfoKitKatAttributes( - env, obj, info, - is_root, - node->IsEditableText(), - base::android::ConvertUTF16ToJavaString( - env, node->GetRoleDescription()).obj()); + env, obj, info, is_root, node->IsEditableText(), + base::android::ConvertUTF16ToJavaString(env, node->GetRoleDescription())); Java_BrowserAccessibilityManager_setAccessibilityNodeInfoLollipopAttributes( env, obj, info, @@ -516,7 +510,7 @@ node->IsScrollable()); Java_BrowserAccessibilityManager_setAccessibilityEventClassName( env, obj, event, - base::android::ConvertUTF8ToJavaString(env, node->GetClassName()).obj()); + base::android::ConvertUTF8ToJavaString(env, node->GetClassName())); Java_BrowserAccessibilityManager_setAccessibilityEventListAttributes( env, obj, event, node->GetItemIndex(), @@ -533,23 +527,18 @@ base::string16 before_text = node->GetTextChangeBeforeText(); base::string16 text = node->GetText(); Java_BrowserAccessibilityManager_setAccessibilityEventTextChangedAttrs( - env, obj, event, - node->GetTextChangeFromIndex(), - node->GetTextChangeAddedCount(), - node->GetTextChangeRemovedCount(), - base::android::ConvertUTF16ToJavaString( - env, before_text).obj(), - base::android::ConvertUTF16ToJavaString(env, text).obj()); + env, obj, event, node->GetTextChangeFromIndex(), + node->GetTextChangeAddedCount(), node->GetTextChangeRemovedCount(), + base::android::ConvertUTF16ToJavaString(env, before_text), + base::android::ConvertUTF16ToJavaString(env, text)); break; } case ANDROID_ACCESSIBILITY_EVENT_TEXT_SELECTION_CHANGED: { base::string16 text = node->GetText(); Java_BrowserAccessibilityManager_setAccessibilityEventSelectionAttrs( - env, obj, event, - node->GetSelectionStart(), - node->GetSelectionEnd(), + env, obj, event, node->GetSelectionStart(), node->GetSelectionEnd(), node->GetEditableTextLength(), - base::android::ConvertUTF16ToJavaString(env, text).obj()); + base::android::ConvertUTF16ToJavaString(env, text)); break; } default: @@ -703,8 +692,7 @@ ancestor = static_cast<BrowserAccessibilityAndroid*>(ancestor->GetParent()); } - Java_BrowserAccessibilityManager_handleHover( - env, obj.obj(), node->unique_id()); + Java_BrowserAccessibilityManager_handleHover(env, obj, node->unique_id()); } jint BrowserAccessibilityManagerAndroid::FindElementType( @@ -762,8 +750,7 @@ &start_index, &end_index)) { base::string16 text = node->GetText(); Java_BrowserAccessibilityManager_finishGranularityMove( - env, obj, base::android::ConvertUTF16ToJavaString( - env, text).obj(), + env, obj, base::android::ConvertUTF16ToJavaString(env, text), extend_selection, start_index, end_index, true); return true; } @@ -786,8 +773,7 @@ if (PreviousAtGranularity(granularity, cursor_index, node, &start_index, &end_index)) { Java_BrowserAccessibilityManager_finishGranularityMove( - env, obj, base::android::ConvertUTF16ToJavaString( - env, node->GetText()).obj(), + env, obj, base::android::ConvertUTF16ToJavaString(env, node->GetText()), extend_selection, start_index, end_index, false); return true; } @@ -929,7 +915,7 @@ if (obj.is_null()) return; - Java_BrowserAccessibilityManager_handleNavigate(env, obj.obj()); + Java_BrowserAccessibilityManager_handleNavigate(env, obj); } }
diff --git a/content/browser/android/background_sync_network_observer_android.cc b/content/browser/android/background_sync_network_observer_android.cc index e87d1fd..2d9aa7d 100644 --- a/content/browser/android/background_sync_network_observer_android.cc +++ b/content/browser/android/background_sync_network_observer_android.cc
@@ -46,7 +46,7 @@ BackgroundSyncNetworkObserverAndroid::Observer::~Observer() { JNIEnv* env = base::android::AttachCurrentThread(); Java_BackgroundSyncNetworkObserver_removeObserver( - env, j_observer_.obj(), reinterpret_cast<jlong>(this)); + env, j_observer_, reinterpret_cast<jlong>(this)); DCHECK_CURRENTLY_ON(BrowserThread::UI); j_observer_.Release(); }
diff --git a/content/browser/android/child_process_launcher_android.cc b/content/browser/android/child_process_launcher_android.cc index 43bd5c8..d3e8ee5 100644 --- a/content/browser/android/child_process_launcher_android.cc +++ b/content/browser/android/child_process_launcher_android.cc
@@ -102,7 +102,7 @@ // TODO(qinmin): pass download parameters here. Java_ChildProcessLauncher_startDownloadProcessIfNecessary( - env, base::android::GetApplicationContext(), j_argv.obj()); + env, base::android::GetApplicationContext(), j_argv); } } // anonymous namespace @@ -194,8 +194,8 @@ } Java_ChildProcessLauncher_start( - env, base::android::GetApplicationContext(), j_argv.obj(), - child_process_id, j_file_infos.obj(), + env, base::android::GetApplicationContext(), j_argv, child_process_id, + j_file_infos, reinterpret_cast<intptr_t>(new StartChildProcessCallback(callback))); } @@ -261,10 +261,7 @@ JNIEnv* env = AttachCurrentThread(); DCHECK(env); Java_ChildProcessLauncher_createSurfaceTextureSurface( - env, - surface_texture_id, - client_id, - surface_texture->j_surface_texture().obj()); + env, surface_texture_id, client_id, surface_texture->j_surface_texture()); } void DestroySurfaceTextureSurface(int surface_texture_id, int client_id) {
diff --git a/content/browser/android/composited_touch_handle_drawable.cc b/content/browser/android/composited_touch_handle_drawable.cc index fb19fc8..f03c9e6 100644 --- a/content/browser/android/composited_touch_handle_drawable.cc +++ b/content/browser/android/composited_touch_handle_drawable.cc
@@ -39,7 +39,7 @@ TRACE_EVENT0("browser", "HandleResources::Create"); JNIEnv* env = base::android::AttachCurrentThread(); if (!context) - context = base::android::GetApplicationContext(); + context = base::android::GetApplicationContext().obj(); left_bitmap_ = CreateSkBitmapFromJavaBitmap( Java_HandleViewResources_getLeftHandleBitmap(env, context));
diff --git a/content/browser/android/content_video_view.cc b/content/browser/android/content_video_view.cc index e1ff446d..4432504 100644 --- a/content/browser/android/content_video_view.cc +++ b/content/browser/android/content_video_view.cc
@@ -62,8 +62,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); if (!content_video_view.is_null()) { - Java_ContentVideoView_destroyContentVideoView(env, - content_video_view.obj(), true); + Java_ContentVideoView_destroyContentVideoView(env, content_video_view, + true); j_content_video_view_.reset(); } g_content_video_view = NULL; @@ -73,7 +73,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); if (!content_video_view.is_null()) { - Java_ContentVideoView_openVideo(env, content_video_view.obj()); + Java_ContentVideoView_openVideo(env, content_video_view); } } @@ -81,7 +81,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); if (!content_video_view.is_null()) { - Java_ContentVideoView_onMediaPlayerError(env, content_video_view.obj(), + Java_ContentVideoView_onMediaPlayerError(env, content_video_view, error_type); } } @@ -90,8 +90,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); if (!content_video_view.is_null()) { - Java_ContentVideoView_onVideoSizeChanged(env, content_video_view.obj(), - width, height); + Java_ContentVideoView_onVideoSizeChanged(env, content_video_view, width, + height); } } @@ -100,7 +100,7 @@ ScopedJavaLocalRef<jobject> content_video_view = GetJavaObject(env); bool release_media_player = false; if (!content_video_view.is_null()) - Java_ContentVideoView_exitFullscreen(env, content_video_view.obj(), + Java_ContentVideoView_exitFullscreen(env, content_video_view, release_media_player); } @@ -171,7 +171,7 @@ return JavaObjectWeakGlobalRef( env, Java_ContentVideoView_createContentVideoView( - env, j_content_view_core.obj(), reinterpret_cast<intptr_t>(this), + env, j_content_view_core, reinterpret_cast<intptr_t>(this), video_natural_size.width(), video_natural_size.height()) .obj()); }
diff --git a/content/browser/android/content_view_core_impl.cc b/content/browser/android/content_view_core_impl.cc index bee676c..9b8a353 100644 --- a/content/browser/android/content_view_core_impl.cc +++ b/content/browser/android/content_view_core_impl.cc
@@ -270,7 +270,7 @@ java_ref_.reset(); if (!j_obj.is_null()) { Java_ContentViewCore_onNativeContentViewCoreDestroyed( - env, j_obj.obj(), reinterpret_cast<intptr_t>(this)); + env, j_obj, reinterpret_cast<intptr_t>(this)); } } @@ -338,7 +338,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_ContentViewCore_onRenderProcessChange(env, obj.obj()); + Java_ContentViewCore_onRenderProcessChange(env, obj); if (device_orientation_ != 0) SendOrientationChangeEventInternal(); @@ -368,7 +368,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) { - Java_ContentViewCore_onRenderProcessChange(env, obj.obj()); + Java_ContentViewCore_onRenderProcessChange(env, obj); } } @@ -447,24 +447,13 @@ has_insertion_marker ? selection_start.edge_bottom().y() : 0.0f; Java_ContentViewCore_updateFrameInfo( - env, obj.obj(), - scroll_offset.x(), - scroll_offset.y(), - page_scale_factor, - page_scale_factor_limits.x(), - page_scale_factor_limits.y(), - content_size.width(), - content_size.height(), - viewport_size.width(), - viewport_size.height(), - controls_offset.y(), - content_offset.y(), - is_mobile_optimized_hint, - has_insertion_marker, - is_insertion_marker_visible, - insertion_marker_horizontal, - insertion_marker_top, - insertion_marker_bottom); + env, obj, scroll_offset.x(), scroll_offset.y(), page_scale_factor, + page_scale_factor_limits.x(), page_scale_factor_limits.y(), + content_size.width(), content_size.height(), viewport_size.width(), + viewport_size.height(), controls_offset.y(), content_offset.y(), + is_mobile_optimized_hint, has_insertion_marker, + is_insertion_marker_visible, insertion_marker_horizontal, + insertion_marker_top, insertion_marker_bottom); } void ContentViewCoreImpl::SetTitle(const base::string16& title) { @@ -474,7 +463,7 @@ return; ScopedJavaLocalRef<jstring> jtitle = ConvertUTF8ToJavaString(env, base::UTF16ToUTF8(title)); - Java_ContentViewCore_setTitle(env, obj.obj(), jtitle.obj()); + Java_ContentViewCore_setTitle(env, obj, jtitle); } void ContentViewCoreImpl::OnBackgroundColorChanged(SkColor color) { @@ -484,7 +473,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_ContentViewCore_onBackgroundColorChanged(env, obj.obj(), color); + Java_ContentViewCore_onBackgroundColorChanged(env, obj, color); } void ContentViewCoreImpl::ShowSelectPopupMenu( @@ -542,16 +531,15 @@ view_.SetAnchorRect(popup_view, gfx::ScaleRect(gfx::RectF(bounds), page_scale_)); Java_ContentViewCore_showSelectPopup( - env, j_obj.obj(), popup_view.obj(), reinterpret_cast<intptr_t>(frame), - items_array.obj(), enabled_array.obj(), multiple, selected_array.obj(), - right_aligned); + env, j_obj, popup_view, reinterpret_cast<intptr_t>(frame), items_array, + enabled_array, multiple, selected_array, right_aligned); } void ContentViewCoreImpl::HideSelectPopupMenu() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); if (!j_obj.is_null()) - Java_ContentViewCore_hideSelectPopup(env, j_obj.obj()); + Java_ContentViewCore_hideSelectPopup(env, j_obj); select_popup_.Reset(); } @@ -566,46 +554,43 @@ case WebInputEvent::GestureFlingStart: if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) { // The view expects the fling velocity in pixels/s. - Java_ContentViewCore_onFlingStartEventConsumed(env, j_obj.obj(), - event.data.flingStart.velocityX * dpi_scale(), + Java_ContentViewCore_onFlingStartEventConsumed( + env, j_obj, event.data.flingStart.velocityX * dpi_scale(), event.data.flingStart.velocityY * dpi_scale()); } else { // If a scroll ends with a fling, a SCROLL_END event is never sent. // However, if that fling went unconsumed, we still need to let the // listeners know that scrolling has ended. - Java_ContentViewCore_onScrollEndEventAck(env, j_obj.obj()); + Java_ContentViewCore_onScrollEndEventAck(env, j_obj); } break; case WebInputEvent::GestureFlingCancel: - Java_ContentViewCore_onFlingCancelEventAck(env, j_obj.obj()); + Java_ContentViewCore_onFlingCancelEventAck(env, j_obj); break; case WebInputEvent::GestureScrollBegin: - Java_ContentViewCore_onScrollBeginEventAck(env, j_obj.obj()); + Java_ContentViewCore_onScrollBeginEventAck(env, j_obj); break; case WebInputEvent::GestureScrollUpdate: if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) - Java_ContentViewCore_onScrollUpdateGestureConsumed(env, j_obj.obj()); + Java_ContentViewCore_onScrollUpdateGestureConsumed(env, j_obj); break; case WebInputEvent::GestureScrollEnd: - Java_ContentViewCore_onScrollEndEventAck(env, j_obj.obj()); + Java_ContentViewCore_onScrollEndEventAck(env, j_obj); break; case WebInputEvent::GesturePinchBegin: - Java_ContentViewCore_onPinchBeginEventAck(env, j_obj.obj()); + Java_ContentViewCore_onPinchBeginEventAck(env, j_obj); break; case WebInputEvent::GesturePinchEnd: - Java_ContentViewCore_onPinchEndEventAck(env, j_obj.obj()); + Java_ContentViewCore_onPinchEndEventAck(env, j_obj); break; case WebInputEvent::GestureTap: Java_ContentViewCore_onSingleTapEventAck( - env, - j_obj.obj(), - ack_result == INPUT_EVENT_ACK_STATE_CONSUMED, - event.x * dpi_scale(), - event.y * dpi_scale()); + env, j_obj, ack_result == INPUT_EVENT_ACK_STATE_CONSUMED, + event.x * dpi_scale(), event.y * dpi_scale()); break; case WebInputEvent::GestureLongPress: if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) - Java_ContentViewCore_performLongPressHapticFeedback(env, j_obj.obj()); + Java_ContentViewCore_performLongPressHapticFeedback(env, j_obj); break; default: break; @@ -627,9 +612,7 @@ const blink::WebGestureEvent& gesture = static_cast<const blink::WebGestureEvent&>(event); int gesture_type = ToGestureEventType(event.type); - return Java_ContentViewCore_filterTapOrPressEvent(env, - j_obj.obj(), - gesture_type, + return Java_ContentViewCore_filterTapOrPressEvent(env, j_obj, gesture_type, gesture.x * dpi_scale(), gesture.y * dpi_scale()); } @@ -639,14 +622,14 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return false; - return Java_ContentViewCore_hasFocus(env, obj.obj()); + return Java_ContentViewCore_hasFocus(env, obj); } void ContentViewCoreImpl::RequestDisallowInterceptTouchEvent() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_ContentViewCore_requestDisallowInterceptTouchEvent(env, obj.obj()); + Java_ContentViewCore_requestDisallowInterceptTouchEvent(env, obj); } void ContentViewCoreImpl::OnSelectionChanged(const std::string& text) { @@ -655,7 +638,7 @@ if (obj.is_null()) return; ScopedJavaLocalRef<jstring> jtext = ConvertUTF8ToJavaString(env, text); - Java_ContentViewCore_onSelectionChanged(env, obj.obj(), jtext.obj()); + Java_ContentViewCore_onSelectionChanged(env, obj, jtext); } void ContentViewCoreImpl::OnSelectionEvent(ui::SelectionEventType event, @@ -670,8 +653,8 @@ gfx::ScalePoint(selection_anchor, dpi_scale()); gfx::RectF selection_rect_pix = gfx::ScaleRect(selection_rect, dpi_scale()); Java_ContentViewCore_onSelectionEvent( - env, j_obj.obj(), event, selection_anchor_pix.x(), - selection_anchor_pix.y(), selection_rect_pix.x(), selection_rect_pix.y(), + env, j_obj, event, selection_anchor_pix.x(), selection_anchor_pix.y(), + selection_rect_pix.x(), selection_rect_pix.y(), selection_rect_pix.right(), selection_rect_pix.bottom()); } @@ -687,7 +670,7 @@ if (obj.is_null()) return false; return Java_ContentViewCore_showPastePopupWithFeedback( - env, obj.obj(), static_cast<jint>(x_dip * dpi_scale()), + env, obj, static_cast<jint>(x_dip * dpi_scale()), static_cast<jint>(y_dip * dpi_scale())); } @@ -699,9 +682,7 @@ return; ScopedJavaLocalRef<jstring> jcontent_url = ConvertUTF8ToJavaString(env, content_url.spec()); - Java_ContentViewCore_startContentIntent(env, - j_obj.obj(), - jcontent_url.obj(), + Java_ContentViewCore_startContentIntent(env, j_obj, jcontent_url, is_main_frame); } @@ -720,10 +701,8 @@ gfx::ConvertToJavaBitmap(&zoomed_bitmap); DCHECK(!java_bitmap.is_null()); - Java_ContentViewCore_showDisambiguationPopup(env, - obj.obj(), - rect_object.obj(), - java_bitmap.obj()); + Java_ContentViewCore_showDisambiguationPopup(env, obj, rect_object, + java_bitmap); } ScopedJavaLocalRef<jobject> @@ -733,7 +712,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return ScopedJavaLocalRef<jobject>(); - return Java_ContentViewCore_createMotionEventSynthesizer(env, obj.obj()); + return Java_ContentViewCore_createMotionEventSynthesizer(env, obj); } bool ContentViewCoreImpl::ShouldBlockMediaRequest(const GURL& url) { @@ -743,8 +722,7 @@ if (obj.is_null()) return true; ScopedJavaLocalRef<jstring> j_url = ConvertUTF8ToJavaString(env, url.spec()); - return Java_ContentViewCore_shouldBlockMediaRequest(env, obj.obj(), - j_url.obj()); + return Java_ContentViewCore_shouldBlockMediaRequest(env, obj, j_url); } void ContentViewCoreImpl::DidStopFlinging() { @@ -752,7 +730,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_ContentViewCore_onNativeFlingStopped(env, obj.obj()); + Java_ContentViewCore_onNativeFlingStopped(env, obj); } ScopedJavaLocalRef<jobject> ContentViewCoreImpl::GetContext() const { @@ -762,7 +740,7 @@ if (obj.is_null()) return ScopedJavaLocalRef<jobject>(); - return Java_ContentViewCore_getContext(env, obj.obj()); + return Java_ContentViewCore_getContext(env, obj); } gfx::Size ContentViewCoreImpl::GetViewSizeWithOSKHidden() const { @@ -772,8 +750,8 @@ if (j_obj.is_null()) return size_pix = gfx::Size(); size_pix = gfx::Size( - Java_ContentViewCore_getViewportWidthPix(env, j_obj.obj()), - Java_ContentViewCore_getViewportHeightWithOSKHiddenPix(env, j_obj.obj())); + Java_ContentViewCore_getViewportWidthPix(env, j_obj), + Java_ContentViewCore_getViewportHeightWithOSKHiddenPix(env, j_obj)); gfx::Size size_dip = gfx::ScaleToCeiledSize(size_pix, 1.0f / dpi_scale()); if (DoTopControlsShrinkBlinkSize()) @@ -794,8 +772,8 @@ if (j_obj.is_null()) return gfx::Size(); return gfx::Size( - Java_ContentViewCore_getPhysicalBackingWidthPix(env, j_obj.obj()), - Java_ContentViewCore_getPhysicalBackingHeightPix(env, j_obj.obj())); + Java_ContentViewCore_getPhysicalBackingWidthPix(env, j_obj), + Java_ContentViewCore_getPhysicalBackingHeightPix(env, j_obj)); } gfx::Size ContentViewCoreImpl::GetViewportSizePix() const { @@ -803,9 +781,8 @@ ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); if (j_obj.is_null()) return gfx::Size(); - return gfx::Size( - Java_ContentViewCore_getViewportWidthPix(env, j_obj.obj()), - Java_ContentViewCore_getViewportHeightPix(env, j_obj.obj())); + return gfx::Size(Java_ContentViewCore_getViewportWidthPix(env, j_obj), + Java_ContentViewCore_getViewportHeightPix(env, j_obj)); } int ContentViewCoreImpl::GetTopControlsHeightPix() const { @@ -813,7 +790,7 @@ ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); if (j_obj.is_null()) return 0; - return Java_ContentViewCore_getTopControlsHeightPix(env, j_obj.obj()); + return Java_ContentViewCore_getTopControlsHeightPix(env, j_obj); } gfx::Size ContentViewCoreImpl::GetViewportSizeDip() const { @@ -825,7 +802,7 @@ ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); if (j_obj.is_null()) return false; - return Java_ContentViewCore_doTopControlsShrinkBlinkSize(env, j_obj.obj()); + return Java_ContentViewCore_doTopControlsShrinkBlinkSize(env, j_obj); } float ContentViewCoreImpl::GetTopControlsHeightDip() const { @@ -1314,8 +1291,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return; - Java_ContentViewCore_forceUpdateImeAdapter(env, obj.obj(), - native_ime_adapter); + Java_ContentViewCore_forceUpdateImeAdapter(env, obj, native_ime_adapter); } void ContentViewCoreImpl::UpdateImeAdapter(long native_ime_adapter, @@ -1334,18 +1310,10 @@ return; ScopedJavaLocalRef<jstring> jstring_text = ConvertUTF8ToJavaString(env, text); - Java_ContentViewCore_updateImeAdapter(env, - obj.obj(), - native_ime_adapter, - text_input_type, - text_input_flags, - jstring_text.obj(), - selection_start, - selection_end, - composition_start, - composition_end, - show_ime_if_needed, - is_non_ime_change); + Java_ContentViewCore_updateImeAdapter( + env, obj, native_ime_adapter, text_input_type, text_input_flags, + jstring_text, selection_start, selection_end, composition_start, + composition_end, show_ime_if_needed, is_non_ime_change); } void ContentViewCoreImpl::SetAccessibilityEnabled( @@ -1390,8 +1358,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (obj.is_null()) return true; - return Java_ContentViewCore_isFullscreenRequiredForOrientationLock(env, - obj.obj()); + return Java_ContentViewCore_isFullscreenRequiredForOrientationLock(env, obj); } void ContentViewCoreImpl::SetAccessibilityEnabledInternal(bool enabled) { @@ -1544,7 +1511,7 @@ if (obj.is_null()) return; Java_ContentViewCore_onShowUnhandledTapUIIfNeeded( - env, obj.obj(), static_cast<jint>(x_dip * dpi_scale()), + env, obj, static_cast<jint>(x_dip * dpi_scale()), static_cast<jint>(y_dip * dpi_scale())); } @@ -1554,7 +1521,7 @@ if (obj.is_null()) return; - Java_ContentViewCore_hidePopupsAndPreserveSelection(env, obj.obj()); + Java_ContentViewCore_hidePopupsAndPreserveSelection(env, obj); } void ContentViewCoreImpl::OnSmartClipDataExtracted( @@ -1568,8 +1535,8 @@ ScopedJavaLocalRef<jstring> jtext = ConvertUTF16ToJavaString(env, text); ScopedJavaLocalRef<jstring> jhtml = ConvertUTF16ToJavaString(env, html); ScopedJavaLocalRef<jobject> clip_rect_object(CreateJavaRect(env, clip_rect)); - Java_ContentViewCore_onSmartClipDataExtracted( - env, obj.obj(), jtext.obj(), jhtml.obj(), clip_rect_object.obj()); + Java_ContentViewCore_onSmartClipDataExtracted(env, obj, jtext, jhtml, + clip_rect_object); } void ContentViewCoreImpl::WebContentsDestroyed() { @@ -1583,7 +1550,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - return Java_ContentViewCore_onOverscrollRefreshStart(env, obj.obj()); + return Java_ContentViewCore_onOverscrollRefreshStart(env, obj); return false; } @@ -1591,15 +1558,14 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_ContentViewCore_onOverscrollRefreshUpdate(env, obj.obj(), delta); + Java_ContentViewCore_onOverscrollRefreshUpdate(env, obj, delta); } void ContentViewCoreImpl::PullRelease(bool allow_refresh) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) { - Java_ContentViewCore_onOverscrollRefreshRelease(env, obj.obj(), - allow_refresh); + Java_ContentViewCore_onOverscrollRefreshRelease(env, obj, allow_refresh); } } @@ -1607,7 +1573,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_ContentViewCore_onOverscrollRefreshReset(env, obj.obj()); + Java_ContentViewCore_onOverscrollRefreshReset(env, obj); } // This is called for each ContentView.
diff --git a/content/browser/android/content_view_render_view.cc b/content/browser/android/content_view_render_view.cc index 9fb49fc0..177d3f60 100644 --- a/content/browser/android/content_view_render_view.cc +++ b/content/browser/android/content_view_render_view.cc
@@ -112,7 +112,7 @@ void ContentViewRenderView::OnSwapBuffersCompleted(int pending_swap_buffers) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ContentViewRenderView_onSwapBuffersCompleted(env, java_obj_.obj()); + Java_ContentViewRenderView_onSwapBuffersCompleted(env, java_obj_); } void ContentViewRenderView::InitCompositor() {
diff --git a/content/browser/android/date_time_chooser_android.cc b/content/browser/android/date_time_chooser_android.cc index 1b079b0..ba20ad53 100644 --- a/content/browser/android/date_time_chooser_android.cc +++ b/content/browser/android/date_time_chooser_android.cc
@@ -87,22 +87,14 @@ env, SanitizeSuggestionString(suggestion.localized_value)); ScopedJavaLocalRef<jstring> label = ConvertUTF16ToJavaString( env, SanitizeSuggestionString(suggestion.label)); - Java_DateTimeChooserAndroid_setDateTimeSuggestionAt(env, - suggestions_array.obj(), i, - suggestion.value, localized_value.obj(), label.obj()); + Java_DateTimeChooserAndroid_setDateTimeSuggestionAt( + env, suggestions_array, i, suggestion.value, localized_value, label); } } j_date_time_chooser_.Reset(Java_DateTimeChooserAndroid_createDateTimeChooser( - env, - native_window->GetJavaObject().obj(), - reinterpret_cast<intptr_t>(this), - dialog_type, - dialog_value, - min, - max, - step, - suggestions_array.obj())); + env, native_window->GetJavaObject(), reinterpret_cast<intptr_t>(this), + dialog_type, dialog_value, min, max, step, suggestions_array)); if (j_date_time_chooser_.is_null()) ReplaceDateTime(env, j_date_time_chooser_, dialog_value); }
diff --git a/content/browser/android/interface_provider_android_impl.cc b/content/browser/android/interface_provider_android_impl.cc index c6f9910..f1a0e2f 100644 --- a/content/browser/android/interface_provider_android_impl.cc +++ b/content/browser/android/interface_provider_android_impl.cc
@@ -34,7 +34,7 @@ } InterfaceProviderAndroidImpl::~InterfaceProviderAndroidImpl() { - Java_InterfaceProvider_destroy(AttachCurrentThread(), obj_.obj()); + Java_InterfaceProvider_destroy(AttachCurrentThread(), obj_); } // Constructor and destructor call into Java.
diff --git a/content/browser/android/interface_registry_android_impl.cc b/content/browser/android/interface_registry_android_impl.cc index d4c9070be..a0fcc6e5 100644 --- a/content/browser/android/interface_registry_android_impl.cc +++ b/content/browser/android/interface_registry_android_impl.cc
@@ -34,8 +34,8 @@ mojo::ScopedMessagePipeHandle handle) { JNIEnv* env = AttachCurrentThread(); Java_InterfaceRegistry_createImplAndAttach( - env, j_scoped_interface_registry.obj(), handle.release().value(), - j_scoped_manager.obj(), j_scoped_factory.obj()); + env, j_scoped_interface_registry, handle.release().value(), + j_scoped_manager, j_scoped_factory); } } // namespace @@ -52,7 +52,7 @@ } InterfaceRegistryAndroidImpl::~InterfaceRegistryAndroidImpl() { - Java_InterfaceRegistry_destroy(AttachCurrentThread(), obj_.obj()); + Java_InterfaceRegistry_destroy(AttachCurrentThread(), obj_); } // Constructor and destructor call into Java.
diff --git a/content/browser/android/interstitial_page_delegate_android.cc b/content/browser/android/interstitial_page_delegate_android.cc index a88bc0d..31e22189 100644 --- a/content/browser/android/interstitial_page_delegate_android.cc +++ b/content/browser/android/interstitial_page_delegate_android.cc
@@ -29,7 +29,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_obj_.get(env); if (obj.obj()) - Java_InterstitialPageDelegateAndroid_onNativeDestroyed(env, obj.obj()); + Java_InterstitialPageDelegateAndroid_onNativeDestroyed(env, obj); } void InterstitialPageDelegateAndroid::Proceed( @@ -54,14 +54,14 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_obj_.get(env); if (obj.obj()) - Java_InterstitialPageDelegateAndroid_onProceed(env, obj.obj()); + Java_InterstitialPageDelegateAndroid_onProceed(env, obj); } void InterstitialPageDelegateAndroid::OnDontProceed() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = weak_java_obj_.get(env); if (obj.obj()) - Java_InterstitialPageDelegateAndroid_onDontProceed(env, obj.obj()); + Java_InterstitialPageDelegateAndroid_onDontProceed(env, obj); } void InterstitialPageDelegateAndroid::CommandReceived( @@ -77,8 +77,8 @@ } Java_InterstitialPageDelegateAndroid_commandReceived( - env, obj.obj(), - base::android::ConvertUTF8ToJavaString(env, sanitized_command).obj()); + env, obj, + base::android::ConvertUTF8ToJavaString(env, sanitized_command)); } }
diff --git a/content/browser/android/popup_touch_handle_drawable.cc b/content/browser/android/popup_touch_handle_drawable.cc index 01113f3f..17cc5490 100644 --- a/content/browser/android/popup_touch_handle_drawable.cc +++ b/content/browser/android/popup_touch_handle_drawable.cc
@@ -22,7 +22,7 @@ return nullptr; JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> drawable_obj( - Java_PopupTouchHandleDrawable_create(env, content_view_core_obj.obj())); + Java_PopupTouchHandleDrawable_create(env, content_view_core_obj)); return std::unique_ptr<PopupTouchHandleDrawable>( new PopupTouchHandleDrawable(env, drawable_obj.obj(), dpi_scale)); } @@ -40,7 +40,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) - Java_PopupTouchHandleDrawable_destroy(env, obj.obj()); + Java_PopupTouchHandleDrawable_destroy(env, obj); } void PopupTouchHandleDrawable::SetEnabled(bool enabled) { @@ -49,9 +49,9 @@ if (obj.is_null()) return; if (enabled) - Java_PopupTouchHandleDrawable_show(env, obj.obj()); + Java_PopupTouchHandleDrawable_show(env, obj); else - Java_PopupTouchHandleDrawable_hide(env, obj.obj()); + Java_PopupTouchHandleDrawable_hide(env, obj); } void PopupTouchHandleDrawable::SetOrientation( @@ -62,7 +62,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) { Java_PopupTouchHandleDrawable_setOrientation( - env, obj.obj(), static_cast<int>(orientation), mirror_vertical, + env, obj, static_cast<int>(orientation), mirror_vertical, mirror_horizontal); } } @@ -72,7 +72,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); if (!obj.is_null()) { const gfx::PointF origin_pix = gfx::ScalePoint(origin, dpi_scale_); - Java_PopupTouchHandleDrawable_setOrigin(env, obj.obj(), origin_pix.x(), + Java_PopupTouchHandleDrawable_setOrigin(env, obj, origin_pix.x(), origin_pix.y()); } } @@ -82,7 +82,7 @@ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); bool visible = alpha > 0; if (!obj.is_null()) - Java_PopupTouchHandleDrawable_setVisible(env, obj.obj(), visible); + Java_PopupTouchHandleDrawable_setVisible(env, obj, visible); } gfx::RectF PopupTouchHandleDrawable::GetVisibleBounds() const { @@ -91,10 +91,10 @@ if (obj.is_null()) return gfx::RectF(); gfx::RectF unscaled_rect( - Java_PopupTouchHandleDrawable_getPositionX(env, obj.obj()), - Java_PopupTouchHandleDrawable_getPositionY(env, obj.obj()), - Java_PopupTouchHandleDrawable_getVisibleWidth(env, obj.obj()), - Java_PopupTouchHandleDrawable_getVisibleHeight(env, obj.obj())); + Java_PopupTouchHandleDrawable_getPositionX(env, obj), + Java_PopupTouchHandleDrawable_getPositionY(env, obj), + Java_PopupTouchHandleDrawable_getVisibleWidth(env, obj), + Java_PopupTouchHandleDrawable_getVisibleHeight(env, obj)); return gfx::ScaleRect(unscaled_rect, 1.f / dpi_scale_); }
diff --git a/content/browser/android/tracing_controller_android.cc b/content/browser/android/tracing_controller_android.cc index 9a35987..41df1ae 100644 --- a/content/browser/android/tracing_controller_android.cc +++ b/content/browser/android/tracing_controller_android.cc
@@ -80,7 +80,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> obj = weak_java_object_.get(env); if (obj.obj()) - Java_TracingControllerAndroid_onTracingStopped(env, obj.obj()); + Java_TracingControllerAndroid_onTracingStopped(env, obj); } bool TracingControllerAndroid::GetKnownCategoryGroupsAsync(
diff --git a/content/browser/android/web_contents_observer_proxy.cc b/content/browser/android/web_contents_observer_proxy.cc index f34cc45..d0ed7b6 100644 --- a/content/browser/android/web_contents_observer_proxy.cc +++ b/content/browser/android/web_contents_observer_proxy.cc
@@ -60,13 +60,13 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); // The java side will destroy |this| - Java_WebContentsObserverProxy_destroy(env, obj.obj()); + Java_WebContentsObserverProxy_destroy(env, obj); } void WebContentsObserverProxy::RenderViewReady() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_renderViewReady(env, obj.obj()); + Java_WebContentsObserverProxy_renderViewReady(env, obj); } void WebContentsObserverProxy::RenderProcessGone( @@ -75,8 +75,7 @@ ScopedJavaLocalRef<jobject> obj(java_observer_); jboolean was_oom_protected = termination_status == base::TERMINATION_STATUS_OOM_PROTECTED; - Java_WebContentsObserverProxy_renderProcessGone(env, obj.obj(), - was_oom_protected); + Java_WebContentsObserverProxy_renderProcessGone(env, obj, was_oom_protected); } void WebContentsObserverProxy::DidFinishNavigation( @@ -86,7 +85,7 @@ ScopedJavaLocalRef<jstring> jstring_url( ConvertUTF8ToJavaString(env, web_contents()->GetVisibleURL().spec())); Java_WebContentsObserverProxy_didFinishNavigation( - env, obj.obj(), navigation_handle->IsInMainFrame(), + env, obj, navigation_handle->IsInMainFrame(), navigation_handle->IsErrorPage(), navigation_handle->HasCommitted()); } @@ -98,8 +97,7 @@ if (auto* entry = web_contents()->GetController().GetPendingEntry()) { base_url_of_last_started_data_url_ = entry->GetBaseURLForDataURL(); } - Java_WebContentsObserverProxy_didStartLoading(env, obj.obj(), - jstring_url.obj()); + Java_WebContentsObserverProxy_didStartLoading(env, obj, jstring_url); } void WebContentsObserverProxy::DidStopLoading() { @@ -111,8 +109,7 @@ base_url_of_last_started_data_url_ = GURL::EmptyGURL(); ScopedJavaLocalRef<jstring> jstring_url(ConvertUTF8ToJavaString( env, url_string)); - Java_WebContentsObserverProxy_didStopLoading(env, obj.obj(), - jstring_url.obj()); + Java_WebContentsObserverProxy_didStopLoading(env, obj, jstring_url); } void WebContentsObserverProxy::DidFailProvisionalLoad( @@ -160,7 +157,7 @@ urls_same_ignoring_fragment && details.is_in_page; Java_WebContentsObserverProxy_didNavigateMainFrame( - env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), + env, obj, jstring_url, jstring_base_url, details.is_navigation_to_different_page(), is_fragment_navigation, details.http_status_code); } @@ -179,14 +176,13 @@ params.transition, ui::PAGE_TRANSITION_RELOAD); Java_WebContentsObserverProxy_didNavigateAnyFrame( - env, obj.obj(), jstring_url.obj(), jstring_base_url.obj(), - jboolean_is_reload); + env, obj, jstring_url, jstring_base_url, jboolean_is_reload); } void WebContentsObserverProxy::DocumentAvailableInMainFrame() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_documentAvailableInMainFrame(env, obj.obj()); + Java_WebContentsObserverProxy_documentAvailableInMainFrame(env, obj); } void WebContentsObserverProxy::DidStartProvisionalLoadForFrame( @@ -201,11 +197,11 @@ // TODO(dcheng): Does Java really need the parent frame ID? It doesn't appear // to be used at all, and it just adds complexity here. Java_WebContentsObserverProxy_didStartProvisionalLoadForFrame( - env, obj.obj(), render_frame_host->GetRoutingID(), + env, obj, render_frame_host->GetRoutingID(), render_frame_host->GetParent() ? render_frame_host->GetParent()->GetRoutingID() : -1, - !render_frame_host->GetParent(), jstring_url.obj(), is_error_page, + !render_frame_host->GetParent(), jstring_url, is_error_page, is_iframe_srcdoc); } @@ -218,8 +214,8 @@ ScopedJavaLocalRef<jstring> jstring_url( ConvertUTF8ToJavaString(env, url.spec())); Java_WebContentsObserverProxy_didCommitProvisionalLoadForFrame( - env, obj.obj(), render_frame_host->GetRoutingID(), - !render_frame_host->GetParent(), jstring_url.obj(), transition_type); + env, obj, render_frame_host->GetRoutingID(), + !render_frame_host->GetParent(), jstring_url, transition_type); } void WebContentsObserverProxy::DidFinishLoad(RenderFrameHost* render_frame_host, @@ -233,7 +229,7 @@ ScopedJavaLocalRef<jstring> jstring_url( ConvertUTF8ToJavaString(env, url_string)); Java_WebContentsObserverProxy_didFinishLoad( - env, obj.obj(), render_frame_host->GetRoutingID(), jstring_url.obj(), + env, obj, render_frame_host->GetRoutingID(), jstring_url, !render_frame_host->GetParent()); } @@ -242,7 +238,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); Java_WebContentsObserverProxy_documentLoadedInFrame( - env, obj.obj(), render_frame_host->GetRoutingID(), + env, obj, render_frame_host->GetRoutingID(), !render_frame_host->GetParent()); } @@ -250,25 +246,25 @@ const LoadCommittedDetails& load_details) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_navigationEntryCommitted(env, obj.obj()); + Java_WebContentsObserverProxy_navigationEntryCommitted(env, obj); } void WebContentsObserverProxy::DidAttachInterstitialPage() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_didAttachInterstitialPage(env, obj.obj()); + Java_WebContentsObserverProxy_didAttachInterstitialPage(env, obj); } void WebContentsObserverProxy::DidDetachInterstitialPage() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_didDetachInterstitialPage(env, obj.obj()); + Java_WebContentsObserverProxy_didDetachInterstitialPage(env, obj); } void WebContentsObserverProxy::DidChangeThemeColor(SkColor color) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_didChangeThemeColor(env, obj.obj(), color); + Java_WebContentsObserverProxy_didChangeThemeColor(env, obj, color); } void WebContentsObserverProxy::DidFailLoadInternal( @@ -286,15 +282,14 @@ ConvertUTF8ToJavaString(env, url.spec())); Java_WebContentsObserverProxy_didFailLoad( - env, obj.obj(), is_provisional_load, is_main_frame, error_code, - jstring_error_description.obj(), jstring_url.obj(), - was_ignored_by_handler); + env, obj, is_provisional_load, is_main_frame, error_code, + jstring_error_description, jstring_url, was_ignored_by_handler); } void WebContentsObserverProxy::DidFirstVisuallyNonEmptyPaint() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> obj(java_observer_); - Java_WebContentsObserverProxy_didFirstVisuallyNonEmptyPaint(env, obj.obj()); + Java_WebContentsObserverProxy_didFirstVisuallyNonEmptyPaint(env, obj); } void WebContentsObserverProxy::DidStartNavigationToPendingEntry( @@ -305,8 +300,8 @@ ScopedJavaLocalRef<jstring> jstring_url( ConvertUTF8ToJavaString(env, url.spec())); - Java_WebContentsObserverProxy_didStartNavigationToPendingEntry( - env, obj.obj(), jstring_url.obj()); + Java_WebContentsObserverProxy_didStartNavigationToPendingEntry(env, obj, + jstring_url); } void WebContentsObserverProxy::MediaSessionStateChanged( @@ -320,7 +315,7 @@ MediaMetadataAndroid::CreateJavaObject(env, metadata); Java_WebContentsObserverProxy_mediaSessionStateChanged( - env, obj.obj(), is_controllable, is_suspended, j_metadata.obj()); + env, obj, is_controllable, is_suspended, j_metadata); } void WebContentsObserverProxy::SetToBaseURLForDataURLIfNeeded(
diff --git a/content/browser/appcache/appcache.cc b/content/browser/appcache/appcache.cc index 2227197..0bd1f30 100644 --- a/content/browser/appcache/appcache.cc +++ b/content/browser/appcache/appcache.cc
@@ -20,7 +20,7 @@ AppCache::AppCache(AppCacheStorage* storage, int64_t cache_id) : cache_id_(cache_id), - owning_group_(NULL), + owning_group_(nullptr), online_whitelist_all_(false), is_complete_(false), cache_size_(0), @@ -36,8 +36,6 @@ } DCHECK(!owning_group_.get()); storage_->working_set()->RemoveCache(this); - base::STLDeleteContainerPairSecondPointers(executable_handlers_.begin(), - executable_handlers_.end()); } void AppCache::UnassociateHost(AppCacheHost* host) { @@ -71,7 +69,7 @@ AppCacheEntry* AppCache::GetEntry(const GURL& url) { EntryMap::iterator it = entries_.find(url); - return (it != entries_.end()) ? &(it->second) : NULL; + return (it != entries_.end()) ? &(it->second) : nullptr; } const AppCacheEntry* AppCache::GetEntryAndUrlWithResponseId( @@ -85,14 +83,14 @@ return &iter->second; } } - return NULL; + return nullptr; } AppCacheExecutableHandler* AppCache::GetExecutableHandler(int64_t response_id) { HandlerMap::const_iterator found = executable_handlers_.find(response_id); if (found != executable_handlers_.end()) - return found->second; - return NULL; + return found->second.get(); + return nullptr; } AppCacheExecutableHandler* AppCache::GetOrCreateExecutableHandler( @@ -106,16 +104,16 @@ const AppCacheEntry* entry = GetEntryAndUrlWithResponseId( response_id, &handler_url); if (!entry || !entry->IsExecutable()) - return NULL; + return nullptr; DCHECK(storage_->service()->handler_factory()); std::unique_ptr<AppCacheExecutableHandler> own_ptr = storage_->service()->handler_factory()->CreateHandler(handler_url, handler_source); - handler = own_ptr.release(); + handler = own_ptr.get(); if (!handler) - return NULL; - executable_handlers_[response_id] = handler; + return nullptr; + executable_handlers_[response_id] = std::move(own_ptr); return handler; } @@ -325,7 +323,7 @@ if (namespaces[i].IsMatch(url)) return &namespaces[i]; } - return NULL; + return nullptr; } } // namespace content
diff --git a/content/browser/appcache/appcache.h b/content/browser/appcache/appcache.h index f619252..1deb90b 100644 --- a/content/browser/appcache/appcache.h +++ b/content/browser/appcache/appcache.h
@@ -8,6 +8,7 @@ #include <stdint.h> #include <map> +#include <memory> #include <set> #include <vector> @@ -68,7 +69,7 @@ // Do not store or delete the returned ptr, they're owned by 'this'. AppCacheEntry* GetEntry(const GURL& url); const AppCacheEntry* GetEntryWithResponseId(int64_t response_id) { - return GetEntryAndUrlWithResponseId(response_id, NULL); + return GetEntryAndUrlWithResponseId(response_id, nullptr); } const AppCacheEntry* GetEntryAndUrlWithResponseId(int64_t response_id, GURL* optional_url); @@ -168,7 +169,7 @@ return FindNamespace(fallback_namespaces_, url); } bool IsInNetworkNamespace(const GURL& url) { - return FindNamespace(online_whitelist_namespaces_, url) != NULL; + return FindNamespace(online_whitelist_namespaces_, url) != nullptr; } GURL GetNamespaceEntryUrl(const AppCacheNamespaceVector& namespaces, @@ -198,7 +199,8 @@ int64_t cache_size_; - typedef std::map<int64_t, AppCacheExecutableHandler*> HandlerMap; + typedef std::map<int64_t, std::unique_ptr<AppCacheExecutableHandler>> + HandlerMap; HandlerMap executable_handlers_; // to notify storage when cache is deleted
diff --git a/content/browser/appcache/appcache_storage.cc b/content/browser/appcache/appcache_storage.cc index d5bec16..0299ddc1 100644 --- a/content/browser/appcache/appcache_storage.cc +++ b/content/browser/appcache/appcache_storage.cc
@@ -6,7 +6,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" -#include "base/stl_util.h" +#include "base/memory/ptr_util.h" #include "content/browser/appcache/appcache_response.h" #include "content/browser/appcache/appcache_service_impl.h" #include "storage/browser/quota/quota_client.h" @@ -23,7 +23,6 @@ } AppCacheStorage::~AppCacheStorage() { - base::STLDeleteValues(&pending_info_loads_); DCHECK(delegate_references_.empty()); } @@ -47,8 +46,7 @@ manifest_url_(manifest_url), response_id_(response_id), info_buffer_(new HttpResponseInfoIOBuffer) { - storage_->pending_info_loads_.insert( - PendingResponseInfoLoads::value_type(response_id, this)); + storage_->pending_info_loads_[response_id] = base::WrapUnique(this); } AppCacheStorage::ResponseInfoLoadTask::~ResponseInfoLoadTask() { @@ -64,7 +62,10 @@ } void AppCacheStorage::ResponseInfoLoadTask::OnReadComplete(int result) { + std::unique_ptr<ResponseInfoLoadTask> this_wrapper( + std::move(storage_->pending_info_loads_[response_id_])); storage_->pending_info_loads_.erase(response_id_); + scoped_refptr<AppCacheResponseInfo> info; if (result >= 0) { info = new AppCacheResponseInfo(storage_, manifest_url_, @@ -73,7 +74,8 @@ info_buffer_->response_data_size); } FOR_EACH_DELEGATE(delegates_, OnResponseInfoLoaded(info.get(), response_id_)); - delete this; + + // returning deletes this } void AppCacheStorage::LoadResponseInfo(const GURL& manifest_url,
diff --git a/content/browser/appcache/appcache_storage.h b/content/browser/appcache/appcache_storage.h index d4e5dfe..d01de851 100644 --- a/content/browser/appcache/appcache_storage.h +++ b/content/browser/appcache/appcache_storage.h
@@ -275,8 +275,6 @@ scoped_refptr<HttpResponseInfoIOBuffer> info_buffer_; }; - typedef std::map<int64_t, ResponseInfoLoadTask*> PendingResponseInfoLoads; - DelegateReference* GetDelegateReference(Delegate* delegate) { DelegateReferenceMap::iterator iter = delegate_references_.find(delegate); @@ -295,10 +293,9 @@ ResponseInfoLoadTask* GetOrCreateResponseInfoLoadTask( const GURL& manifest_url, int64_t response_id) { - PendingResponseInfoLoads::iterator iter = - pending_info_loads_.find(response_id); + auto iter = pending_info_loads_.find(response_id); if (iter != pending_info_loads_.end()) - return iter->second; + return iter->second.get(); return new ResponseInfoLoadTask(manifest_url, response_id, this); } @@ -319,7 +316,9 @@ AppCacheWorkingSet working_set_; AppCacheServiceImpl* service_; DelegateReferenceMap delegate_references_; - PendingResponseInfoLoads pending_info_loads_; + + // Note that the ResponseInfoLoadTask items add themselves to this map. + std::map<int64_t, std::unique_ptr<ResponseInfoLoadTask>> pending_info_loads_; // The set of last ids must be retrieved from storage prior to being used. static const int64_t kUnitializedId;
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc index e9ffa3d..901a95eb 100644 --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc
@@ -11,8 +11,8 @@ #include "base/files/file_path.h" #include "base/logging.h" #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/metrics/histogram.h" -#include "base/stl_util.h" #include "base/strings/string_util.h" #include "build/build_config.h" #include "content/browser/site_instance_impl.h" @@ -313,8 +313,6 @@ ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() { web_safe_schemes_.clear(); pseudo_schemes_.clear(); - base::STLDeleteContainerPairSecondPointers(security_state_.begin(), - security_state_.end()); security_state_.clear(); } @@ -341,12 +339,7 @@ void ChildProcessSecurityPolicyImpl::Remove(int child_id) { base::AutoLock lock(lock_); - SecurityStateMap::iterator it = security_state_.find(child_id); - if (it == security_state_.end()) - return; // May be called multiple times. - - delete it->second; - security_state_.erase(it); + security_state_.erase(child_id); worker_map_.erase(child_id); } @@ -790,7 +783,7 @@ return; } - security_state_[child_id] = new SecurityState(); + security_state_[child_id] = base::MakeUnique<SecurityState>(); } bool ChildProcessSecurityPolicyImpl::ChildProcessHasPermissionsForFile(
diff --git a/content/browser/child_process_security_policy_impl.h b/content/browser/child_process_security_policy_impl.h index 271e69c..93c693e 100644 --- a/content/browser/child_process_security_policy_impl.h +++ b/content/browser/child_process_security_policy_impl.h
@@ -6,6 +6,7 @@ #define CONTENT_BROWSER_CHILD_PROCESS_SECURITY_POLICY_IMPL_H_ #include <map> +#include <memory> #include <set> #include <string> #include <vector> @@ -174,7 +175,7 @@ class SecurityState; typedef std::set<std::string> SchemeSet; - typedef std::map<int, SecurityState*> SecurityStateMap; + typedef std::map<int, std::unique_ptr<SecurityState>> SecurityStateMap; typedef std::map<int, int> WorkerToMainProcessMap; typedef std::map<storage::FileSystemType, int> FileSystemPermissionPolicyMap;
diff --git a/content/browser/device_sensors/sensor_manager_android.cc b/content/browser/device_sensors/sensor_manager_android.cc index 7c293c9..ad56eadc 100644 --- a/content/browser/device_sensors/sensor_manager_android.cc +++ b/content/browser/device_sensors/sensor_manager_android.cc
@@ -211,32 +211,29 @@ int rate_in_microseconds = (consumer_type == CONSUMER_TYPE_LIGHT) ? kLightSensorIntervalMicroseconds : kDeviceSensorIntervalMicroseconds; - return Java_DeviceSensors_start(AttachCurrentThread(), - device_sensors_.obj(), - reinterpret_cast<intptr_t>(this), - static_cast<jint>(consumer_type), - rate_in_microseconds); + return Java_DeviceSensors_start( + AttachCurrentThread(), device_sensors_, reinterpret_cast<intptr_t>(this), + static_cast<jint>(consumer_type), rate_in_microseconds); } void SensorManagerAndroid::Stop(ConsumerType consumer_type) { DCHECK(!device_sensors_.is_null()); - Java_DeviceSensors_stop(AttachCurrentThread(), - device_sensors_.obj(), + Java_DeviceSensors_stop(AttachCurrentThread(), device_sensors_, static_cast<jint>(consumer_type)); } int SensorManagerAndroid::GetNumberActiveDeviceMotionSensors() { DCHECK(!device_sensors_.is_null()); return Java_DeviceSensors_getNumberActiveDeviceMotionSensors( - AttachCurrentThread(), device_sensors_.obj()); + AttachCurrentThread(), device_sensors_); } SensorManagerAndroid::OrientationSensorType SensorManagerAndroid::GetOrientationSensorTypeUsed() { DCHECK(!device_sensors_.is_null()); return static_cast<SensorManagerAndroid::OrientationSensorType>( - Java_DeviceSensors_getOrientationSensorTypeUsed( - AttachCurrentThread(), device_sensors_.obj())); + Java_DeviceSensors_getOrientationSensorTypeUsed(AttachCurrentThread(), + device_sensors_)); } // ----- Shared memory API methods
diff --git a/content/browser/frame_host/navigation_controller_android.cc b/content/browser/frame_host/navigation_controller_android.cc index 2d89750..f40f17c1 100644 --- a/content/browser/frame_host/navigation_controller_android.cc +++ b/content/browser/frame_host/navigation_controller_android.cc
@@ -48,13 +48,7 @@ j_bitmap = gfx::ConvertToJavaBitmap(status.image.ToSkBitmap()); return content::Java_NavigationControllerImpl_createNavigationEntry( - env, - index, - j_url.obj(), - j_virtual_url.obj(), - j_original_url.obj(), - j_title.obj(), - j_bitmap.obj(), + env, index, j_url, j_virtual_url, j_original_url, j_title, j_bitmap, entry->GetTransitionType()); } @@ -63,9 +57,7 @@ content::NavigationEntry* entry, int index) { content::Java_NavigationControllerImpl_addToNavigationHistory( - env, - history, - CreateJavaNavigationEntry(env, entry, index).obj()); + env, history, CreateJavaNavigationEntry(env, entry, index)); } } // namespace @@ -87,7 +79,7 @@ } NavigationControllerAndroid::~NavigationControllerAndroid() { - Java_NavigationControllerImpl_destroy(AttachCurrentThread(), obj_.obj()); + Java_NavigationControllerImpl_destroy(AttachCurrentThread(), obj_); } base::android::ScopedJavaLocalRef<jobject>
diff --git a/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc b/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc index 1f2b932..63f4000 100644 --- a/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc +++ b/content/browser/indexed_db/indexed_db_active_blob_registry_unittest.cc
@@ -107,7 +107,8 @@ factory_(new RegistryTestMockFactory), backing_store_( new MockIDBBackingStore(factory_.get(), task_runner_.get())), - registry_(new IndexedDBActiveBlobRegistry(backing_store_.get())) {} + registry_(base::MakeUnique<IndexedDBActiveBlobRegistry>( + backing_store_.get())) {} void RunUntilIdle() { task_runner_->RunUntilIdle(); } RegistryTestMockFactory* factory() const { return factory_.get(); }
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc index 56543bf..f5904f9c 100644 --- a/content/browser/indexed_db/indexed_db_backing_store.cc +++ b/content/browser/indexed_db/indexed_db_backing_store.cc
@@ -14,6 +14,7 @@ #include "base/json/json_writer.h" #include "base/logging.h" #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/metrics/histogram.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -770,8 +771,6 @@ for (const auto& pid : child_process_ids_granted_) policy->RevokeAllPermissionsForFile(pid, blob_path_); } - base::STLDeleteContainerPairSecondPointers(incognito_blob_map_.begin(), - incognito_blob_map_.end()); // db_'s destructor uses comparator_. The order of destruction is important. db_.reset(); comparator_.reset(); @@ -973,7 +972,7 @@ data_loss_info->status = blink::WebIDBDataLossNone; *status = leveldb::Status::OK(); - std::unique_ptr<LevelDBComparator> comparator(new Comparator()); + std::unique_ptr<LevelDBComparator> comparator(base::MakeUnique<Comparator>()); if (!base::IsStringASCII(path_base.AsUTF8Unsafe())) { HistogramOpenStatus(INDEXED_DB_BACKING_STORE_OPEN_ATTEMPT_NON_ASCII, @@ -1118,7 +1117,7 @@ leveldb::Status* status) { IDB_TRACE("IndexedDBBackingStore::OpenInMemory"); - std::unique_ptr<LevelDBComparator> comparator(new Comparator()); + std::unique_ptr<LevelDBComparator> comparator(base::MakeUnique<Comparator>()); std::unique_ptr<LevelDBDatabase> db = LevelDBDatabase::OpenInMemory(comparator.get()); if (!db) { @@ -2333,8 +2332,9 @@ storage::FileStreamWriter::CreateForLocalFile( task_runner_.get(), file_path, 0, storage::FileStreamWriter::CREATE_NEW_FILE)); - std::unique_ptr<FileWriterDelegate> delegate(new FileWriterDelegate( - std::move(writer), storage::FlushPolicy::FLUSH_ON_COMPLETION)); + std::unique_ptr<FileWriterDelegate> delegate( + base::MakeUnique<FileWriterDelegate>( + std::move(writer), storage::FlushPolicy::FLUSH_ON_COMPLETION)); DCHECK(blob_url.is_valid()); std::unique_ptr<net::URLRequest> blob_request( @@ -2704,14 +2704,14 @@ int64_t database_id, const std::string& object_store_data_key, IndexedDBValue* value) { - BlobChangeRecord* change_record = NULL; + BlobChangeRecord* change_record = nullptr; auto blob_iter = blob_change_map_.find(object_store_data_key); if (blob_iter != blob_change_map_.end()) { - change_record = blob_iter->second; + change_record = blob_iter->second.get(); } else { blob_iter = incognito_blob_map_.find(object_store_data_key); if (blob_iter != incognito_blob_map_.end()) - change_record = blob_iter->second; + change_record = blob_iter->second.get(); } if (change_record) { // Either we haven't written the blob to disk yet or we're in incognito @@ -3096,7 +3096,7 @@ transaction_(other->transaction_), database_id_(other->database_id_), cursor_options_(other->cursor_options_), - current_key_(new IndexedDBKey(*other->current_key_)) { + current_key_(base::MakeUnique<IndexedDBKey>(*other->current_key_)) { if (other->iterator_) { iterator_ = transaction_->transaction()->CreateIterator(); @@ -3380,7 +3380,9 @@ database_id, cursor_options) {} - Cursor* Clone() override { return new ObjectStoreKeyCursorImpl(this); } + std::unique_ptr<Cursor> Clone() const override { + return base::WrapUnique(new ObjectStoreKeyCursorImpl(this)); + } // IndexedDBBackingStore::Cursor IndexedDBValue* value() override { @@ -3446,7 +3448,9 @@ database_id, cursor_options) {} - Cursor* Clone() override { return new ObjectStoreCursorImpl(this); } + std::unique_ptr<Cursor> Clone() const override { + return base::WrapUnique(new ObjectStoreCursorImpl(this)); + } // IndexedDBBackingStore::Cursor IndexedDBValue* value() override { return ¤t_value_; } @@ -3518,7 +3522,9 @@ database_id, cursor_options) {} - Cursor* Clone() override { return new IndexKeyCursorImpl(this); } + std::unique_ptr<Cursor> Clone() const override { + return base::WrapUnique(new IndexKeyCursorImpl(this)); + } // IndexedDBBackingStore::Cursor IndexedDBValue* value() override { @@ -3552,7 +3558,7 @@ private: explicit IndexKeyCursorImpl(const IndexKeyCursorImpl* other) : IndexedDBBackingStore::Cursor(other), - primary_key_(new IndexedDBKey(*other->primary_key_)) {} + primary_key_(base::MakeUnique<IndexedDBKey>(*other->primary_key_)) {} std::unique_ptr<IndexedDBKey> primary_key_; @@ -3634,7 +3640,9 @@ database_id, cursor_options) {} - Cursor* Clone() override { return new IndexCursorImpl(this); } + std::unique_ptr<Cursor> Clone() const override { + return base::WrapUnique(new IndexCursorImpl(this)); + } // IndexedDBBackingStore::Cursor IndexedDBValue* value() override { return ¤t_value_; } @@ -3665,7 +3673,7 @@ private: explicit IndexCursorImpl(const IndexCursorImpl* other) : IndexedDBBackingStore::Cursor(other), - primary_key_(new IndexedDBKey(*other->primary_key_)), + primary_key_(base::MakeUnique<IndexedDBKey>(*other->primary_key_)), current_value_(other->current_value_), primary_leveldb_key_(other->primary_leveldb_key_) {} @@ -3908,8 +3916,9 @@ direction, &cursor_options)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); - std::unique_ptr<ObjectStoreCursorImpl> cursor(new ObjectStoreCursorImpl( - this, transaction, database_id, cursor_options)); + std::unique_ptr<ObjectStoreCursorImpl> cursor( + base::MakeUnique<ObjectStoreCursorImpl>(this, transaction, database_id, + cursor_options)); if (!cursor->FirstSeek(s)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); @@ -3935,8 +3944,9 @@ direction, &cursor_options)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); - std::unique_ptr<ObjectStoreKeyCursorImpl> cursor(new ObjectStoreKeyCursorImpl( - this, transaction, database_id, cursor_options)); + std::unique_ptr<ObjectStoreKeyCursorImpl> cursor( + base::MakeUnique<ObjectStoreKeyCursorImpl>(this, transaction, database_id, + cursor_options)); if (!cursor->FirstSeek(s)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); @@ -3965,7 +3975,8 @@ &cursor_options)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); std::unique_ptr<IndexKeyCursorImpl> cursor( - new IndexKeyCursorImpl(this, transaction, database_id, cursor_options)); + base::MakeUnique<IndexKeyCursorImpl>(this, transaction, database_id, + cursor_options)); if (!cursor->FirstSeek(s)) return std::unique_ptr<IndexedDBBackingStore::Cursor>(); @@ -4006,10 +4017,6 @@ } IndexedDBBackingStore::Transaction::~Transaction() { - base::STLDeleteContainerPairSecondPointers(blob_change_map_.begin(), - blob_change_map_.end()); - base::STLDeleteContainerPairSecondPointers(incognito_blob_map_.begin(), - incognito_blob_map_.end()); DCHECK(!committing_); } @@ -4022,7 +4029,7 @@ // If incognito, this snapshots blobs just as the above transaction_ // constructor snapshots the leveldb. for (const auto& iter : backing_store_->incognito_blob_map_) - incognito_blob_map_[iter.first] = iter.second->Clone().release(); + incognito_blob_map_[iter.first] = iter.second->Clone(); } static GURL GetURLFromUUID(const string& uuid) { @@ -4246,14 +4253,10 @@ auto& target_map = backing_store_->incognito_blob_map_; for (auto& iter : blob_change_map_) { auto target_record = target_map.find(iter.first); - if (target_record != target_map.end()) { - delete target_record->second; + if (target_record != target_map.end()) target_map.erase(target_record); - } - if (iter.second) { - target_map[iter.first] = iter.second; - iter.second = NULL; - } + if (iter.second) + target_map[iter.first] = std::move(iter.second); } } return leveldb::Status::OK(); @@ -4431,10 +4434,13 @@ const auto& it = blob_change_map_.find(object_store_data_key); BlobChangeRecord* record = NULL; if (it == blob_change_map_.end()) { - record = new BlobChangeRecord(object_store_data_key, object_store_id); - blob_change_map_[object_store_data_key] = record; + std::unique_ptr<BlobChangeRecord> new_record = + base::MakeUnique<BlobChangeRecord>(object_store_data_key, + object_store_id); + record = new_record.get(); + blob_change_map_[object_store_data_key] = std::move(new_record); } else { - record = it->second; + record = it->second.get(); } DCHECK_EQ(record->object_store_id(), object_store_id); record->SetBlobInfo(blob_info);
diff --git a/content/browser/indexed_db/indexed_db_backing_store.h b/content/browser/indexed_db/indexed_db_backing_store.h index 722a1d4..c5a28e0 100644 --- a/content/browser/indexed_db/indexed_db_backing_store.h +++ b/content/browser/indexed_db/indexed_db_backing_store.h
@@ -259,8 +259,9 @@ IndexedDBBackingStore* backing_store_; scoped_refptr<LevelDBTransaction> transaction_; - std::map<std::string, BlobChangeRecord*> blob_change_map_; - std::map<std::string, BlobChangeRecord*> incognito_blob_map_; + std::map<std::string, std::unique_ptr<BlobChangeRecord>> blob_change_map_; + std::map<std::string, std::unique_ptr<BlobChangeRecord>> + incognito_blob_map_; int64_t database_id_; // List of blob files being newly written as part of this transaction. @@ -278,6 +279,8 @@ // indicate that the committing_transaction_count_ on the backing store // has been bumped, and journal cleaning should be deferred. bool committing_; + + DISALLOW_COPY_AND_ASSIGN(Transaction); }; class Cursor { @@ -315,7 +318,7 @@ bool Advance(uint32_t count, leveldb::Status*); bool FirstSeek(leveldb::Status*); - virtual Cursor* Clone() = 0; + virtual std::unique_ptr<Cursor> Clone() const = 0; virtual const IndexedDBKey& primary_key() const; virtual IndexedDBValue* value() = 0; virtual const RecordIdentifier& record_identifier() const; @@ -652,7 +655,7 @@ net::URLRequestContext* request_context_; scoped_refptr<base::SequencedTaskRunner> task_runner_; std::set<int> child_process_ids_granted_; - std::map<std::string, BlobChangeRecord*> incognito_blob_map_; + std::map<std::string, std::unique_ptr<BlobChangeRecord>> incognito_blob_map_; base::OneShotTimer journal_cleaning_timer_; std::unique_ptr<LevelDBDatabase> db_;
diff --git a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc index 644e608b..4e0d690 100644 --- a/content/browser/indexed_db/indexed_db_backing_store_unittest.cc +++ b/content/browser/indexed_db/indexed_db_backing_store_unittest.cc
@@ -13,6 +13,7 @@ #include "base/files/scoped_temp_dir.h" #include "base/logging.h" #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/sequenced_task_runner.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" @@ -76,7 +77,8 @@ leveldb::Status* status) { DCHECK(!path_base.empty()); - std::unique_ptr<LevelDBComparator> comparator(new Comparator()); + std::unique_ptr<LevelDBComparator> comparator = + base::MakeUnique<Comparator>(); if (!base::CreateDirectory(path_base)) { *status = leveldb::Status::IOError("Unable to create base dir");
diff --git a/content/browser/indexed_db/indexed_db_class_factory.cc b/content/browser/indexed_db/indexed_db_class_factory.cc index 3189b2d..b1a7fce 100644 --- a/content/browser/indexed_db/indexed_db_class_factory.cc +++ b/content/browser/indexed_db/indexed_db_class_factory.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/memory/ptr_util.h" #include "content/browser/indexed_db/indexed_db_transaction.h" #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" #include "content/browser/indexed_db/leveldb/leveldb_transaction.h" @@ -27,7 +28,7 @@ return s_factory.Pointer(); } -IndexedDBDatabase* IndexedDBClassFactory::CreateIndexedDBDatabase( +scoped_refptr<IndexedDBDatabase> IndexedDBClassFactory::CreateIndexedDBDatabase( const base::string16& name, IndexedDBBackingStore* backing_store, IndexedDBFactory* factory, @@ -41,18 +42,21 @@ const std::set<int64_t>& scope, blink::WebIDBTransactionMode mode, IndexedDBBackingStore::Transaction* backing_store_transaction) { - return new IndexedDBTransaction(id, std::move(connection), scope, mode, - backing_store_transaction); + // The transaction adds itself to |connection|'s database's transaction + // coordinator, which owns the object. + IndexedDBTransaction* transaction = new IndexedDBTransaction( + id, std::move(connection), scope, mode, backing_store_transaction); + return transaction; } -LevelDBTransaction* IndexedDBClassFactory::CreateLevelDBTransaction( - LevelDBDatabase* db) { +scoped_refptr<LevelDBTransaction> +IndexedDBClassFactory::CreateLevelDBTransaction(LevelDBDatabase* db) { return new LevelDBTransaction(db); } -content::LevelDBIteratorImpl* IndexedDBClassFactory::CreateIteratorImpl( +std::unique_ptr<LevelDBIteratorImpl> IndexedDBClassFactory::CreateIteratorImpl( std::unique_ptr<leveldb::Iterator> iterator) { - return new LevelDBIteratorImpl(std::move(iterator)); + return base::WrapUnique(new LevelDBIteratorImpl(std::move(iterator))); } } // namespace content
diff --git a/content/browser/indexed_db/indexed_db_class_factory.h b/content/browser/indexed_db/indexed_db_class_factory.h index fb4f1d7e..60f069e 100644 --- a/content/browser/indexed_db/indexed_db_class_factory.h +++ b/content/browser/indexed_db/indexed_db_class_factory.h
@@ -11,6 +11,7 @@ #include <set> #include "base/lazy_instance.h" +#include "base/memory/ref_counted.h" #include "content/browser/indexed_db/indexed_db_backing_store.h" #include "content/browser/indexed_db/indexed_db_database.h" #include "content/common/content_export.h" @@ -41,7 +42,7 @@ static void SetIndexedDBClassFactoryGetter(GetterCallback* cb); - virtual IndexedDBDatabase* CreateIndexedDBDatabase( + virtual scoped_refptr<IndexedDBDatabase> CreateIndexedDBDatabase( const base::string16& name, IndexedDBBackingStore* backing_store, IndexedDBFactory* factory, @@ -54,9 +55,11 @@ blink::WebIDBTransactionMode mode, IndexedDBBackingStore::Transaction* backing_store_transaction); - virtual LevelDBIteratorImpl* CreateIteratorImpl( + virtual std::unique_ptr<LevelDBIteratorImpl> CreateIteratorImpl( std::unique_ptr<leveldb::Iterator> iterator); - virtual LevelDBTransaction* CreateLevelDBTransaction(LevelDBDatabase* db); + + virtual scoped_refptr<LevelDBTransaction> CreateLevelDBTransaction( + LevelDBDatabase* db); protected: IndexedDBClassFactory() {}
diff --git a/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc b/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc index 5f08c3e..404a2802 100644 --- a/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc +++ b/content/browser/indexed_db/indexed_db_cleanup_on_io_error_unittest.cc
@@ -8,6 +8,7 @@ #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "content/browser/indexed_db/indexed_db_backing_store.h" @@ -48,7 +49,7 @@ static std::unique_ptr<LevelDBDatabase> Open( const base::FilePath& file_name, const LevelDBComparator* /*comparator*/) { - return std::unique_ptr<LevelDBDatabase>(new BustedLevelDBDatabase); + return base::MakeUnique<BustedLevelDBDatabase>(); } leveldb::Status Get(const base::StringPiece& key, std::string* value,
diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index df01e56d..bfa84ea2 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc
@@ -166,14 +166,16 @@ std::sort(origins.begin(), origins.end(), HostNameComparator); - std::unique_ptr<base::ListValue> list(new base::ListValue()); + std::unique_ptr<base::ListValue> list(base::MakeUnique<base::ListValue>()); for (const auto& origin : origins) { - std::unique_ptr<base::DictionaryValue> info(new base::DictionaryValue()); + std::unique_ptr<base::DictionaryValue> info( + base::MakeUnique<base::DictionaryValue>()); info->SetString("url", origin.Serialize()); info->SetString("size", ui::FormatBytes(GetOriginDiskUsage(origin))); info->SetDouble("last_modified", GetOriginLastModified(origin).ToJsTime()); if (!is_incognito()) { - std::unique_ptr<base::ListValue> paths(new base::ListValue()); + std::unique_ptr<base::ListValue> paths( + base::MakeUnique<base::ListValue>()); for (const base::FilePath& path : GetStoragePaths(origin)) paths->AppendString(path.value()); info->Set("paths", paths.release()); @@ -189,14 +191,15 @@ IndexedDBFactory::OriginDBMapIterator> range = factory_->GetOpenDatabasesForOrigin(origin); // TODO(jsbell): Sort by name? - std::unique_ptr<base::ListValue> database_list(new base::ListValue()); + std::unique_ptr<base::ListValue> database_list( + base::MakeUnique<base::ListValue>()); for (IndexedDBFactory::OriginDBMapIterator it = range.first; it != range.second; ++it) { const IndexedDBDatabase* db = it->second; std::unique_ptr<base::DictionaryValue> db_info( - new base::DictionaryValue()); + base::MakeUnique<base::DictionaryValue>()); db_info->SetString("name", db->name()); db_info->SetDouble("connection_count", db->ConnectionCount()); @@ -204,12 +207,12 @@ db_info->SetDouble("pending_open_delete", db->PendingOpenDeleteCount()); std::unique_ptr<base::ListValue> transaction_list( - new base::ListValue()); + base::MakeUnique<base::ListValue>()); std::vector<const IndexedDBTransaction*> transactions = db->transaction_coordinator().GetTransactions(); for (const auto* transaction : transactions) { std::unique_ptr<base::DictionaryValue> transaction_info( - new base::DictionaryValue()); + base::MakeUnique<base::DictionaryValue>()); const char* const kModes[] = { "readonly", "readwrite", "versionchange" }; @@ -253,7 +256,8 @@ transaction_info->SetDouble( "tasks_completed", transaction->diagnostics().tasks_completed); - std::unique_ptr<base::ListValue> scope(new base::ListValue()); + std::unique_ptr<base::ListValue> scope( + base::MakeUnique<base::ListValue>()); for (const auto& id : transaction->scope()) { const auto& it = db->metadata().object_stores.find(id); if (it != db->metadata().object_stores.end()) @@ -556,7 +560,8 @@ if (!origin_set_) { std::vector<Origin> origins; GetAllOriginsAndPaths(data_path_, &origins, NULL); - origin_set_.reset(new std::set<Origin>(origins.begin(), origins.end())); + origin_set_ = + base::MakeUnique<std::set<Origin>>(origins.begin(), origins.end()); } return origin_set_.get(); }
diff --git a/content/browser/indexed_db/indexed_db_cursor.cc b/content/browser/indexed_db/indexed_db_cursor.cc index cd8692d..a029b08 100644 --- a/content/browser/indexed_db/indexed_db_cursor.cc +++ b/content/browser/indexed_db/indexed_db_cursor.cc
@@ -140,7 +140,7 @@ if (i == 0) { // First prefetched result is always used, so that's the position // a cursor should be reset to if the prefetch is invalidated. - saved_cursor_.reset(cursor_->Clone()); + saved_cursor_ = cursor_->Clone(); } found_keys.push_back(cursor_->key());
diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc index ac8829c9..998c5cf 100644 --- a/content/browser/indexed_db/indexed_db_database.cc +++ b/content/browser/indexed_db/indexed_db_database.cc
@@ -464,7 +464,7 @@ scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks, int child_process_id) { std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(this, database_callbacks)); + base::MakeUnique<IndexedDBConnection>(this, database_callbacks)); connections_.insert(connection.get()); backing_store_->GrantChildProcessPermissions(child_process_id); return connection; @@ -796,13 +796,13 @@ continue; if (!recorded) { if (type == blink::WebIDBClear) { - transaction->AddObservation(connection->id(), - base::WrapUnique(new IndexedDBObservation( - object_store_id, type))); + transaction->AddObservation( + connection->id(), + base::MakeUnique<IndexedDBObservation>(object_store_id, type)); } else { transaction->AddObservation(connection->id(), - base::WrapUnique(new IndexedDBObservation( - object_store_id, type, key_range))); + base::MakeUnique<IndexedDBObservation>( + object_store_id, type, key_range)); } recorded = true; } @@ -1172,13 +1172,12 @@ ¤t_number); if (!s.ok()) { LOG(ERROR) << "Failed to GetKeyGeneratorCurrentNumber"; - return base::WrapUnique(new IndexedDBKey()); + return base::MakeUnique<IndexedDBKey>(); } if (current_number < 0 || current_number > max_generator_value) - return base::WrapUnique(new IndexedDBKey()); + return base::MakeUnique<IndexedDBKey>(); - return base::WrapUnique( - new IndexedDBKey(current_number, WebIDBKeyTypeNumber)); + return base::MakeUnique<IndexedDBKey>(current_number, WebIDBKeyTypeNumber); } static leveldb::Status UpdateKeyGenerator(IndexedDBBackingStore* backing_store, @@ -1226,7 +1225,8 @@ DCHECK(key); DCHECK(value); - std::unique_ptr<PutOperationParams> params(new PutOperationParams()); + std::unique_ptr<PutOperationParams> params( + base::MakeUnique<PutOperationParams>()); params->object_store_id = object_store_id; params->value.swap(*value); params->handles.swap(*handles); @@ -1511,7 +1511,7 @@ return; std::unique_ptr<OpenCursorOperationParams> params( - new OpenCursorOperationParams()); + base::MakeUnique<OpenCursorOperationParams>()); params->object_store_id = object_store_id; params->index_id = index_id; params->key_range = std::move(key_range);
diff --git a/content/browser/indexed_db/indexed_db_database.h b/content/browser/indexed_db/indexed_db_database.h index 4a5c98e..538a49b 100644 --- a/content/browser/indexed_db/indexed_db_database.h +++ b/content/browser/indexed_db/indexed_db_database.h
@@ -89,6 +89,9 @@ const IndexedDBKeyPath& key_path, bool auto_increment); void DeleteObjectStore(int64_t transaction_id, int64_t object_store_id); + + // Returns a pointer to a newly created transaction. The object is owned + // by |transaction_coordinator_|. IndexedDBTransaction* CreateTransaction( int64_t transaction_id, IndexedDBConnection* connection,
diff --git a/content/browser/indexed_db/indexed_db_database_unittest.cc b/content/browser/indexed_db/indexed_db_database_unittest.cc index 1f246b2..f9a0183 100644 --- a/content/browser/indexed_db/indexed_db_database_unittest.cc +++ b/content/browser/indexed_db/indexed_db_database_unittest.cc
@@ -77,7 +77,7 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id1 = 1; std::unique_ptr<IndexedDBPendingConnection> connection1( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( request1, callbacks1, kFakeChildProcessId, transaction_id1, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); db->OpenConnection(std::move(connection1)); @@ -89,7 +89,7 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id2 = 2; std::unique_ptr<IndexedDBPendingConnection> connection2( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( request2, callbacks2, kFakeChildProcessId, transaction_id2, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); db->OpenConnection(std::move(connection2)); @@ -131,7 +131,7 @@ scoped_refptr<MockIndexedDBCallbacks> request(new MockIndexedDBCallbacks()); const int64_t upgrade_transaction_id = 3; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( request, callbacks, kFakeChildProcessId, upgrade_transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); database->OpenConnection(std::move(connection)); @@ -193,7 +193,7 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id1 = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( request1, callbacks1, kFakeChildProcessId, transaction_id1, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); db->OpenConnection(std::move(connection)); @@ -251,13 +251,13 @@ callbacks_ = new MockIndexedDBDatabaseCallbacks(); const int64_t transaction_id = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( request_, callbacks_, kFakeChildProcessId, transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); db_->OpenConnection(std::move(connection)); EXPECT_EQ(IndexedDBDatabaseMetadata::NO_VERSION, db_->metadata().version); - connection_ = base::WrapUnique(new IndexedDBConnection(db_, callbacks_)); + connection_ = base::MakeUnique<IndexedDBConnection>(db_, callbacks_); transaction_ = IndexedDBClassFactory::Get()->CreateIndexedDBTransaction( transaction_id, connection_->GetWeakPtr(), std::set<int64_t>() /*scope*/, @@ -398,7 +398,7 @@ // Put is asynchronous IndexedDBValue value("value1", std::vector<IndexedDBBlobInfo>()); ScopedVector<storage::BlobDataHandle> handles; - std::unique_ptr<IndexedDBKey> key(new IndexedDBKey("key")); + std::unique_ptr<IndexedDBKey> key(base::MakeUnique<IndexedDBKey>("key")); std::vector<IndexedDBDatabase::IndexKeys> index_keys; scoped_refptr<MockIndexedDBCallbacks> request( new MockIndexedDBCallbacks(false));
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host.cc b/content/browser/indexed_db/indexed_db_dispatcher_host.cc index 5db13938..af11223d 100644 --- a/content/browser/indexed_db/indexed_db_dispatcher_host.cc +++ b/content/browser/indexed_db/indexed_db_dispatcher_host.cc
@@ -65,8 +65,8 @@ request_context_(NULL), indexed_db_context_(indexed_db_context), blob_storage_context_(blob_storage_context), - database_dispatcher_host_(new DatabaseDispatcherHost(this)), - cursor_dispatcher_host_(new CursorDispatcherHost(this)), + database_dispatcher_host_(base::MakeUnique<DatabaseDispatcherHost>(this)), + cursor_dispatcher_host_(base::MakeUnique<CursorDispatcherHost>(this)), ipc_process_id_(ipc_process_id) { DCHECK(indexed_db_context_.get()); } @@ -80,16 +80,13 @@ request_context_(request_context), indexed_db_context_(indexed_db_context), blob_storage_context_(blob_storage_context), - database_dispatcher_host_(new DatabaseDispatcherHost(this)), - cursor_dispatcher_host_(new CursorDispatcherHost(this)), + database_dispatcher_host_(base::MakeUnique<DatabaseDispatcherHost>(this)), + cursor_dispatcher_host_(base::MakeUnique<CursorDispatcherHost>(this)), ipc_process_id_(ipc_process_id) { DCHECK(indexed_db_context_.get()); } -IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { - for (auto& iter : blob_data_handle_map_) - delete iter.second.first; -} +IndexedDBDispatcherHost::~IndexedDBDispatcherHost() {} void IndexedDBDispatcherHost::OnChannelConnected(int32_t peer_pid) { BrowserMessageFilter::OnChannelConnected(peer_pid); @@ -261,24 +258,23 @@ } DCHECK(!base::ContainsKey(blob_data_handle_map_, uuid)); - blob_data_handle_map_[uuid] = std::make_pair(blob_data_handle.release(), 1); + blob_data_handle_map_[uuid] = std::make_pair(std::move(blob_data_handle), 1); return uuid; } void IndexedDBDispatcherHost::DropBlobData(const std::string& uuid) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - BlobDataHandleMap::iterator iter = blob_data_handle_map_.find(uuid); - if (iter != blob_data_handle_map_.end()) { - DCHECK_GE(iter->second.second, 1); - if (iter->second.second == 1) { - delete iter->second.first; - blob_data_handle_map_.erase(iter); - } else { - iter->second.second -= 1; - } - } else { + const auto& iter = blob_data_handle_map_.find(uuid); + if (iter == blob_data_handle_map_.end()) { DLOG(FATAL) << "Failed to find blob UUID in map:" << uuid; + return; } + + DCHECK_GE(iter->second.second, 1); + if (iter->second.second == 1) + blob_data_handle_map_.erase(iter); + else + --iter->second.second; } IndexedDBCursor* IndexedDBDispatcherHost::GetCursorFromId( @@ -380,9 +376,9 @@ new IndexedDBDatabaseCallbacks( this, params.ipc_thread_id, params.ipc_database_callbacks_id); std::unique_ptr<IndexedDBPendingConnection> connection = - base::WrapUnique(new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( callbacks, database_callbacks, ipc_process_id_, host_transaction_id, - params.version)); + params.version); DCHECK(request_context_); context()->GetIDBFactory()->Open(params.name, std::move(connection), request_context_, params.origin, @@ -693,8 +689,7 @@ parent_, params.ipc_thread_id, params.ipc_callbacks_id)); connection->database()->Get( parent_->HostTransactionId(params.transaction_id), params.object_store_id, - params.index_id, - base::WrapUnique(new IndexedDBKeyRange(params.key_range)), + params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), params.key_only, callbacks); } @@ -710,8 +705,7 @@ parent_, params.ipc_thread_id, params.ipc_callbacks_id)); connection->database()->GetAll( parent_->HostTransactionId(params.transaction_id), params.object_store_id, - params.index_id, - base::WrapUnique(new IndexedDBKeyRange(params.key_range)), + params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), params.key_only, params.max_count, callbacks); } @@ -783,7 +777,7 @@ value.blob_info.swap(blob_info); connection->database()->Put(host_transaction_id, params.object_store_id, &value, &scoped_handles, - base::WrapUnique(new IndexedDBKey(params.key)), + base::MakeUnique<IndexedDBKey>(params.key), params.put_mode, callbacks, params.index_keys); // Size can't be big enough to overflow because it represents the // actual bytes passed through IPC. @@ -802,8 +796,7 @@ parent_->HostTransactionId(params.transaction_id); connection->database()->SetIndexKeys( host_transaction_id, params.object_store_id, - base::WrapUnique(new IndexedDBKey(params.primary_key)), - params.index_keys); + base::MakeUnique<IndexedDBKey>(params.primary_key), params.index_keys); } void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexesReady( @@ -833,8 +826,7 @@ parent_, params.ipc_thread_id, params.ipc_callbacks_id, -1)); connection->database()->OpenCursor( parent_->HostTransactionId(params.transaction_id), params.object_store_id, - params.index_id, - base::WrapUnique(new IndexedDBKeyRange(params.key_range)), + params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), params.direction, params.key_only, params.task_type, callbacks); } @@ -850,8 +842,8 @@ parent_, params.ipc_thread_id, params.ipc_callbacks_id)); connection->database()->Count( parent_->HostTransactionId(params.transaction_id), params.object_store_id, - params.index_id, - base::WrapUnique(new IndexedDBKeyRange(params.key_range)), callbacks); + params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), + callbacks); } void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDeleteRange( @@ -866,7 +858,7 @@ parent_, params.ipc_thread_id, params.ipc_callbacks_id)); connection->database()->DeleteRange( parent_->HostTransactionId(params.transaction_id), params.object_store_id, - base::WrapUnique(new IndexedDBKeyRange(params.key_range)), callbacks); + base::MakeUnique<IndexedDBKeyRange>(params.key_range), callbacks); } void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnClear( @@ -1051,10 +1043,10 @@ if (!idb_cursor) return; - idb_cursor->Continue(key.IsValid() ? base::WrapUnique(new IndexedDBKey(key)) + idb_cursor->Continue(key.IsValid() ? base::MakeUnique<IndexedDBKey>(key) : std::unique_ptr<IndexedDBKey>(), primary_key.IsValid() - ? base::WrapUnique(new IndexedDBKey(primary_key)) + ? base::MakeUnique<IndexedDBKey>(primary_key) : std::unique_ptr<IndexedDBKey>(), new IndexedDBCallbacks(parent_, ipc_thread_id, ipc_callbacks_id, ipc_cursor_id));
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host.h b/content/browser/indexed_db/indexed_db_dispatcher_host.h index 952e7db7..11a2f4e5 100644 --- a/content/browser/indexed_db/indexed_db_dispatcher_host.h +++ b/content/browser/indexed_db/indexed_db_dispatcher_host.h
@@ -125,8 +125,6 @@ friend class base::DeleteHelper<IndexedDBDispatcherHost>; // Used in nested classes. - typedef std::map<std::string, std::pair<storage::BlobDataHandle*, int>> - BlobDataHandleMap; typedef std::map<int64_t, int64_t> TransactionIDToDatabaseIDMap; typedef std::map<int64_t, uint64_t> TransactionIDToSizeMap; typedef std::map<int64_t, url::Origin> TransactionIDToOriginMap; @@ -307,7 +305,12 @@ scoped_refptr<IndexedDBContextImpl> indexed_db_context_; scoped_refptr<ChromeBlobStorageContext> blob_storage_context_; - BlobDataHandleMap blob_data_handle_map_; + // Maps blob uuid to a pair (handle, ref count). Entry is added and/or count + // is incremented in HoldBlobData(), and count is decremented and/or entry + // removed in DropBlobData(). + std::map<std::string, + std::pair<std::unique_ptr<storage::BlobDataHandle>, int>> + blob_data_handle_map_; // Only access on IndexedDB thread. std::unique_ptr<DatabaseDispatcherHost> database_dispatcher_host_;
diff --git a/content/browser/indexed_db/indexed_db_factory_unittest.cc b/content/browser/indexed_db/indexed_db_factory_unittest.cc index bc57a9d..c4b70a17 100644 --- a/content/browser/indexed_db/indexed_db_factory_unittest.cc +++ b/content/browser/indexed_db/indexed_db_factory_unittest.cc
@@ -43,7 +43,7 @@ bool disk_full; leveldb::Status s; scoped_refptr<IndexedDBBackingStore> backing_store = - OpenBackingStore(origin, data_directory, NULL /* request_context */, + OpenBackingStore(origin, data_directory, nullptr /* request_context */, &data_loss_info, &disk_full, &s); EXPECT_EQ(blink::WebIDBDataLossNone, data_loss_info.status); return backing_store; @@ -72,7 +72,7 @@ task_runner_ = new base::TestSimpleTaskRunner(); quota_manager_proxy_ = new MockQuotaManagerProxy(nullptr, nullptr); context_ = new IndexedDBContextImpl( - base::FilePath(), NULL /* special_storage_policy */, + base::FilePath(), nullptr /* special_storage_policy */, quota_manager_proxy_.get(), task_runner_.get()); idb_factory_ = new MockIDBFactory(context_.get()); } @@ -85,7 +85,7 @@ base::MessageLoop loop_; MockIDBFactory* factory() const { return idb_factory_.get(); } - void clear_factory() { idb_factory_ = NULL; } + void clear_factory() { idb_factory_ = nullptr; } IndexedDBContextImpl* context() const { return context_.get(); } private: @@ -119,7 +119,7 @@ EXPECT_FALSE(disk_store2->HasOneRef()); EXPECT_TRUE(disk_store3->HasOneRef()); - disk_store2 = NULL; + disk_store2 = nullptr; EXPECT_TRUE(disk_store1->HasOneRef()); } @@ -134,7 +134,7 @@ // Give up the local refptr so that the factory has the only // outstanding reference. IndexedDBBackingStore* store_ptr = store.get(); - store = NULL; + store = nullptr; EXPECT_FALSE(store_ptr->close_timer()->IsRunning()); factory()->TestReleaseBackingStore(store_ptr, false); EXPECT_TRUE(store_ptr->close_timer()->IsRunning()); @@ -177,7 +177,7 @@ EXPECT_FALSE(mem_store2->HasOneRef()); // mem_store1 and 2 EXPECT_TRUE(mem_store3->HasOneRef()); - mem_store2 = NULL; + mem_store2 = nullptr; EXPECT_TRUE(mem_store1->HasOneRef()); } @@ -228,7 +228,7 @@ class LookingForQuotaErrorMockCallbacks : public IndexedDBCallbacks { public: LookingForQuotaErrorMockCallbacks() - : IndexedDBCallbacks(NULL, 0, 0), error_called_(false) {} + : IndexedDBCallbacks(nullptr, 0, 0), error_called_(false) {} void OnError(const IndexedDBDatabaseError& error) override { error_called_ = true; EXPECT_EQ(blink::WebIDBDatabaseExceptionQuotaError, error.code()); @@ -251,15 +251,14 @@ scoped_refptr<LookingForQuotaErrorMockCallbacks> callbacks = new LookingForQuotaErrorMockCallbacks; scoped_refptr<IndexedDBDatabaseCallbacks> dummy_database_callbacks = - new IndexedDBDatabaseCallbacks(NULL, 0, 0); + new IndexedDBDatabaseCallbacks(nullptr, 0, 0); const base::string16 name(ASCIIToUTF16("name")); std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection(callbacks, dummy_database_callbacks, - 0, /* child_process_id */ - 2, /* transaction_id */ - 1 /* version */)); - factory->Open(name, std::move(connection), NULL /* request_context */, origin, - temp_directory.path()); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, dummy_database_callbacks, 0 /* child_process_id */, + 2 /* transaction_id */, 1 /* version */)); + factory->Open(name, std::move(connection), nullptr /* request_context */, + origin, temp_directory.path()); EXPECT_TRUE(callbacks->error_called()); } @@ -274,11 +273,11 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( - callbacks, db_callbacks, 0, /* child_process_id */ - transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, + IndexedDBDatabaseMetadata::DEFAULT_VERSION)); factory()->Open(ASCIIToUTF16("db"), std::move(connection), - NULL /* request_context */, origin, temp_directory.path()); + nullptr /* request_context */, origin, temp_directory.path()); EXPECT_TRUE(callbacks->connection()); @@ -302,11 +301,11 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( - callbacks, db_callbacks, 0, /* child_process_id */ - transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, + IndexedDBDatabaseMetadata::DEFAULT_VERSION)); factory()->Open(ASCIIToUTF16("db"), std::move(connection), - NULL /* request_context */, origin, temp_directory.path()); + nullptr /* request_context */, origin, temp_directory.path()); EXPECT_TRUE(callbacks->connection()); IndexedDBBackingStore* store = @@ -341,7 +340,7 @@ const bool expect_connection = false; scoped_refptr<MockIndexedDBCallbacks> callbacks( new MockIndexedDBCallbacks(expect_connection)); - factory()->DeleteDatabase(ASCIIToUTF16("db"), NULL /* request_context */, + factory()->DeleteDatabase(ASCIIToUTF16("db"), nullptr /* request_context */, callbacks, origin, temp_directory.path()); EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); @@ -366,7 +365,7 @@ scoped_refptr<MockIndexedDBCallbacks> callbacks( new MockIndexedDBCallbacks(expect_connection)); factory()->GetDatabaseNames(callbacks, origin, temp_directory.path(), - NULL /* request_context */); + nullptr /* request_context */); EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); EXPECT_TRUE(factory()->IsBackingStorePendingClose(origin)); @@ -389,11 +388,11 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( - callbacks, db_callbacks, 0, /* child_process_id */ - transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, + IndexedDBDatabaseMetadata::DEFAULT_VERSION)); factory()->Open(ASCIIToUTF16("db"), std::move(connection), - NULL /* request_context */, origin, temp_directory.path()); + nullptr /* request_context */, origin, temp_directory.path()); EXPECT_TRUE(callbacks->connection()); EXPECT_TRUE(factory()->IsBackingStoreOpen(origin)); @@ -470,11 +469,12 @@ scoped_refptr<MockIndexedDBCallbacks> callbacks( new UpgradeNeededCallbacks()); std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection(callbacks, db_callbacks, - 0, /* child_process_id */ - transaction_id, db_version)); - factory()->Open(db_name, std::move(connection), NULL /* request_context */, - origin, temp_directory.path()); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, + db_version)); + factory()->Open(db_name, std::move(connection), + nullptr /* request_context */, origin, + temp_directory.path()); EXPECT_TRUE(factory()->IsDatabaseOpen(origin, db_name)); // Pump the message loop so the upgrade transaction can run. @@ -491,11 +491,12 @@ { scoped_refptr<ErrorCallbacks> callbacks(new ErrorCallbacks()); std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection(callbacks, db_callbacks, - 0, /* child_process_id */ - transaction_id, db_version - 1)); - factory()->Open(db_name, std::move(connection), NULL /* request_context */, - origin, temp_directory.path()); + base::MakeUnique<IndexedDBPendingConnection>( + callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, + db_version - 1)); + factory()->Open(db_name, std::move(connection), + nullptr /* request_context */, origin, + temp_directory.path()); EXPECT_TRUE(callbacks->saw_error()); EXPECT_FALSE(factory()->IsDatabaseOpen(origin, db_name)); }
diff --git a/content/browser/indexed_db/indexed_db_index_writer.cc b/content/browser/indexed_db/indexed_db_index_writer.cc index 2c60d7e..7cf0605 100644 --- a/content/browser/indexed_db/indexed_db_index_writer.cc +++ b/content/browser/indexed_db/indexed_db_index_writer.cc
@@ -146,7 +146,8 @@ if (key_was_generated && (index.key_path == object_store.key_path)) keys.second.push_back(primary_key); - std::unique_ptr<IndexWriter> index_writer(new IndexWriter(index, keys)); + std::unique_ptr<IndexWriter> index_writer( + base::MakeUnique<IndexWriter>(index, keys)); bool can_add_keys = false; bool backing_store_success = index_writer->VerifyIndexKeys(backing_store,
diff --git a/content/browser/indexed_db/indexed_db_leveldb_coding.cc b/content/browser/indexed_db/indexed_db_leveldb_coding.cc index 42188a9..5c8e1cbf0 100644 --- a/content/browser/indexed_db/indexed_db_leveldb_coding.cc +++ b/content/browser/indexed_db/indexed_db_leveldb_coding.cc
@@ -376,7 +376,7 @@ switch (type) { case kIndexedDBKeyNullTypeByte: - *value = base::WrapUnique(new IndexedDBKey()); + *value = base::MakeUnique<IndexedDBKey>(); return true; case kIndexedDBKeyArrayTypeByte: { @@ -390,35 +390,35 @@ return false; array.push_back(*key); } - *value = base::WrapUnique(new IndexedDBKey(array)); + *value = base::MakeUnique<IndexedDBKey>(array); return true; } case kIndexedDBKeyBinaryTypeByte: { std::string binary; if (!DecodeBinary(slice, &binary)) return false; - *value = base::WrapUnique(new IndexedDBKey(binary)); + *value = base::MakeUnique<IndexedDBKey>(binary); return true; } case kIndexedDBKeyStringTypeByte: { base::string16 s; if (!DecodeStringWithLength(slice, &s)) return false; - *value = base::WrapUnique(new IndexedDBKey(s)); + *value = base::MakeUnique<IndexedDBKey>(s); return true; } case kIndexedDBKeyDateTypeByte: { double d; if (!DecodeDouble(slice, &d)) return false; - *value = base::WrapUnique(new IndexedDBKey(d, WebIDBKeyTypeDate)); + *value = base::MakeUnique<IndexedDBKey>(d, WebIDBKeyTypeDate); return true; } case kIndexedDBKeyNumberTypeByte: { double d; if (!DecodeDouble(slice, &d)) return false; - *value = base::WrapUnique(new IndexedDBKey(d, WebIDBKeyTypeNumber)); + *value = base::MakeUnique<IndexedDBKey>(d, WebIDBKeyTypeNumber); return true; } }
diff --git a/content/browser/indexed_db/indexed_db_transaction.cc b/content/browser/indexed_db/indexed_db_transaction.cc index 6b0df34..5040ddd 100644 --- a/content/browser/indexed_db/indexed_db_transaction.cc +++ b/content/browser/indexed_db/indexed_db_transaction.cc
@@ -468,8 +468,8 @@ void IndexedDBTransaction::AddPendingObserver( int32_t observer_id, const IndexedDBObserver::Options& options) { - pending_observers_.push_back(base::WrapUnique( - new IndexedDBObserver(observer_id, object_store_ids_, options))); + pending_observers_.push_back(base::MakeUnique<IndexedDBObserver>( + observer_id, object_store_ids_, options)); } void IndexedDBTransaction::RemovePendingObservers( @@ -490,8 +490,7 @@ if (it == connection_changes_map_.end()) { it = connection_changes_map_ .insert(std::make_pair( - connection_id, - base::WrapUnique(new IndexedDBObserverChanges()))) + connection_id, base::MakeUnique<IndexedDBObserverChanges>())) .first; } it->second->AddObservation(std::move(observation));
diff --git a/content/browser/indexed_db/indexed_db_transaction_unittest.cc b/content/browser/indexed_db/indexed_db_transaction_unittest.cc index 7073d12..0308cbb 100644 --- a/content/browser/indexed_db/indexed_db_transaction_unittest.cc +++ b/content/browser/indexed_db/indexed_db_transaction_unittest.cc
@@ -89,7 +89,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_success = leveldb::Status::OK(); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, blink::WebIDBTransactionModeReadWrite, @@ -132,7 +133,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_success = leveldb::Status::OK(); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, blink::WebIDBTransactionModeReadOnly, new IndexedDBFakeBackingStore::FakeTransaction(commit_success)); @@ -162,7 +164,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_success = leveldb::Status::OK(); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, GetParam(), new IndexedDBFakeBackingStore::FakeTransaction(commit_success)); @@ -222,7 +225,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_failure = leveldb::Status::Corruption("Ouch."); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, blink::WebIDBTransactionModeVersionChange, @@ -282,7 +286,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_failure = leveldb::Status::Corruption("Ouch."); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, GetParam(), new IndexedDBFakeBackingStore::FakeTransaction(commit_failure)); @@ -310,7 +315,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_success = leveldb::Status::OK(); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, GetParam(), new IndexedDBFakeBackingStore::FakeTransaction(commit_success)); @@ -359,7 +365,8 @@ const std::set<int64_t> scope; const leveldb::Status commit_success = leveldb::Status::OK(); std::unique_ptr<IndexedDBConnection> connection( - new IndexedDBConnection(db_, new MockIndexedDBDatabaseCallbacks())); + base::MakeUnique<IndexedDBConnection>( + db_, new MockIndexedDBDatabaseCallbacks())); scoped_refptr<IndexedDBTransaction> transaction = new IndexedDBTransaction( id, connection->GetWeakPtr(), scope, blink::WebIDBTransactionModeReadWrite,
diff --git a/content/browser/indexed_db/indexed_db_unittest.cc b/content/browser/indexed_db/indexed_db_unittest.cc index 88ceb26..a4b1f8ce 100644 --- a/content/browser/indexed_db/indexed_db_unittest.cc +++ b/content/browser/indexed_db/indexed_db_unittest.cc
@@ -136,7 +136,7 @@ public: ForceCloseDBCallbacks(scoped_refptr<IndexedDBContextImpl> idb_context, const Origin& origin) - : IndexedDBCallbacks(NULL, 0, 0), + : IndexedDBCallbacks(nullptr, 0, 0), idb_context_(idb_context), origin_(origin) {} @@ -194,18 +194,18 @@ test_path = idb_context->GetFilePathForTesting(kTestOrigin); std::unique_ptr<IndexedDBPendingConnection> open_connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( open_callbacks, open_db_callbacks, 0 /* child_process_id */, 0 /* host_transaction_id */, 0 /* version */)); factory->Open(base::ASCIIToUTF16("opendb"), std::move(open_connection), - NULL /* request_context */, Origin(kTestOrigin), + nullptr /* request_context */, Origin(kTestOrigin), idb_context->data_path()); std::unique_ptr<IndexedDBPendingConnection> closed_connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( closed_callbacks, closed_db_callbacks, 0 /* child_process_id */, 0 /* host_transaction_id */, 0 /* version */)); factory->Open(base::ASCIIToUTF16("closeddb"), std::move(closed_connection), - NULL /* request_context */, Origin(kTestOrigin), + nullptr /* request_context */, Origin(kTestOrigin), idb_context->data_path()); closed_callbacks->connection()->Close(); @@ -273,11 +273,11 @@ new MockIndexedDBDatabaseCallbacks()); const int64_t transaction_id = 1; std::unique_ptr<IndexedDBPendingConnection> connection( - new IndexedDBPendingConnection( + base::MakeUnique<IndexedDBPendingConnection>( callbacks, db_callbacks, 0 /* child_process_id */, transaction_id, IndexedDBDatabaseMetadata::DEFAULT_VERSION)); factory->Open(base::ASCIIToUTF16("db"), std::move(connection), - NULL /* request_context */, Origin(kTestOrigin), + nullptr /* request_context */, Origin(kTestOrigin), temp_dir.path()); EXPECT_TRUE(callbacks->connection());
diff --git a/content/browser/indexed_db/leveldb/leveldb_database.cc b/content/browser/indexed_db/leveldb/leveldb_database.cc index 572f365..9dd215c9 100644 --- a/content/browser/indexed_db/leveldb/leveldb_database.cc +++ b/content/browser/indexed_db/leveldb/leveldb_database.cc
@@ -116,7 +116,7 @@ leveldb::Comparator* comparator, leveldb::Env* env, const base::FilePath& path, - leveldb::DB** db, + std::unique_ptr<leveldb::DB>* db, std::unique_ptr<const leveldb::FilterPolicy>* filter_policy) { filter_policy->reset(leveldb::NewBloomFilterPolicy(10)); leveldb::Options options; @@ -133,7 +133,9 @@ options.env = env; // ChromiumEnv assumes UTF8, converts back to FilePath before using. - leveldb::Status s = leveldb::DB::Open(options, path.AsUTF8Unsafe(), db); + leveldb::DB* db_ptr = nullptr; + leveldb::Status s = leveldb::DB::Open(options, path.AsUTF8Unsafe(), &db_ptr); + db->reset(db_ptr); return s; } @@ -169,7 +171,7 @@ if (!status.ok()) return std::unique_ptr<LevelDBLock>(); DCHECK(lock); - return std::unique_ptr<LevelDBLock>(new LockImpl(env, lock)); + return base::MakeUnique<LockImpl>(env, lock); } static int CheckFreeSpace(const char* const type, @@ -289,9 +291,9 @@ base::TimeTicks begin_time = base::TimeTicks::Now(); std::unique_ptr<ComparatorAdapter> comparator_adapter( - new ComparatorAdapter(comparator)); + base::MakeUnique<ComparatorAdapter>(comparator)); - leveldb::DB* db; + std::unique_ptr<leveldb::DB> db; std::unique_ptr<const leveldb::FilterPolicy> filter_policy; const leveldb::Status s = OpenDB(comparator_adapter.get(), LevelDBEnv::Get(), file_name, &db, &filter_policy); @@ -314,8 +316,8 @@ CheckFreeSpace("Success", file_name); - (*result).reset(new LevelDBDatabase); - (*result)->db_ = base::WrapUnique(db); + (*result) = base::WrapUnique(new LevelDBDatabase()); + (*result)->db_ = std::move(db); (*result)->comparator_adapter_ = std::move(comparator_adapter); (*result)->comparator_ = comparator; (*result)->filter_policy_ = std::move(filter_policy); @@ -327,11 +329,11 @@ std::unique_ptr<LevelDBDatabase> LevelDBDatabase::OpenInMemory( const LevelDBComparator* comparator) { std::unique_ptr<ComparatorAdapter> comparator_adapter( - new ComparatorAdapter(comparator)); + base::MakeUnique<ComparatorAdapter>(comparator)); std::unique_ptr<leveldb::Env> in_memory_env( leveldb::NewMemEnv(LevelDBEnv::Get())); - leveldb::DB* db; + std::unique_ptr<leveldb::DB> db; std::unique_ptr<const leveldb::FilterPolicy> filter_policy; const leveldb::Status s = OpenDB(comparator_adapter.get(), in_memory_env.get(), @@ -344,9 +346,10 @@ return std::unique_ptr<LevelDBDatabase>(); } - std::unique_ptr<LevelDBDatabase> result(new LevelDBDatabase); + std::unique_ptr<LevelDBDatabase> result = + base::WrapUnique(new LevelDBDatabase()); result->env_ = std::move(in_memory_env); - result->db_ = base::WrapUnique(db); + result->db_ = std::move(db); result->comparator_adapter_ = std::move(comparator_adapter); result->comparator_ = comparator; result->filter_policy_ = std::move(filter_policy);
diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.cc b/content/browser/indexed_db/leveldb/leveldb_transaction.cc index a42f3c3..5db5b43 100644 --- a/content/browser/indexed_db/leveldb/leveldb_transaction.cc +++ b/content/browser/indexed_db/leveldb/leveldb_transaction.cc
@@ -28,13 +28,7 @@ LevelDBTransaction::Record::Record() : deleted(false) {} LevelDBTransaction::Record::~Record() {} -void LevelDBTransaction::Clear() { - for (const auto& it : data_) - delete it.second; - data_.clear(); -} - -LevelDBTransaction::~LevelDBTransaction() { Clear(); } +LevelDBTransaction::~LevelDBTransaction() {} bool LevelDBTransaction::Set(const StringPiece& key, std::string* value, @@ -43,11 +37,11 @@ DataType::iterator it = data_.find(key); if (it == data_.end()) { - Record* record = new Record(); + std::unique_ptr<Record> record = base::MakeUnique<Record>(); record->key.assign(key.begin(), key.end() - key.begin()); record->value.swap(*value); record->deleted = deleted; - data_[record->key] = record; + data_[record->key] = std::move(record); NotifyIterators(); return false; } @@ -107,8 +101,6 @@ write_batch->Put(it->first, it->second->value); else write_batch->Remove(it->first); - - delete it->second; data_.erase(it++); } @@ -126,7 +118,7 @@ void LevelDBTransaction::Rollback() { DCHECK(!finished_); finished_ = true; - Clear(); + data_.clear(); } std::unique_ptr<LevelDBIterator> LevelDBTransaction::CreateIterator() {
diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.h b/content/browser/indexed_db/leveldb/leveldb_transaction.h index 91ae38b..33392f2 100644 --- a/content/browser/indexed_db/leveldb/leveldb_transaction.h +++ b/content/browser/indexed_db/leveldb/leveldb_transaction.h
@@ -70,7 +70,8 @@ const LevelDBComparator* comparator_; }; - typedef std::map<base::StringPiece, Record*, Comparator> DataType; + typedef std::map<base::StringPiece, std::unique_ptr<Record>, Comparator> + DataType; class DataIterator : public LevelDBIterator { public: @@ -134,7 +135,6 @@ }; // Returns true if the key was originally marked deleted, false otherwise. bool Set(const base::StringPiece& key, std::string* value, bool deleted); - void Clear(); void RegisterIterator(TransactionIterator* iterator); void UnregisterIterator(TransactionIterator* iterator); void NotifyIterators();
diff --git a/content/browser/indexed_db/list_set_unittest.cc b/content/browser/indexed_db/list_set_unittest.cc index 293330da..64248664 100644 --- a/content/browser/indexed_db/list_set_unittest.cc +++ b/content/browser/indexed_db/list_set_unittest.cc
@@ -6,6 +6,7 @@ #include <memory> +#include "base/memory/ptr_util.h" #include "base/memory/ref_counted.h" #include "testing/gtest/include/gtest/gtest.h" @@ -148,9 +149,9 @@ } TEST(ListSetTest, ListSetPointer) { - std::unique_ptr<Wrapped<int>> w0(new Wrapped<int>(0)); - std::unique_ptr<Wrapped<int>> w1(new Wrapped<int>(1)); - std::unique_ptr<Wrapped<int>> w2(new Wrapped<int>(2)); + std::unique_ptr<Wrapped<int>> w0 = base::MakeUnique<Wrapped<int>>(0); + std::unique_ptr<Wrapped<int>> w1 = base::MakeUnique<Wrapped<int>>(1); + std::unique_ptr<Wrapped<int>> w2 = base::MakeUnique<Wrapped<int>>(2); list_set<Wrapped<int>*> set; EXPECT_EQ(0u, set.size());
diff --git a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc index ec3ef6d..4740a98 100644 --- a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc +++ b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.cc
@@ -9,6 +9,7 @@ #include <utility> #include "base/logging.h" +#include "base/memory/ptr_util.h" #include "content/browser/indexed_db/indexed_db_transaction.h" #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" #include "content/browser/indexed_db/leveldb/leveldb_transaction.h" @@ -252,7 +253,7 @@ MockBrowserTestIndexedDBClassFactory::~MockBrowserTestIndexedDBClassFactory() { } -IndexedDBDatabase* +scoped_refptr<IndexedDBDatabase> MockBrowserTestIndexedDBClassFactory::CreateIndexedDBDatabase( const base::string16& name, IndexedDBBackingStore* backing_store, @@ -273,7 +274,7 @@ backing_store_transaction); } -LevelDBTransaction* +scoped_refptr<LevelDBTransaction> MockBrowserTestIndexedDBClassFactory::CreateLevelDBTransaction( LevelDBDatabase* db) { instance_count_[FAIL_CLASS_LEVELDB_TRANSACTION] = @@ -295,22 +296,23 @@ } } -LevelDBIteratorImpl* MockBrowserTestIndexedDBClassFactory::CreateIteratorImpl( +std::unique_ptr<LevelDBIteratorImpl> +MockBrowserTestIndexedDBClassFactory::CreateIteratorImpl( std::unique_ptr<leveldb::Iterator> iterator) { instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] = instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] + 1; if (only_trace_calls_) { - return new LevelDBTraceIteratorImpl( + return base::MakeUnique<LevelDBTraceIteratorImpl>( std::move(iterator), instance_count_[FAIL_CLASS_LEVELDB_ITERATOR]); } else { if (failure_class_ == FAIL_CLASS_LEVELDB_ITERATOR && instance_count_[FAIL_CLASS_LEVELDB_ITERATOR] == fail_on_instance_num_[FAIL_CLASS_LEVELDB_ITERATOR]) { - return new LevelDBTestIteratorImpl( + return base::MakeUnique<LevelDBTestIteratorImpl>( std::move(iterator), failure_method_, fail_on_call_num_[FAIL_CLASS_LEVELDB_ITERATOR]); } else { - return new LevelDBIteratorImpl(std::move(iterator)); + return base::WrapUnique(new LevelDBIteratorImpl(std::move(iterator))); } } }
diff --git a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h index 2f91516..3f4296f 100644 --- a/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h +++ b/content/browser/indexed_db/mock_browsertest_indexed_db_class_factory.h
@@ -41,7 +41,7 @@ MockBrowserTestIndexedDBClassFactory(); ~MockBrowserTestIndexedDBClassFactory() override; - IndexedDBDatabase* CreateIndexedDBDatabase( + scoped_refptr<IndexedDBDatabase> CreateIndexedDBDatabase( const base::string16& name, IndexedDBBackingStore* backing_store, IndexedDBFactory* factory, @@ -52,8 +52,9 @@ const std::set<int64_t>& scope, blink::WebIDBTransactionMode mode, IndexedDBBackingStore::Transaction* backing_store_transaction) override; - LevelDBTransaction* CreateLevelDBTransaction(LevelDBDatabase* db) override; - LevelDBIteratorImpl* CreateIteratorImpl( + scoped_refptr<LevelDBTransaction> CreateLevelDBTransaction( + LevelDBDatabase* db) override; + std::unique_ptr<LevelDBIteratorImpl> CreateIteratorImpl( std::unique_ptr<leveldb::Iterator> iterator) override; void FailOperation(FailClass failure_class,
diff --git a/content/browser/media/android/media_resource_getter_impl.cc b/content/browser/media/android/media_resource_getter_impl.cc index 82290f2..662bcf32 100644 --- a/content/browser/media/android/media_resource_getter_impl.cc +++ b/content/browser/media/android/media_resource_getter_impl.cc
@@ -7,6 +7,7 @@ #include "base/android/context_utils.h" #include "base/android/jni_android.h" #include "base/android/jni_string.h" +#include "base/android/scoped_java_ref.h" #include "base/bind.h" #include "base/macros.h" #include "base/path_service.h" @@ -36,6 +37,7 @@ #include "url/gurl.h" using base::android::ConvertUTF8ToJavaString; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; namespace content { @@ -102,13 +104,13 @@ const media::MediaResourceGetter::ExtractMediaMetadataCB& callback, JNIEnv* env, ScopedJavaLocalRef<jobject>& j_metadata) { BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::Bind(callback, base::TimeDelta::FromMilliseconds( - Java_MediaMetadata_getDurationInMilliseconds( - env, j_metadata.obj())), - Java_MediaMetadata_getWidth(env, j_metadata.obj()), - Java_MediaMetadata_getHeight(env, j_metadata.obj()), - Java_MediaMetadata_isSuccess(env, j_metadata.obj()))); + BrowserThread::UI, FROM_HERE, + base::Bind(callback, base::TimeDelta::FromMilliseconds( + Java_MediaMetadata_getDurationInMilliseconds( + env, j_metadata)), + Java_MediaMetadata_getWidth(env, j_metadata), + Java_MediaMetadata_getHeight(env, j_metadata), + Java_MediaMetadata_isSuccess(env, j_metadata))); } // Gets the metadata from a media URL. When finished, a task is posted to the UI @@ -121,15 +123,12 @@ ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(env, cookies); - jobject j_context = base::android::GetApplicationContext(); + const JavaRef<jobject>& j_context = base::android::GetApplicationContext(); ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( env, user_agent); ScopedJavaLocalRef<jobject> j_metadata = - Java_MediaResourceGetter_extractMediaMetadata(env, - j_context, - j_url_string.obj(), - j_cookies.obj(), - j_user_agent.obj()); + Java_MediaResourceGetter_extractMediaMetadata( + env, j_context, j_url_string, j_cookies, j_user_agent); PostMediaMetadataCallbackTask(callback, env, j_metadata); }
diff --git a/content/browser/media/android/media_throttler.cc b/content/browser/media/android/media_throttler.cc index 0c9b0a4..1782373 100644 --- a/content/browser/media/android/media_throttler.cc +++ b/content/browser/media/android/media_throttler.cc
@@ -19,18 +19,17 @@ bool MediaThrottler::RequestDecoderResources() { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MediaThrottler_requestDecoderResources( - env, j_media_throttler_.obj()); + return Java_MediaThrottler_requestDecoderResources(env, j_media_throttler_); } void MediaThrottler::OnDecodeRequestFinished() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_MediaThrottler_onDecodeRequestFinished(env, j_media_throttler_.obj()); + Java_MediaThrottler_onDecodeRequestFinished(env, j_media_throttler_); } void MediaThrottler::Reset() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_MediaThrottler_reset(env, j_media_throttler_.obj()); + Java_MediaThrottler_reset(env, j_media_throttler_); } MediaThrottler::MediaThrottler() {
diff --git a/content/browser/media/session/media_session_delegate_android.cc b/content/browser/media/session/media_session_delegate_android.cc index 32ce8f6..0983e42 100644 --- a/content/browser/media/session/media_session_delegate_android.cc +++ b/content/browser/media/session/media_session_delegate_android.cc
@@ -25,7 +25,7 @@ MediaSessionDelegateAndroid::~MediaSessionDelegateAndroid() { JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); - Java_MediaSessionDelegate_tearDown(env, j_media_session_delegate_.obj()); + Java_MediaSessionDelegate_tearDown(env, j_media_session_delegate_); } void MediaSessionDelegateAndroid::Initialize() { @@ -41,15 +41,13 @@ JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); return Java_MediaSessionDelegate_requestAudioFocus( - env, j_media_session_delegate_.obj(), - type == MediaSession::Type::Transient); + env, j_media_session_delegate_, type == MediaSession::Type::Transient); } void MediaSessionDelegateAndroid::AbandonAudioFocus() { JNIEnv* env = base::android::AttachCurrentThread(); DCHECK(env); - Java_MediaSessionDelegate_abandonAudioFocus( - env, j_media_session_delegate_.obj()); + Java_MediaSessionDelegate_abandonAudioFocus(env, j_media_session_delegate_); } void MediaSessionDelegateAndroid::OnSuspend(
diff --git a/content/browser/mojo/interface_registrar_android.cc b/content/browser/mojo/interface_registrar_android.cc index cba21cf5..5d16087 100644 --- a/content/browser/mojo/interface_registrar_android.cc +++ b/content/browser/mojo/interface_registrar_android.cc
@@ -16,7 +16,7 @@ InterfaceRegistryAndroid* registry) { JNIEnv* env = base::android::AttachCurrentThread(); Java_InterfaceRegistrar_exposeInterfacesToRenderer( - env, registry->GetObj().obj(), base::android::GetApplicationContext()); + env, registry->GetObj(), base::android::GetApplicationContext()); } // static @@ -24,6 +24,6 @@ InterfaceRegistryAndroid* registry) { JNIEnv* env = base::android::AttachCurrentThread(); Java_InterfaceRegistrar_exposeInterfacesToFrame( - env, registry->GetObj().obj(), base::android::GetApplicationContext()); + env, registry->GetObj(), base::android::GetApplicationContext()); } } // namespace content
diff --git a/content/browser/renderer_host/ime_adapter_android.cc b/content/browser/renderer_host/ime_adapter_android.cc index a712e54..c1e5b73 100644 --- a/content/browser/renderer_host/ime_adapter_android.cc +++ b/content/browser/renderer_host/ime_adapter_android.cc
@@ -124,7 +124,7 @@ JNIEnv* env = AttachCurrentThread(); base::android::ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env); if (!obj.is_null()) - Java_ImeAdapter_detach(env, obj.obj()); + Java_ImeAdapter_detach(env, obj); } bool ImeAdapterAndroid::SendSyntheticKeyEvent(JNIEnv*, @@ -242,15 +242,14 @@ base::android::ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(AttachCurrentThread()); if (!obj.is_null()) - Java_ImeAdapter_cancelComposition(AttachCurrentThread(), obj.obj()); + Java_ImeAdapter_cancelComposition(AttachCurrentThread(), obj); } void ImeAdapterAndroid::FocusedNodeChanged(bool is_editable_node) { base::android::ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(AttachCurrentThread()); if (!obj.is_null()) { - Java_ImeAdapter_focusedNodeChanged(AttachCurrentThread(), - obj.obj(), + Java_ImeAdapter_focusedNodeChanged(AttachCurrentThread(), obj, is_editable_node); } } @@ -286,11 +285,8 @@ coordinates_array[coordinates_array_index + 3] = rect.bottom(); } Java_ImeAdapter_setCharacterBounds( - env, - obj.obj(), - base::android::ToJavaFloatArray(env, - coordinates_array.get(), - coordinates_array_size).obj()); + env, obj, base::android::ToJavaFloatArray(env, coordinates_array.get(), + coordinates_array_size)); } void ImeAdapterAndroid::SetComposingRegion(JNIEnv*,
diff --git a/content/browser/renderer_host/input/OWNERS b/content/browser/renderer_host/input/OWNERS index 6039fc4..77d8e4d1 100644 --- a/content/browser/renderer_host/input/OWNERS +++ b/content/browser/renderer_host/input/OWNERS
@@ -1,2 +1,4 @@ aelias@chromium.org +dtapuska@chromium.org tdresser@chromium.org +
diff --git a/content/browser/renderer_host/input/synthetic_gesture_target_android.cc b/content/browser/renderer_host/input/synthetic_gesture_target_android.cc index 09f140d..c132d0b 100644 --- a/content/browser/renderer_host/input/synthetic_gesture_target_android.cc +++ b/content/browser/renderer_host/input/synthetic_gesture_target_android.cc
@@ -28,15 +28,15 @@ void SyntheticGestureTargetAndroid::TouchSetPointer( JNIEnv* env, int index, int x, int y, int id) { TRACE_EVENT0("input", "SyntheticGestureTargetAndroid::TouchSetPointer"); - Java_MotionEventSynthesizer_setPointer(env, touch_event_synthesizer_.obj(), - index, x, y, id); + Java_MotionEventSynthesizer_setPointer(env, touch_event_synthesizer_, index, + x, y, id); } void SyntheticGestureTargetAndroid::TouchSetScrollDeltas( JNIEnv* env, int x, int y, int dx, int dy) { TRACE_EVENT0("input", "SyntheticGestureTargetAndroid::TouchSetPointer"); - Java_MotionEventSynthesizer_setScrollDeltas( - env, touch_event_synthesizer_.obj(), x, y, dx, dy); + Java_MotionEventSynthesizer_setScrollDeltas(env, touch_event_synthesizer_, x, + y, dx, dy); } void SyntheticGestureTargetAndroid::TouchInject(JNIEnv* env, @@ -44,9 +44,9 @@ int pointer_count, int64_t time_in_ms) { TRACE_EVENT0("input", "SyntheticGestureTargetAndroid::TouchInject"); - Java_MotionEventSynthesizer_inject(env, touch_event_synthesizer_.obj(), - static_cast<int>(action), pointer_count, - time_in_ms); + Java_MotionEventSynthesizer_inject(env, touch_event_synthesizer_, + static_cast<int>(action), pointer_count, + time_in_ms); } void SyntheticGestureTargetAndroid::DispatchWebTouchEventToPlatform( @@ -87,7 +87,7 @@ TouchSetScrollDeltas(env, web_wheel.x, web_wheel.y, web_wheel.deltaX, web_wheel.deltaY); Java_MotionEventSynthesizer_inject( - env, touch_event_synthesizer_.obj(), + env, touch_event_synthesizer_, static_cast<int>(SyntheticGestureTargetAndroid::ActionScroll), 1, static_cast<int64_t>(web_wheel.timeStampSeconds * 1000.0)); }
diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc index 2f0c2ce..edf3d2f 100644 --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc
@@ -7,7 +7,6 @@ #include <stddef.h> #include "base/bind.h" -#include "base/stl_util.h" #include "content/browser/bad_message.h" #include "content/browser/renderer_host/p2p/socket_host.h" #include "content/common/p2p_messages.h" @@ -121,7 +120,6 @@ void P2PSocketDispatcherHost::OnChannelClosing() { // Since the IPC sender is gone, close pending connections. - base::STLDeleteContainerPairSecondPointers(sockets_.begin(), sockets_.end()); sockets_.clear(); base::STLDeleteContainerPointers(dns_requests_.begin(), dns_requests_.end()); @@ -205,7 +203,7 @@ P2PSocketHost* P2PSocketDispatcherHost::LookupSocket(int socket_id) { SocketsMap::iterator it = sockets_.find(socket_id); - return (it == sockets_.end()) ? NULL : it->second; + return (it == sockets_.end()) ? nullptr : it->second.get(); } void P2PSocketDispatcherHost::OnStartNetworkNotifications() { @@ -264,7 +262,7 @@ if (socket->Init(local_address, port_range.min_port, port_range.max_port, remote_address)) { - sockets_[socket_id] = socket.release(); + sockets_[socket_id] = std::move(socket); if (dump_incoming_rtp_packet_ || dump_outgoing_rtp_packet_) { sockets_[socket_id]->StartRtpDump(dump_incoming_rtp_packet_, @@ -283,16 +281,16 @@ "for invalid listen_socket_id."; return; } - if (LookupSocket(connected_socket_id) != NULL) { + if (LookupSocket(connected_socket_id) != nullptr) { LOG(ERROR) << "Received P2PHostMsg_AcceptIncomingTcpConnection " "for duplicated connected_socket_id."; return; } - P2PSocketHost* accepted_connection = - socket->AcceptIncomingTcpConnection(remote_address, connected_socket_id); + std::unique_ptr<P2PSocketHost> accepted_connection( + socket->AcceptIncomingTcpConnection(remote_address, connected_socket_id)); if (accepted_connection) { - sockets_[connected_socket_id] = accepted_connection; + sockets_[connected_socket_id] = std::move(accepted_connection); } } @@ -311,8 +309,7 @@ LOG(ERROR) << "Received P2PHostMsg_Send with a packet that is too big: " << data.size(); Send(new P2PMsg_OnError(socket_id)); - delete socket; - sockets_.erase(socket_id); + sockets_.erase(socket_id); // deletes the socket return; } @@ -334,8 +331,7 @@ void P2PSocketDispatcherHost::OnDestroySocket(int socket_id) { SocketsMap::iterator it = sockets_.find(socket_id); if (it != sockets_.end()) { - delete it->second; - sockets_.erase(it); + sockets_.erase(it); // deletes the socket } else { LOG(ERROR) << "Received P2PHostMsg_DestroySocket for invalid socket_id."; } @@ -371,7 +367,7 @@ std::unique_ptr<net::DatagramClientSocket> socket( net::ClientSocketFactory::GetDefaultFactory()->CreateDatagramClientSocket( - net::DatagramSocket::DEFAULT_BIND, net::RandIntCallback(), NULL, + net::DatagramSocket::DEFAULT_BIND, net::RandIntCallback(), nullptr, net::NetLog::Source())); net::IPAddress ip_address;
diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.h b/content/browser/renderer_host/p2p/socket_dispatcher_host.h index 04ad89fe..436203c 100644 --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.h +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.h
@@ -8,6 +8,7 @@ #include <stdint.h> #include <map> +#include <memory> #include <set> #include <string> #include <vector> @@ -66,7 +67,7 @@ friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>; friend class base::DeleteHelper<P2PSocketDispatcherHost>; - typedef std::map<int, P2PSocketHost*> SocketsMap; + typedef std::map<int, std::unique_ptr<P2PSocketHost>> SocketsMap; class DnsRequest;
diff --git a/content/browser/renderer_host/p2p/socket_host.cc b/content/browser/renderer_host/p2p/socket_host.cc index 6b9a6ce2..ef1c7f1 100644 --- a/content/browser/renderer_host/p2p/socket_host.cc +++ b/content/browser/renderer_host/p2p/socket_host.cc
@@ -204,7 +204,7 @@ } NOTREACHED(); - return NULL; + return nullptr; } void P2PSocketHost::StartRtpDump(
diff --git a/content/browser/renderer_host/p2p/socket_host.h b/content/browser/renderer_host/p2p/socket_host.h index 81f5a77d..b99476d0 100644 --- a/content/browser/renderer_host/p2p/socket_host.h +++ b/content/browser/renderer_host/p2p/socket_host.h
@@ -8,6 +8,8 @@ #include <stddef.h> #include <stdint.h> +#include <memory> + #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "content/common/content_export.h" @@ -64,8 +66,9 @@ const rtc::PacketOptions& options, uint64_t packet_id) = 0; - virtual P2PSocketHost* AcceptIncomingTcpConnection( - const net::IPEndPoint& remote_address, int id) = 0; + virtual std::unique_ptr<P2PSocketHost> AcceptIncomingTcpConnection( + const net::IPEndPoint& remote_address, + int id) = 0; virtual bool SetOption(P2PSocketOption option, int value) = 0;
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp.cc b/content/browser/renderer_host/p2p/socket_host_tcp.cc index 623086d..25202640 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp.cc +++ b/content/browser/renderer_host/p2p/socket_host_tcp.cc
@@ -67,14 +67,15 @@ } } -bool P2PSocketHostTcpBase::InitAccepted(const net::IPEndPoint& remote_address, - net::StreamSocket* socket) { +bool P2PSocketHostTcpBase::InitAccepted( + const net::IPEndPoint& remote_address, + std::unique_ptr<net::StreamSocket> socket) { DCHECK(socket); DCHECK_EQ(state_, STATE_UNINITIALIZED); remote_address_.ip_address = remote_address; // TODO(ronghuawu): Add FakeSSLServerSocket. - socket_.reset(socket); + socket_ = std::move(socket); state_ = STATE_OPEN; DoRead(); return state_ != STATE_ERROR; @@ -110,10 +111,8 @@ // The default SSLConfig is good enough for us for now. const net::SSLConfig ssl_config; socket_.reset(new jingle_glue::ProxyResolvingClientSocket( - NULL, // Default socket pool provided by the net::Proxy. - url_context_, - ssl_config, - dest_host_port_pair)); + nullptr, // Default socket pool provided by the net::Proxy. + url_context_, ssl_config, dest_host_port_pair)); int status = socket_->Connect( base::Bind(&P2PSocketHostTcpBase::OnConnected, @@ -426,7 +425,7 @@ message_sender_->Send( new P2PMsg_OnSendComplete(id_, P2PSendPacketMetrics())); if (write_queue_.empty()) { - write_buffer_ = NULL; + write_buffer_ = nullptr; } else { write_buffer_ = write_queue_.front(); write_queue_.pop(); @@ -444,11 +443,13 @@ } } -P2PSocketHost* P2PSocketHostTcpBase::AcceptIncomingTcpConnection( - const net::IPEndPoint& remote_address, int id) { +std::unique_ptr<P2PSocketHost> +P2PSocketHostTcpBase::AcceptIncomingTcpConnection( + const net::IPEndPoint& remote_address, + int id) { NOTREACHED(); OnError(); - return NULL; + return nullptr; } void P2PSocketHostTcpBase::DidCompleteRead(int result) {
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp.h b/content/browser/renderer_host/p2p/socket_host_tcp.h index b456d303b..4865d5b 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp.h +++ b/content/browser/renderer_host/p2p/socket_host_tcp.h
@@ -38,7 +38,7 @@ ~P2PSocketHostTcpBase() override; bool InitAccepted(const net::IPEndPoint& remote_address, - net::StreamSocket* socket); + std::unique_ptr<net::StreamSocket> socket); // P2PSocketHost overrides. bool Init(const net::IPEndPoint& local_address, @@ -49,7 +49,7 @@ const std::vector<char>& data, const rtc::PacketOptions& options, uint64_t packet_id) override; - P2PSocketHost* AcceptIncomingTcpConnection( + std::unique_ptr<P2PSocketHost> AcceptIncomingTcpConnection( const net::IPEndPoint& remote_address, int id) override; bool SetOption(P2PSocketOption option, int value) override;
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server.cc b/content/browser/renderer_host/p2p/socket_host_tcp_server.cc index f3c7bc2b..1bb35c1 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp_server.cc +++ b/content/browser/renderer_host/p2p/socket_host_tcp_server.cc
@@ -6,7 +6,6 @@ #include "base/bind.h" #include "base/bind_helpers.h" -#include "base/stl_util.h" #include "content/browser/renderer_host/p2p/socket_host_tcp.h" #include "content/common/p2p_messages.h" #include "net/base/address_list.h" @@ -24,15 +23,12 @@ P2PSocketType client_type) : P2PSocketHost(message_sender, socket_id, P2PSocketHost::TCP), client_type_(client_type), - socket_(new net::TCPServerSocket(NULL, net::NetLog::Source())), + socket_(new net::TCPServerSocket(nullptr, net::NetLog::Source())), accept_callback_(base::Bind(&P2PSocketHostTcpServer::OnAccepted, base::Unretained(this))) { } P2PSocketHostTcpServer::~P2PSocketHostTcpServer() { - base::STLDeleteContainerPairSecondPointers(accepted_sockets_.begin(), - accepted_sockets_.end()); - if (state_ == STATE_OPEN) { DCHECK(socket_.get()); socket_.reset(); @@ -104,11 +100,7 @@ accept_socket_.reset(); return; } - AcceptedSocketsMap::iterator it = accepted_sockets_.find(address); - if (it != accepted_sockets_.end()) - delete it->second; - - accepted_sockets_[address] = accept_socket_.release(); + accepted_sockets_[address] = std::move(accept_socket_); message_sender_->Send( new P2PMsg_OnIncomingTcpConnection(id_, address)); } @@ -127,25 +119,28 @@ OnError(); } -P2PSocketHost* P2PSocketHostTcpServer::AcceptIncomingTcpConnection( - const net::IPEndPoint& remote_address, int id) { - AcceptedSocketsMap::iterator it = accepted_sockets_.find(remote_address); +std::unique_ptr<P2PSocketHost> +P2PSocketHostTcpServer::AcceptIncomingTcpConnection( + const net::IPEndPoint& remote_address, + int id) { + auto it = accepted_sockets_.find(remote_address); if (it == accepted_sockets_.end()) - return NULL; + return nullptr; - net::StreamSocket* socket = it->second; + std::unique_ptr<net::StreamSocket> socket = std::move(it->second); accepted_sockets_.erase(it); std::unique_ptr<P2PSocketHostTcpBase> result; if (client_type_ == P2P_SOCKET_TCP_CLIENT) { - result.reset(new P2PSocketHostTcp(message_sender_, id, client_type_, NULL)); + result.reset( + new P2PSocketHostTcp(message_sender_, id, client_type_, nullptr)); } else { result.reset( - new P2PSocketHostStunTcp(message_sender_, id, client_type_, NULL)); + new P2PSocketHostStunTcp(message_sender_, id, client_type_, nullptr)); } - if (!result->InitAccepted(remote_address, socket)) - return NULL; - return result.release(); + if (!result->InitAccepted(remote_address, std::move(socket))) + return nullptr; + return std::move(result); } bool P2PSocketHostTcpServer::SetOption(P2PSocketOption option,
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server.h b/content/browser/renderer_host/p2p/socket_host_tcp_server.h index 21a0b2f..e0212b34 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp_server.h +++ b/content/browser/renderer_host/p2p/socket_host_tcp_server.h
@@ -29,8 +29,6 @@ class CONTENT_EXPORT P2PSocketHostTcpServer : public P2PSocketHost { public: - typedef std::map<net::IPEndPoint, net::StreamSocket*> AcceptedSocketsMap; - P2PSocketHostTcpServer(IPC::Sender* message_sender, int socket_id, P2PSocketType client_type); @@ -45,7 +43,7 @@ const std::vector<char>& data, const rtc::PacketOptions& options, uint64_t packet_id) override; - P2PSocketHost* AcceptIncomingTcpConnection( + std::unique_ptr<P2PSocketHost> AcceptIncomingTcpConnection( const net::IPEndPoint& remote_address, int id) override; bool SetOption(P2PSocketOption option, int value) override; @@ -66,7 +64,8 @@ net::IPEndPoint local_address_; std::unique_ptr<net::StreamSocket> accept_socket_; - AcceptedSocketsMap accepted_sockets_; + std::map<net::IPEndPoint, std::unique_ptr<net::StreamSocket>> + accepted_sockets_; net::CompletionCallback accept_callback_;
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc b/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc index b81390d..06837d3 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc +++ b/content/browser/renderer_host/p2p/socket_host_tcp_server_unittest.cc
@@ -23,10 +23,7 @@ class FakeServerSocket : public net::ServerSocket { public: - FakeServerSocket() - : listening_(false), - accept_socket_(NULL) { - } + FakeServerSocket() : listening_(false), accept_socket_(nullptr) {} ~FakeServerSocket() override {} @@ -36,7 +33,7 @@ if (!accept_callback_.is_null()) { DCHECK(incoming_sockets_.empty()); accept_socket_->reset(socket); - accept_socket_ = NULL; + accept_socket_ = nullptr; // This copy is necessary because this implementation of ServerSocket // bases logic on the null-ness of |accept_callback_| in the bound @@ -122,7 +119,7 @@ // Accept incoming connection. TEST_F(P2PSocketHostTcpServerTest, Accept) { - FakeSocket* incoming = new FakeSocket(NULL); + FakeSocket* incoming = new FakeSocket(nullptr); incoming->SetLocalAddress(ParseAddress(kTestLocalIpAddress, kTestPort1)); net::IPEndPoint addr = ParseAddress(kTestIpAddress1, kTestPort1); incoming->SetPeerAddress(addr); @@ -135,18 +132,18 @@ std::unique_ptr<P2PSocketHost> new_host( socket_host_->AcceptIncomingTcpConnection(addr, kAcceptedSocketId)); - ASSERT_TRUE(new_host.get() != NULL); + ASSERT_TRUE(new_host.get() != nullptr); EXPECT_EQ(incoming, GetSocketFormTcpSocketHost( reinterpret_cast<P2PSocketHostTcp*>(new_host.get()))); } // Accept 2 simultaneous connections. TEST_F(P2PSocketHostTcpServerTest, Accept2) { - FakeSocket* incoming1 = new FakeSocket(NULL); + FakeSocket* incoming1 = new FakeSocket(nullptr); incoming1->SetLocalAddress(ParseAddress(kTestLocalIpAddress, kTestPort1)); net::IPEndPoint addr1 = ParseAddress(kTestIpAddress1, kTestPort1); incoming1->SetPeerAddress(addr1); - FakeSocket* incoming2 = new FakeSocket(NULL); + FakeSocket* incoming2 = new FakeSocket(nullptr); incoming2->SetLocalAddress(ParseAddress(kTestLocalIpAddress, kTestPort1)); net::IPEndPoint addr2 = ParseAddress(kTestIpAddress2, kTestPort2); incoming2->SetPeerAddress(addr2); @@ -163,12 +160,12 @@ std::unique_ptr<P2PSocketHost> new_host1( socket_host_->AcceptIncomingTcpConnection(addr1, kAcceptedSocketId1)); - ASSERT_TRUE(new_host1.get() != NULL); + ASSERT_TRUE(new_host1.get() != nullptr); EXPECT_EQ(incoming1, GetSocketFormTcpSocketHost( reinterpret_cast<P2PSocketHostTcp*>(new_host1.get()))); std::unique_ptr<P2PSocketHost> new_host2( socket_host_->AcceptIncomingTcpConnection(addr2, kAcceptedSocketId2)); - ASSERT_TRUE(new_host2.get() != NULL); + ASSERT_TRUE(new_host2.get() != nullptr); EXPECT_EQ(incoming2, GetSocketFormTcpSocketHost( reinterpret_cast<P2PSocketHostTcp*>(new_host2.get()))); }
diff --git a/content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc index 7174fb1..b018b27 100644 --- a/content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc +++ b/content/browser/renderer_host/p2p/socket_host_tcp_unittest.cc
@@ -38,10 +38,10 @@ if (socket_type_ == P2P_SOCKET_TCP_CLIENT) { socket_host_.reset( - new P2PSocketHostTcp(&sender_, 0, P2P_SOCKET_TCP_CLIENT, NULL)); + new P2PSocketHostTcp(&sender_, 0, P2P_SOCKET_TCP_CLIENT, nullptr)); } else { socket_host_.reset(new P2PSocketHostStunTcp( - &sender_, 0, P2P_SOCKET_STUN_TCP_CLIENT, NULL)); + &sender_, 0, P2P_SOCKET_STUN_TCP_CLIENT, nullptr)); } socket_ = new FakeSocket(&sent_data_);
diff --git a/content/browser/renderer_host/p2p/socket_host_test_utils.cc b/content/browser/renderer_host/p2p/socket_host_test_utils.cc index eeb224b..0d7a340e 100644 --- a/content/browser/renderer_host/p2p/socket_host_test_utils.cc +++ b/content/browser/renderer_host/p2p/socket_host_test_utils.cc
@@ -42,7 +42,7 @@ CHECK(result > 0); memcpy(read_buffer_->data(), &input_data_[0] + input_pos_, result); input_pos_ += result; - read_buffer_ = NULL; + read_buffer_ = nullptr; net::CompletionCallback cb = read_callback_; read_callback_.Reset(); cb.Run(result);
diff --git a/content/browser/renderer_host/p2p/socket_host_udp.cc b/content/browser/renderer_host/p2p/socket_host_udp.cc index 2eb3579..7d511c8 100644 --- a/content/browser/renderer_host/p2p/socket_host_udp.cc +++ b/content/browser/renderer_host/p2p/socket_host_udp.cc
@@ -401,11 +401,12 @@ P2PSendPacketMetrics(packet_id, transport_sequence_number, send_time))); } -P2PSocketHost* P2PSocketHostUdp::AcceptIncomingTcpConnection( - const net::IPEndPoint& remote_address, int id) { +std::unique_ptr<P2PSocketHost> P2PSocketHostUdp::AcceptIncomingTcpConnection( + const net::IPEndPoint& remote_address, + int id) { NOTREACHED(); OnError(); - return NULL; + return nullptr; } bool P2PSocketHostUdp::SetOption(P2PSocketOption option, int value) {
diff --git a/content/browser/renderer_host/p2p/socket_host_udp.h b/content/browser/renderer_host/p2p/socket_host_udp.h index 9cb9263..01858d3 100644 --- a/content/browser/renderer_host/p2p/socket_host_udp.h +++ b/content/browser/renderer_host/p2p/socket_host_udp.h
@@ -52,7 +52,7 @@ const std::vector<char>& data, const rtc::PacketOptions& options, uint64_t packet_id) override; - P2PSocketHost* AcceptIncomingTcpConnection( + std::unique_ptr<P2PSocketHost> AcceptIncomingTcpConnection( const net::IPEndPoint& remote_address, int id) override; bool SetOption(P2PSocketOption option, int value) override;
diff --git a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc index f01e1e40..c8234a8d 100644 --- a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc +++ b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc
@@ -120,7 +120,7 @@ *recv_address_ = address; net::CompletionCallback cb = recv_callback_; recv_callback_.Reset(); - recv_buffer_ = NULL; + recv_buffer_ = nullptr; cb.Run(size); } else { incoming_packets_.push_back(UDPPacket(address, data));
diff --git a/content/browser/speech/speech_recognizer_impl_android.cc b/content/browser/speech/speech_recognizer_impl_android.cc index 136e9d1f..5862e28 100644 --- a/content/browser/speech/speech_recognizer_impl_android.cc +++ b/content/browser/speech/speech_recognizer_impl_android.cc
@@ -62,8 +62,8 @@ JNIEnv* env = AttachCurrentThread(); j_recognition_.Reset(Java_SpeechRecognition_createSpeechRecognition(env, GetApplicationContext(), reinterpret_cast<intptr_t>(this))); - Java_SpeechRecognition_startRecognition(env, j_recognition_.obj(), - ConvertUTF8ToJavaString(env, language).obj(), continuous, + Java_SpeechRecognition_startRecognition( + env, j_recognition_, ConvertUTF8ToJavaString(env, language), continuous, interim_results); } @@ -77,7 +77,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); if (!j_recognition_.is_null()) - Java_SpeechRecognition_abortRecognition(env, j_recognition_.obj()); + Java_SpeechRecognition_abortRecognition(env, j_recognition_); } void SpeechRecognizerImplAndroid::StopAudioCapture() { @@ -89,7 +89,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); JNIEnv* env = AttachCurrentThread(); if (!j_recognition_.is_null()) - Java_SpeechRecognition_stopRecognition(env, j_recognition_.obj()); + Java_SpeechRecognition_stopRecognition(env, j_recognition_); } bool SpeechRecognizerImplAndroid::IsActive() const {
diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc index 5088f2b..439d9ea 100644 --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc
@@ -422,7 +422,7 @@ GetBackgroundSyncContext()->Shutdown(); } -StoragePartitionImpl* StoragePartitionImpl::Create( +std::unique_ptr<StoragePartitionImpl> StoragePartitionImpl::Create( BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path) { @@ -512,16 +512,17 @@ scoped_refptr<BroadcastChannelProvider> broadcast_channel_provider = new BroadcastChannelProvider(); - StoragePartitionImpl* storage_partition = new StoragePartitionImpl( - context, partition_path, quota_manager.get(), appcache_service.get(), - filesystem_context.get(), database_tracker.get(), - dom_storage_context.get(), indexed_db_context.get(), - cache_storage_context.get(), service_worker_context.get(), - special_storage_policy.get(), host_zoom_level_context.get(), - platform_notification_context.get(), background_sync_context.get(), - std::move(broadcast_channel_provider)); + std::unique_ptr<StoragePartitionImpl> storage_partition( + new StoragePartitionImpl( + context, partition_path, quota_manager.get(), appcache_service.get(), + filesystem_context.get(), database_tracker.get(), + dom_storage_context.get(), indexed_db_context.get(), + cache_storage_context.get(), service_worker_context.get(), + special_storage_policy.get(), host_zoom_level_context.get(), + platform_notification_context.get(), background_sync_context.get(), + std::move(broadcast_channel_provider))); - service_worker_context->set_storage_partition(storage_partition); + service_worker_context->set_storage_partition(storage_partition.get()); return storage_partition; }
diff --git a/content/browser/storage_partition_impl.h b/content/browser/storage_partition_impl.h index 1086313..584f2db 100644 --- a/content/browser/storage_partition_impl.h +++ b/content/browser/storage_partition_impl.h
@@ -7,6 +7,8 @@ #include <stdint.h> +#include <memory> + #include "base/compiler_specific.h" #include "base/files/file_path.h" #include "base/gtest_prod_util.h" @@ -155,7 +157,7 @@ // If |in_memory| is true, the |relative_partition_path| is (ab)used as a way // of distinguishing different in-memory partitions, but nothing is persisted // on to disk. - static StoragePartitionImpl* Create( + static std::unique_ptr<StoragePartitionImpl> Create( BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path);
diff --git a/content/browser/storage_partition_impl_map.cc b/content/browser/storage_partition_impl_map.cc index c46b959..0e85d8a 100644 --- a/content/browser/storage_partition_impl_map.cc +++ b/content/browser/storage_partition_impl_map.cc
@@ -15,7 +15,6 @@ #include "base/location.h" #include "base/macros.h" #include "base/single_thread_task_runner.h" -#include "base/stl_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" @@ -377,8 +376,6 @@ } StoragePartitionImplMap::~StoragePartitionImplMap() { - base::STLDeleteContainerPairSecondPointers(partitions_.begin(), - partitions_.end()); } StoragePartitionImpl* StoragePartitionImplMap::Get( @@ -391,14 +388,16 @@ PartitionMap::const_iterator it = partitions_.find(partition_config); if (it != partitions_.end()) - return it->second; + return it->second.get(); base::FilePath relative_partition_path = GetStoragePartitionPath(partition_domain, partition_name); - StoragePartitionImpl* partition = StoragePartitionImpl::Create( - browser_context_, in_memory, relative_partition_path); - partitions_[partition_config] = partition; + std::unique_ptr<StoragePartitionImpl> partition_ptr( + StoragePartitionImpl::Create(browser_context_, in_memory, + relative_partition_path)); + StoragePartitionImpl* partition = partition_ptr.get(); + partitions_[partition_config] = std::move(partition_ptr); partition->GetQuotaManager()->SetTemporaryStorageEvictionPolicy( GetContentClient()->browser()->GetTemporaryStorageEvictionPolicy( @@ -560,7 +559,7 @@ for (PartitionMap::const_iterator it = partitions_.begin(); it != partitions_.end(); ++it) { - callback.Run(it->second); + callback.Run(it->second.get()); } }
diff --git a/content/browser/storage_partition_impl_map.h b/content/browser/storage_partition_impl_map.h index 00b01f1e..55f1c303 100644 --- a/content/browser/storage_partition_impl_map.h +++ b/content/browser/storage_partition_impl_map.h
@@ -6,11 +6,13 @@ #define CONTENT_BROWSER_STORAGE_PARTITION_IMPL_MAP_H_ #include <map> +#include <memory> #include <string> #include "base/callback_forward.h" #include "base/containers/hash_tables.h" #include "base/gtest_prod_util.h" +#include "base/macros.h" #include "base/supports_user_data.h" #include "content/browser/storage_partition_impl.h" #include "content/public/browser/browser_context.h" @@ -101,7 +103,7 @@ }; typedef std::map<StoragePartitionConfig, - StoragePartitionImpl*, + std::unique_ptr<StoragePartitionImpl>, StoragePartitionConfigLess> PartitionMap; @@ -128,6 +130,8 @@ // Set to true when the ResourceContext for the associated |browser_context_| // is initialized. Can never return to false. bool resource_context_initialized_; + + DISALLOW_COPY_AND_ASSIGN(StoragePartitionImplMap); }; } // namespace content
diff --git a/content/browser/time_zone_monitor_android.cc b/content/browser/time_zone_monitor_android.cc index 1207a8ed..156b0f0 100644 --- a/content/browser/time_zone_monitor_android.cc +++ b/content/browser/time_zone_monitor_android.cc
@@ -20,7 +20,7 @@ } TimeZoneMonitorAndroid::~TimeZoneMonitorAndroid() { - Java_TimeZoneMonitor_stop(base::android::AttachCurrentThread(), impl_.obj()); + Java_TimeZoneMonitor_stop(base::android::AttachCurrentThread(), impl_); } // static
diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc index e71b915..7990f44 100644 --- a/content/browser/web_contents/web_contents_android.cc +++ b/content/browser/web_contents/web_contents_android.cc
@@ -65,8 +65,7 @@ std::string json; base::JSONWriter::Write(*result, &json); ScopedJavaLocalRef<jstring> j_json = ConvertUTF8ToJavaString(env, json); - Java_WebContentsImpl_onEvaluateJavaScriptResult( - env, j_json.obj(), callback.obj()); + Java_WebContentsImpl_onEvaluateJavaScriptResult(env, j_json, callback); } struct AccessibilitySnapshotParams { @@ -118,8 +117,8 @@ ScopedJavaLocalRef<jobject> j_node = Java_WebContentsImpl_createAccessibilitySnapshotNode( env, parent_relative_rect.x(), parent_relative_rect.y(), - absolute_rect.width(), absolute_rect.height(), is_root, j_text.obj(), - color, bgcolor, size, text_style, j_class.obj()); + absolute_rect.width(), absolute_rect.height(), is_root, j_text, color, + bgcolor, size, text_style, j_class); if (params->has_tree_data && node->PlatformIsLeaf()) { int start_selection = 0; @@ -137,7 +136,7 @@ } if (end_selection > 0) Java_WebContentsImpl_setAccessibilitySnapshotSelection( - env, j_node.obj(), start_selection, end_selection); + env, j_node, start_selection, end_selection); } for (uint32_t i = 0; i < node->PlatformChildCount(); i++) { @@ -145,8 +144,7 @@ static_cast<BrowserAccessibilityAndroid*>( node->PlatformGetChild(i)); Java_WebContentsImpl_addAccessibilityNodeAsChild( - env, j_node.obj(), - WalkAXTreeDepthFirst(env, child, absolute_rect, params).obj()); + env, j_node, WalkAXTreeDepthFirst(env, child, absolute_rect, params)); } return j_node; } @@ -156,7 +154,7 @@ const ui::AXTreeUpdate& result) { JNIEnv* env = base::android::AttachCurrentThread(); if (result.nodes.empty()) { - Java_WebContentsImpl_onAccessibilitySnapshot(env, nullptr, callback.obj()); + Java_WebContentsImpl_onAccessibilitySnapshot(env, nullptr, callback); return; } std::unique_ptr<BrowserAccessibilityManagerAndroid> manager( @@ -176,8 +174,7 @@ gfx::Rect parent_rect; ScopedJavaLocalRef<jobject> j_root = WalkAXTreeDepthFirst(env, root, parent_rect, ¶ms); - Java_WebContentsImpl_onAccessibilitySnapshot( - env, j_root.obj(), callback.obj()); + Java_WebContentsImpl_onAccessibilitySnapshot(env, j_root, callback); } } // namespace @@ -246,10 +243,9 @@ g_allocated_web_contents_androids.Get().insert(this); JNIEnv* env = AttachCurrentThread(); obj_.Reset(env, - Java_WebContentsImpl_create( - env, - reinterpret_cast<intptr_t>(this), - navigation_controller_.GetJavaObject().obj()).obj()); + Java_WebContentsImpl_create(env, reinterpret_cast<intptr_t>(this), + navigation_controller_.GetJavaObject()) + .obj()); RendererPreferences* prefs = web_contents_->GetMutableRendererPrefs(); base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); prefs->network_contry_iso = @@ -262,7 +258,7 @@ DCHECK(g_allocated_web_contents_androids.Get().find(this) != g_allocated_web_contents_androids.Get().end()); g_allocated_web_contents_androids.Get().erase(this); - Java_WebContentsImpl_clearNativePtr(AttachCurrentThread(), obj_.obj()); + Java_WebContentsImpl_clearNativePtr(AttachCurrentThread(), obj_); } base::android::ScopedJavaLocalRef<jobject> @@ -695,11 +691,8 @@ ScopedJavaLocalRef<jobject> java_bitmap; if (response == READBACK_SUCCESS) java_bitmap = gfx::ConvertToJavaBitmap(&bitmap); - Java_WebContentsImpl_onGetContentBitmapFinished(env, - obj->obj(), - callback->obj(), - java_bitmap.obj(), - response); + Java_WebContentsImpl_onGetContentBitmapFinished( + env, obj->obj(), callback->obj(), java_bitmap, response); } void WebContentsAndroid::OnFinishDownloadImage( @@ -723,14 +716,14 @@ // allocations, which increases the chance of OOMs if DownloadImage() is // misused. ScopedJavaLocalRef<jobject> jbitmap = gfx::ConvertToJavaBitmap(&bitmap); - Java_WebContentsImpl_addToBitmapList(env, jbitmaps.obj(), jbitmap.obj()); + Java_WebContentsImpl_addToBitmapList(env, jbitmaps, jbitmap); } for (const gfx::Size& size : sizes) { - Java_WebContentsImpl_createSizeAndAddToList( - env, jsizes.obj(), size.width(), size.height()); + Java_WebContentsImpl_createSizeAndAddToList(env, jsizes, size.width(), + size.height()); } - Java_WebContentsImpl_onDownloadImageFinished( - env, obj->obj(), callback->obj(), id, - http_status_code, jurl.obj(), jbitmaps.obj(), jsizes.obj()); + Java_WebContentsImpl_onDownloadImageFinished(env, obj->obj(), callback->obj(), + id, http_status_code, jurl, + jbitmaps, jsizes); } } // namespace content
diff --git a/content/common/android/hash_set.cc b/content/common/android/hash_set.cc index 2b14037..4e6839b 100644 --- a/content/common/android/hash_set.cc +++ b/content/common/android/hash_set.cc
@@ -9,18 +9,18 @@ void JNI_Java_HashSet_add(JNIEnv* env, const base::android::JavaRef<jobject>& hash_set, const base::android::JavaRef<jobject>& object) { - JNI_HashSet::Java_HashSet_add(env, hash_set.obj(), object.obj()); + JNI_HashSet::Java_HashSet_add(env, hash_set, object); } void JNI_Java_HashSet_remove(JNIEnv* env, const base::android::JavaRef<jobject>& hash_set, const base::android::JavaRef<jobject>& object) { - JNI_HashSet::Java_HashSet_remove(env, hash_set.obj(), object.obj()); + JNI_HashSet::Java_HashSet_remove(env, hash_set, object); } void JNI_Java_HashSet_clear(JNIEnv* env, const base::android::JavaRef<jobject>& hash_set) { - JNI_HashSet::Java_HashSet_clear(env, hash_set.obj()); + JNI_HashSet::Java_HashSet_clear(env, hash_set); } } // namespace content
diff --git a/content/common/android/media_metadata_android.cc b/content/common/android/media_metadata_android.cc index 20e4fa7..d40f6cf 100644 --- a/content/common/android/media_metadata_android.cc +++ b/content/common/android/media_metadata_android.cc
@@ -41,8 +41,8 @@ ScopedJavaLocalRef<jstring> j_album( base::android::ConvertUTF16ToJavaString(env, metadata.album)); - ScopedJavaLocalRef<jobject> j_metadata = Java_MediaMetadata_create( - env, j_title.obj(), j_artist.obj(), j_album.obj()); + ScopedJavaLocalRef<jobject> j_metadata = + Java_MediaMetadata_create(env, j_title, j_artist, j_album); for (const auto& artwork : metadata.artwork) { std::string src = artwork.src.spec(); @@ -56,8 +56,8 @@ base::android::ToJavaIntArray( env, GetFlattenedSizeArray(artwork.sizes))); - Java_MediaMetadata_createAndAddArtwork( - env, j_metadata.obj(), j_src.obj(), j_type.obj(), j_sizes.obj()); + Java_MediaMetadata_createAndAddArtwork(env, j_metadata, j_src, j_type, + j_sizes); } return j_metadata;
diff --git a/content/common/android/resource_request_body_android.cc b/content/common/android/resource_request_body_android.cc index e890370..7abf4e8 100644 --- a/content/common/android/resource_request_body_android.cc +++ b/content/common/android/resource_request_body_android.cc
@@ -66,8 +66,7 @@ base::android::ScopedJavaLocalRef<jbyteArray> j_encoded = ConvertResourceRequestBodyToJavaArray(env, *body); - return Java_ResourceRequestBody_createFromEncodedNativeForm(env, - j_encoded.obj()); + return Java_ResourceRequestBody_createFromEncodedNativeForm(env, j_encoded); } scoped_refptr<ResourceRequestBodyImpl> ExtractResourceRequestBodyFromJavaObject( @@ -77,7 +76,7 @@ return nullptr; base::android::ScopedJavaLocalRef<jbyteArray> j_encoded = - Java_ResourceRequestBody_getEncodedNativeForm(env, j_body.obj()); + Java_ResourceRequestBody_getEncodedNativeForm(env, j_body); if (j_encoded.is_null()) return nullptr;
diff --git a/content/common/input/OWNERS b/content/common/input/OWNERS index 5f0366a..368b47f 100644 --- a/content/common/input/OWNERS +++ b/content/common/input/OWNERS
@@ -1,4 +1,5 @@ aelias@chromium.org +dtapuska@chromium.org tdresser@chromium.org per-file *_param_traits*.*=set noparent
diff --git a/content/public/test/nested_message_pump_android.cc b/content/public/test/nested_message_pump_android.cc index 76d0b38..1158c19 100644 --- a/content/public/test/nested_message_pump_android.cc +++ b/content/public/test/nested_message_pump_android.cc
@@ -92,8 +92,8 @@ // No native tasks to process right now. Process tasks from the Java // System message handler. This will return when the java message queue // is idle. - bool ret = Java_NestedSystemMessageHandler_runNestedLoopTillIdle(env, - g_message_handler_obj.Get().obj()); + bool ret = Java_NestedSystemMessageHandler_runNestedLoopTillIdle( + env, g_message_handler_obj.Get()); CHECK(ret) << "Error running java message loop, tests will likely fail."; base::ThreadRestrictions::ScopedAllowWait allow_wait;
diff --git a/content/renderer/input/OWNERS b/content/renderer/input/OWNERS index 6039fc4..82540eb6 100644 --- a/content/renderer/input/OWNERS +++ b/content/renderer/input/OWNERS
@@ -1,2 +1,3 @@ aelias@chromium.org +dtapuska@chromium.org tdresser@chromium.org
diff --git a/content/renderer/mus/render_widget_mus_connection.cc b/content/renderer/mus/render_widget_mus_connection.cc index 2cf5555..4fb926da 100644 --- a/content/renderer/mus/render_widget_mus_connection.cc +++ b/content/renderer/mus/render_widget_mus_connection.cc
@@ -12,7 +12,6 @@ #include "content/renderer/render_thread_impl.h" #include "content/renderer/render_view_impl.h" #include "services/ui/public/cpp/output_surface.h" -#include "services/ui/public/interfaces/command_buffer.mojom.h" #include "services/ui/public/interfaces/surface.mojom.h" #include "services/ui/public/interfaces/window_tree.mojom.h"
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 49e2ccf..fecc962 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -143,7 +143,6 @@ #include "skia/ext/event_tracer_impl.h" #include "skia/ext/skia_memory_dump_provider.h" #include "third_party/WebKit/public/platform/WebImageGenerator.h" -#include "third_party/WebKit/public/platform/WebMemoryCoordinator.h" #include "third_party/WebKit/public/platform/WebString.h" #include "third_party/WebKit/public/platform/WebThread.h" #include "third_party/WebKit/public/platform/scheduler/child/compositor_worker_scheduler.h" @@ -154,6 +153,7 @@ #include "third_party/WebKit/public/web/WebDocument.h" #include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebKit.h" +#include "third_party/WebKit/public/web/WebMemoryCoordinator.h" #include "third_party/WebKit/public/web/WebNetworkStateNotifier.h" #include "third_party/WebKit/public/web/WebRuntimeFeatures.h" #include "third_party/WebKit/public/web/WebScriptController.h"
diff --git a/content/shell/browser/shell_android.cc b/content/shell/browser/shell_android.cc index 111aff1..5218922 100644 --- a/content/shell/browser/shell_android.cc +++ b/content/shell/browser/shell_android.cc
@@ -33,25 +33,25 @@ JNIEnv* env = AttachCurrentThread(); if (java_object_.is_null()) return; - Java_Shell_onNativeDestroyed(env, java_object_.obj()); + Java_Shell_onNativeDestroyed(env, java_object_); } void Shell::PlatformEnableUIControl(UIControl control, bool is_enabled) { JNIEnv* env = AttachCurrentThread(); if (java_object_.is_null()) return; - Java_Shell_enableUiControl(env, java_object_.obj(), control, is_enabled); + Java_Shell_enableUiControl(env, java_object_, control, is_enabled); } void Shell::PlatformSetAddressBarURL(const GURL& url) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_url = ConvertUTF8ToJavaString(env, url.spec()); - Java_Shell_onUpdateUrl(env, java_object_.obj(), j_url.obj()); + Java_Shell_onUpdateUrl(env, java_object_, j_url); } void Shell::PlatformSetIsLoading(bool loading) { JNIEnv* env = AttachCurrentThread(); - Java_Shell_setIsLoading(env, java_object_.obj(), loading); + Java_Shell_setIsLoading(env, java_object_, loading); } void Shell::PlatformCreateWindow(int width, int height) { @@ -60,8 +60,8 @@ void Shell::PlatformSetContents() { JNIEnv* env = AttachCurrentThread(); - Java_Shell_initFromNativeTabContents( - env, java_object_.obj(), web_contents()->GetJavaWebContents().obj()); + Java_Shell_initFromNativeTabContents(env, java_object_, + web_contents()->GetJavaWebContents()); } void Shell::PlatformResizeSubViews() { @@ -74,20 +74,19 @@ void Shell::LoadProgressChanged(WebContents* source, double progress) { JNIEnv* env = AttachCurrentThread(); - Java_Shell_onLoadProgressChanged(env, java_object_.obj(), progress); + Java_Shell_onLoadProgressChanged(env, java_object_, progress); } void Shell::PlatformToggleFullscreenModeForTab(WebContents* web_contents, bool enter_fullscreen) { JNIEnv* env = AttachCurrentThread(); - Java_Shell_toggleFullscreenModeForTab( - env, java_object_.obj(), enter_fullscreen); + Java_Shell_toggleFullscreenModeForTab(env, java_object_, enter_fullscreen); } bool Shell::PlatformIsFullscreenForTabOrPending( const WebContents* web_contents) const { JNIEnv* env = AttachCurrentThread(); - return Java_Shell_isFullscreenForTabOrPending(env, java_object_.obj()); + return Java_Shell_isFullscreenForTabOrPending(env, java_object_); } void Shell::Close() {
diff --git a/content/shell/browser/shell_mojo_test_utils_android.cc b/content/shell/browser/shell_mojo_test_utils_android.cc index 1036d91..a72683d 100644 --- a/content/shell/browser/shell_mojo_test_utils_android.cc +++ b/content/shell/browser/shell_mojo_test_utils_android.cc
@@ -72,7 +72,7 @@ InterfaceProviderAndroid::Create(provider.get())); ScopedJavaLocalRef<jobject> obj = Java_ShellMojoTestUtils_makePair( - env, registry_android->GetObj().obj(), provider_android->GetObj().obj()); + env, registry_android->GetObj(), provider_android->GetObj()); test_environment->registry_wrappers.push_back(std::move(registry_android)); test_environment->provider_wrappers.push_back(std::move(provider_android));
diff --git a/device/bluetooth/bluetooth_adapter_android.cc b/device/bluetooth/bluetooth_adapter_android.cc index 13759fd..ec9d0f8 100644 --- a/device/bluetooth/bluetooth_adapter_android.cc +++ b/device/bluetooth/bluetooth_adapter_android.cc
@@ -64,12 +64,12 @@ std::string BluetoothAdapterAndroid::GetAddress() const { return ConvertJavaStringToUTF8(Java_ChromeBluetoothAdapter_getAddress( - AttachCurrentThread(), j_adapter_.obj())); + AttachCurrentThread(), j_adapter_)); } std::string BluetoothAdapterAndroid::GetName() const { - return ConvertJavaStringToUTF8(Java_ChromeBluetoothAdapter_getName( - AttachCurrentThread(), j_adapter_.obj())); + return ConvertJavaStringToUTF8( + Java_ChromeBluetoothAdapter_getName(AttachCurrentThread(), j_adapter_)); } void BluetoothAdapterAndroid::SetName(const std::string& name, @@ -84,19 +84,19 @@ bool BluetoothAdapterAndroid::IsPresent() const { return Java_ChromeBluetoothAdapter_isPresent(AttachCurrentThread(), - j_adapter_.obj()); + j_adapter_); } bool BluetoothAdapterAndroid::IsPowered() const { return Java_ChromeBluetoothAdapter_isPowered(AttachCurrentThread(), - j_adapter_.obj()); + j_adapter_); } void BluetoothAdapterAndroid::SetPowered(bool powered, const base::Closure& callback, const ErrorCallback& error_callback) { - if (Java_ChromeBluetoothAdapter_setPowered(AttachCurrentThread(), - j_adapter_.obj(), powered)) { + if (Java_ChromeBluetoothAdapter_setPowered(AttachCurrentThread(), j_adapter_, + powered)) { callback.Run(); } else { error_callback.Run(); @@ -105,7 +105,7 @@ bool BluetoothAdapterAndroid::IsDiscoverable() const { return Java_ChromeBluetoothAdapter_isDiscoverable(AttachCurrentThread(), - j_adapter_.obj()); + j_adapter_); } void BluetoothAdapterAndroid::SetDiscoverable( @@ -117,7 +117,7 @@ bool BluetoothAdapterAndroid::IsDiscovering() const { return Java_ChromeBluetoothAdapter_isDiscovering(AttachCurrentThread(), - j_adapter_.obj()); + j_adapter_); } BluetoothAdapter::UUIDList BluetoothAdapterAndroid::GetUUIDs() const { @@ -214,7 +214,7 @@ BluetoothAdapterAndroid::~BluetoothAdapterAndroid() { Java_ChromeBluetoothAdapter_onBluetoothAdapterAndroidDestruction( - AttachCurrentThread(), j_adapter_.obj()); + AttachCurrentThread(), j_adapter_); } void BluetoothAdapterAndroid::PurgeTimedOutDevices() { @@ -242,7 +242,7 @@ if (num_discovery_sessions_ > 0) { session_added = true; } else if (Java_ChromeBluetoothAdapter_startScan(AttachCurrentThread(), - j_adapter_.obj())) { + j_adapter_)) { session_added = true; // Using a delayed task in order to give the adapter some time @@ -281,7 +281,7 @@ if (num_discovery_sessions_ == 0) { VLOG(1) << "RemoveDiscoverySession: Now 0 sessions. Stopping scan."; session_removed = Java_ChromeBluetoothAdapter_stopScan( - AttachCurrentThread(), j_adapter_.obj()); + AttachCurrentThread(), j_adapter_); } else { VLOG(1) << "RemoveDiscoverySession: Now " << unsigned(num_discovery_sessions_) << " sessions.";
diff --git a/device/bluetooth/bluetooth_device_android.cc b/device/bluetooth/bluetooth_device_android.cc index 15a2e92..bdc8f3b6 100644 --- a/device/bluetooth/bluetooth_device_android.cc +++ b/device/bluetooth/bluetooth_device_android.cc
@@ -48,7 +48,7 @@ BluetoothDeviceAndroid::~BluetoothDeviceAndroid() { Java_ChromeBluetoothDevice_onBluetoothDeviceAndroidDestruction( - AttachCurrentThread(), j_device_.obj()); + AttachCurrentThread(), j_device_); } void BluetoothDeviceAndroid::UpdateAdvertisedUUIDs( @@ -72,12 +72,12 @@ uint32_t BluetoothDeviceAndroid::GetBluetoothClass() const { return Java_ChromeBluetoothDevice_getBluetoothClass(AttachCurrentThread(), - j_device_.obj()); + j_device_); } std::string BluetoothDeviceAndroid::GetAddress() const { - return ConvertJavaStringToUTF8(Java_ChromeBluetoothDevice_getAddress( - AttachCurrentThread(), j_device_.obj())); + return ConvertJavaStringToUTF8( + Java_ChromeBluetoothDevice_getAddress(AttachCurrentThread(), j_device_)); } BluetoothDevice::VendorIDSource BluetoothDeviceAndroid::GetVendorIDSource() @@ -109,16 +109,15 @@ } base::Optional<std::string> BluetoothDeviceAndroid::GetName() const { - auto name = Java_ChromeBluetoothDevice_getName(AttachCurrentThread(), - j_device_.obj()); + auto name = + Java_ChromeBluetoothDevice_getName(AttachCurrentThread(), j_device_); if (name.is_null()) return base::nullopt; return ConvertJavaStringToUTF8(name); } bool BluetoothDeviceAndroid::IsPaired() const { - return Java_ChromeBluetoothDevice_isPaired(AttachCurrentThread(), - j_device_.obj()); + return Java_ChromeBluetoothDevice_isPaired(AttachCurrentThread(), j_device_); } bool BluetoothDeviceAndroid::IsConnected() const { @@ -283,13 +282,11 @@ void BluetoothDeviceAndroid::CreateGattConnectionImpl() { Java_ChromeBluetoothDevice_createGattConnectionImpl( - AttachCurrentThread(), j_device_.obj(), - base::android::GetApplicationContext()); + AttachCurrentThread(), j_device_, base::android::GetApplicationContext()); } void BluetoothDeviceAndroid::DisconnectGatt() { - Java_ChromeBluetoothDevice_disconnectGatt(AttachCurrentThread(), - j_device_.obj()); + Java_ChromeBluetoothDevice_disconnectGatt(AttachCurrentThread(), j_device_); } } // namespace device
diff --git a/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc b/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc index 18c5e12d..fd93ccc 100644 --- a/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc +++ b/device/bluetooth/bluetooth_remote_gatt_characteristic_android.cc
@@ -43,7 +43,7 @@ Java_ChromeBluetoothRemoteGattCharacteristic_create( env, reinterpret_cast<intptr_t>(characteristic.get()), bluetooth_gatt_characteristic_wrapper, - base::android::ConvertUTF8ToJavaString(env, instance_id).obj(), + base::android::ConvertUTF8ToJavaString(env, instance_id), chrome_bluetooth_device)); return characteristic; @@ -52,7 +52,7 @@ BluetoothRemoteGattCharacteristicAndroid:: ~BluetoothRemoteGattCharacteristicAndroid() { Java_ChromeBluetoothRemoteGattCharacteristic_onBluetoothRemoteGattCharacteristicAndroidDestruction( - AttachCurrentThread(), j_characteristic_.obj()); + AttachCurrentThread(), j_characteristic_); if (pending_start_notify_calls_.size()) { OnStartNotifySessionError( @@ -78,7 +78,7 @@ BluetoothUUID BluetoothRemoteGattCharacteristicAndroid::GetUUID() const { return device::BluetoothUUID(ConvertJavaStringToUTF8( Java_ChromeBluetoothRemoteGattCharacteristic_getUUID( - AttachCurrentThread(), j_characteristic_.obj()))); + AttachCurrentThread(), j_characteristic_))); } const std::vector<uint8_t>& BluetoothRemoteGattCharacteristicAndroid::GetValue() @@ -94,7 +94,7 @@ BluetoothRemoteGattCharacteristic::Properties BluetoothRemoteGattCharacteristicAndroid::GetProperties() const { return Java_ChromeBluetoothRemoteGattCharacteristic_getProperties( - AttachCurrentThread(), j_characteristic_.obj()); + AttachCurrentThread(), j_characteristic_); } BluetoothRemoteGattCharacteristic::Permissions @@ -167,7 +167,7 @@ } if (!Java_ChromeBluetoothRemoteGattCharacteristic_setCharacteristicNotification( - AttachCurrentThread(), j_characteristic_.obj(), true)) { + AttachCurrentThread(), j_characteristic_, true)) { LOG(ERROR) << "Error enabling characteristic notification"; base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::Bind(error_callback, @@ -201,7 +201,7 @@ } if (!Java_ChromeBluetoothRemoteGattCharacteristic_readRemoteCharacteristic( - AttachCurrentThread(), j_characteristic_.obj())) { + AttachCurrentThread(), j_characteristic_)) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::Bind(error_callback, BluetoothRemoteGattService::GATT_ERROR_FAILED)); @@ -227,8 +227,8 @@ JNIEnv* env = AttachCurrentThread(); if (!Java_ChromeBluetoothRemoteGattCharacteristic_writeRemoteCharacteristic( - env, j_characteristic_.obj(), - base::android::ToJavaByteArray(env, new_value).obj())) { + env, j_characteristic_, + base::android::ToJavaByteArray(env, new_value))) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::Bind(error_callback, BluetoothRemoteGattService::GATT_ERROR_FAILED)); @@ -347,7 +347,7 @@ return; Java_ChromeBluetoothRemoteGattCharacteristic_createDescriptors( - AttachCurrentThread(), j_characteristic_.obj()); + AttachCurrentThread(), j_characteristic_); } } // namespace device
diff --git a/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc b/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc index 62a405a..0708a3ba 100644 --- a/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc +++ b/device/bluetooth/bluetooth_remote_gatt_descriptor_android.cc
@@ -44,7 +44,7 @@ BluetoothRemoteGattDescriptorAndroid::~BluetoothRemoteGattDescriptorAndroid() { Java_ChromeBluetoothRemoteGattDescriptor_onBluetoothRemoteGattDescriptorAndroidDestruction( - AttachCurrentThread(), j_descriptor_.obj()); + AttachCurrentThread(), j_descriptor_); } // static @@ -65,7 +65,7 @@ BluetoothUUID BluetoothRemoteGattDescriptorAndroid::GetUUID() const { return device::BluetoothUUID( ConvertJavaStringToUTF8(Java_ChromeBluetoothRemoteGattDescriptor_getUUID( - AttachCurrentThread(), j_descriptor_.obj()))); + AttachCurrentThread(), j_descriptor_))); } const std::vector<uint8_t>& BluetoothRemoteGattDescriptorAndroid::GetValue() @@ -97,7 +97,7 @@ } if (!Java_ChromeBluetoothRemoteGattDescriptor_readRemoteDescriptor( - AttachCurrentThread(), j_descriptor_.obj())) { + AttachCurrentThread(), j_descriptor_)) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::Bind(error_callback, @@ -124,8 +124,7 @@ JNIEnv* env = AttachCurrentThread(); if (!Java_ChromeBluetoothRemoteGattDescriptor_writeRemoteDescriptor( - env, j_descriptor_.obj(), - base::android::ToJavaByteArray(env, new_value).obj())) { + env, j_descriptor_, base::android::ToJavaByteArray(env, new_value))) { base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::Bind(error_callback,
diff --git a/device/bluetooth/bluetooth_remote_gatt_service_android.cc b/device/bluetooth/bluetooth_remote_gatt_service_android.cc index 730983655..e26326d 100644 --- a/device/bluetooth/bluetooth_remote_gatt_service_android.cc +++ b/device/bluetooth/bluetooth_remote_gatt_service_android.cc
@@ -33,7 +33,7 @@ service->j_service_.Reset(Java_ChromeBluetoothRemoteGattService_create( env, reinterpret_cast<intptr_t>(service.get()), bluetooth_gatt_service_wrapper, - base::android::ConvertUTF8ToJavaString(env, instance_id).obj(), + base::android::ConvertUTF8ToJavaString(env, instance_id), chrome_bluetooth_device)); return service; @@ -41,7 +41,7 @@ BluetoothRemoteGattServiceAndroid::~BluetoothRemoteGattServiceAndroid() { Java_ChromeBluetoothRemoteGattService_onBluetoothRemoteGattServiceAndroidDestruction( - AttachCurrentThread(), j_service_.obj()); + AttachCurrentThread(), j_service_); } // static @@ -116,7 +116,7 @@ device::BluetoothUUID BluetoothRemoteGattServiceAndroid::GetUUID() const { return device::BluetoothUUID( ConvertJavaStringToUTF8(Java_ChromeBluetoothRemoteGattService_getUUID( - AttachCurrentThread(), j_service_.obj()))); + AttachCurrentThread(), j_service_))); } bool BluetoothRemoteGattServiceAndroid::IsPrimary() const { @@ -185,7 +185,7 @@ // Java call Java_ChromeBluetoothRemoteGattService_createCharacteristics( - AttachCurrentThread(), j_service_.obj()); + AttachCurrentThread(), j_service_); } } // namespace device
diff --git a/device/bluetooth/test/bluetooth_test_android.cc b/device/bluetooth/test/bluetooth_test_android.cc index 3f12f8c8..360ddae 100644 --- a/device/bluetooth/test/bluetooth_test_android.cc +++ b/device/bluetooth/test/bluetooth_test_android.cc
@@ -82,7 +82,7 @@ int device_ordinal) { TestBluetoothAdapterObserver observer(adapter_); Java_FakeBluetoothAdapter_simulateLowEnergyDevice( - AttachCurrentThread(), j_fake_bluetooth_adapter_.obj(), device_ordinal); + AttachCurrentThread(), j_fake_bluetooth_adapter_, device_ordinal); return observer.last_device(); } @@ -92,8 +92,7 @@ static_cast<BluetoothDeviceAndroid*>(device); Java_FakeBluetoothDevice_rememberDeviceForSubsequentAction( - base::android::AttachCurrentThread(), - device_android->GetJavaObject().obj()); + base::android::AttachCurrentThread(), device_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateLocationServicesOff() { @@ -103,7 +102,7 @@ void BluetoothTestAndroid::ForceIllegalStateException() { Java_FakeBluetoothAdapter_forceIllegalStateException( - AttachCurrentThread(), j_fake_bluetooth_adapter_.obj()); + AttachCurrentThread(), j_fake_bluetooth_adapter_); } void BluetoothTestAndroid::SimulateGattConnection(BluetoothDevice* device) { @@ -111,7 +110,7 @@ static_cast<BluetoothDeviceAndroid*>(device); Java_FakeBluetoothDevice_connectionStateChange( - AttachCurrentThread(), device_android->GetJavaObject().obj(), + AttachCurrentThread(), device_android->GetJavaObject(), 0, // android.bluetooth.BluetoothGatt.GATT_SUCCESS true); // connected } @@ -123,7 +122,7 @@ static_cast<BluetoothDeviceAndroid*>(device); Java_FakeBluetoothDevice_connectionStateChange( - AttachCurrentThread(), device_android->GetJavaObject().obj(), + AttachCurrentThread(), device_android->GetJavaObject(), // TODO(ortuno): Add all types of errors Android can produce. For now we // just return a timeout error. // http://crbug.com/578191 @@ -136,7 +135,7 @@ static_cast<BluetoothDeviceAndroid*>(device); Java_FakeBluetoothDevice_connectionStateChange( - AttachCurrentThread(), device_android->GetJavaObject().obj(), + AttachCurrentThread(), device_android->GetJavaObject(), 0x13, // Connection terminate by peer user from Bluetooth Spec. false); // disconnected } @@ -158,8 +157,7 @@ Java_FakeBluetoothDevice_servicesDiscovered( env, device_android ? device_android->GetJavaObject().obj() : nullptr, 0, // android.bluetooth.BluetoothGatt.GATT_SUCCESS - base::android::ConvertUTF8ToJavaString(env, uuids_space_delimited.str()) - .obj()); + base::android::ConvertUTF8ToJavaString(env, uuids_space_delimited.str())); } void BluetoothTestAndroid::SimulateGattServicesDiscoveryError( @@ -186,7 +184,7 @@ Java_FakeBluetoothGattService_addCharacteristic( env, service_android->GetJavaObject().obj(), - base::android::ConvertUTF8ToJavaString(env, uuid).obj(), properties); + base::android::ConvertUTF8ToJavaString(env, uuid), properties); } void BluetoothTestAndroid::RememberCharacteristicForSubsequentAction( @@ -196,7 +194,7 @@ Java_FakeBluetoothGattCharacteristic_rememberCharacteristicForSubsequentAction( base::android::AttachCurrentThread(), - characteristic_android->GetJavaObject().obj()); + characteristic_android->GetJavaObject()); } void BluetoothTestAndroid::RememberCCCDescriptorForSubsequentAction( @@ -251,7 +249,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_FakeBluetoothGattCharacteristic_setCharacteristicNotificationWillFailSynchronouslyOnce( - env, characteristic_android->GetJavaObject().obj()); + env, characteristic_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateGattCharacteristicChanged( @@ -265,7 +263,7 @@ env, characteristic_android ? characteristic_android->GetJavaObject().obj() : nullptr, - base::android::ToJavaByteArray(env, value).obj()); + base::android::ToJavaByteArray(env, value)); } void BluetoothTestAndroid::SimulateGattCharacteristicRead( @@ -280,7 +278,7 @@ characteristic_android ? characteristic_android->GetJavaObject().obj() : nullptr, 0, // android.bluetooth.BluetoothGatt.GATT_SUCCESS - base::android::ToJavaByteArray(env, value).obj()); + base::android::ToJavaByteArray(env, value)); } void BluetoothTestAndroid::SimulateGattCharacteristicReadError( @@ -294,7 +292,7 @@ Java_FakeBluetoothGattCharacteristic_valueRead( env, characteristic_android->GetJavaObject().obj(), BluetoothRemoteGattServiceAndroid::GetAndroidErrorCode(error_code), - base::android::ToJavaByteArray(env, empty_value).obj()); + base::android::ToJavaByteArray(env, empty_value)); } void BluetoothTestAndroid:: @@ -305,7 +303,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_FakeBluetoothGattCharacteristic_setReadCharacteristicWillFailSynchronouslyOnce( - env, characteristic_android->GetJavaObject().obj()); + env, characteristic_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateGattCharacteristicWrite( @@ -326,7 +324,7 @@ static_cast<BluetoothRemoteGattCharacteristicAndroid*>(characteristic); Java_FakeBluetoothGattCharacteristic_valueWrite( base::android::AttachCurrentThread(), - characteristic_android->GetJavaObject().obj(), + characteristic_android->GetJavaObject(), BluetoothRemoteGattServiceAndroid::GetAndroidErrorCode(error_code)); } @@ -337,7 +335,7 @@ static_cast<BluetoothRemoteGattCharacteristicAndroid*>(characteristic); Java_FakeBluetoothGattCharacteristic_setWriteCharacteristicWillFailSynchronouslyOnce( base::android::AttachCurrentThread(), - characteristic_android->GetJavaObject().obj()); + characteristic_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateGattDescriptor( @@ -349,7 +347,7 @@ Java_FakeBluetoothGattCharacteristic_addDescriptor( env, characteristic_android->GetJavaObject().obj(), - base::android::ConvertUTF8ToJavaString(env, uuid).obj()); + base::android::ConvertUTF8ToJavaString(env, uuid)); } void BluetoothTestAndroid::RememberDescriptorForSubsequentAction( @@ -359,7 +357,7 @@ Java_FakeBluetoothGattDescriptor_rememberDescriptorForSubsequentAction( base::android::AttachCurrentThread(), - descriptor_android->GetJavaObject().obj()); + descriptor_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateGattDescriptorRead( @@ -373,7 +371,7 @@ env, descriptor_android ? descriptor_android->GetJavaObject().obj() : nullptr, 0, // android.bluetooth.BluetoothGatt.GATT_SUCCESS - base::android::ToJavaByteArray(env, value).obj()); + base::android::ToJavaByteArray(env, value)); } void BluetoothTestAndroid::SimulateGattDescriptorReadError( @@ -387,7 +385,7 @@ Java_FakeBluetoothGattDescriptor_valueRead( env, descriptor_android->GetJavaObject().obj(), BluetoothRemoteGattServiceAndroid::GetAndroidErrorCode(error_code), - base::android::ToJavaByteArray(env, empty_value).obj()); + base::android::ToJavaByteArray(env, empty_value)); } void BluetoothTestAndroid::SimulateGattDescriptorReadWillFailSynchronouslyOnce( @@ -397,7 +395,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); Java_FakeBluetoothGattDescriptor_setReadDescriptorWillFailSynchronouslyOnce( - env, descriptor_android->GetJavaObject().obj()); + env, descriptor_android->GetJavaObject()); } void BluetoothTestAndroid::SimulateGattDescriptorWrite( @@ -416,8 +414,7 @@ BluetoothRemoteGattDescriptorAndroid* descriptor_android = static_cast<BluetoothRemoteGattDescriptorAndroid*>(descriptor); Java_FakeBluetoothGattDescriptor_valueWrite( - base::android::AttachCurrentThread(), - descriptor_android->GetJavaObject().obj(), + base::android::AttachCurrentThread(), descriptor_android->GetJavaObject(), BluetoothRemoteGattServiceAndroid::GetAndroidErrorCode(error_code)); } @@ -427,7 +424,7 @@ static_cast<BluetoothRemoteGattDescriptorAndroid*>(descriptor); Java_FakeBluetoothGattDescriptor_setWriteDescriptorWillFailSynchronouslyOnce( base::android::AttachCurrentThread(), - descriptor_android->GetJavaObject().obj()); + descriptor_android->GetJavaObject()); } void BluetoothTestAndroid::OnFakeBluetoothDeviceConnectGattCalled(
diff --git a/device/geolocation/location_api_adapter_android.cc b/device/geolocation/location_api_adapter_android.cc index 693fb90..b5fcc54 100644 --- a/device/geolocation/location_api_adapter_android.cc +++ b/device/geolocation/location_api_adapter_android.cc
@@ -76,7 +76,7 @@ // We'll start receiving notifications from java in the main thread looper // until Stop() is called. return Java_LocationProviderAdapter_start( - env, java_location_provider_android_object_.obj(), high_accuracy); + env, java_location_provider_android_object_, high_accuracy); } void AndroidLocationApiAdapter::Stop() { @@ -94,8 +94,8 @@ location_provider_ = NULL; JNIEnv* env = AttachCurrentThread(); - Java_LocationProviderAdapter_stop( - env, java_location_provider_android_object_.obj()); + Java_LocationProviderAdapter_stop(env, + java_location_provider_android_object_); java_location_provider_android_object_.Reset(); }
diff --git a/device/power_save_blocker/power_save_blocker_android.cc b/device/power_save_blocker/power_save_blocker_android.cc index edd410a6..fa28675 100644 --- a/device/power_save_blocker/power_save_blocker_android.cc +++ b/device/power_save_blocker/power_save_blocker_android.cc
@@ -64,13 +64,13 @@ if (popup_view.is_null()) return; ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); - Java_PowerSaveBlocker_applyBlock(env, obj.obj(), popup_view.obj()); + Java_PowerSaveBlocker_applyBlock(env, obj, popup_view); } void PowerSaveBlocker::Delegate::RemoveBlock() { DCHECK(ui_task_runner_->RunsTasksOnCurrentThread()); ScopedJavaLocalRef<jobject> obj(java_power_save_blocker_); - Java_PowerSaveBlocker_removeBlock(AttachCurrentThread(), obj.obj()); + Java_PowerSaveBlocker_removeBlock(AttachCurrentThread(), obj); anchor_view_.Reset(); }
diff --git a/device/usb/usb_configuration_android.cc b/device/usb/usb_configuration_android.cc index a186835..5171717 100644 --- a/device/usb/usb_configuration_android.cc +++ b/device/usb/usb_configuration_android.cc
@@ -16,16 +16,16 @@ JNIEnv* env, const base::android::JavaRef<jobject>& usb_configuration) { ScopedJavaLocalRef<jobject> wrapper = - Java_ChromeUsbConfiguration_create(env, usb_configuration.obj()); + Java_ChromeUsbConfiguration_create(env, usb_configuration); UsbConfigDescriptor config( - Java_ChromeUsbConfiguration_getConfigurationValue(env, wrapper.obj()), - Java_ChromeUsbConfiguration_isSelfPowered(env, wrapper.obj()), - Java_ChromeUsbConfiguration_isRemoteWakeup(env, wrapper.obj()), - Java_ChromeUsbConfiguration_getMaxPower(env, wrapper.obj())); + Java_ChromeUsbConfiguration_getConfigurationValue(env, wrapper), + Java_ChromeUsbConfiguration_isSelfPowered(env, wrapper), + Java_ChromeUsbConfiguration_isRemoteWakeup(env, wrapper), + Java_ChromeUsbConfiguration_getMaxPower(env, wrapper)); ScopedJavaLocalRef<jobjectArray> interfaces = - Java_ChromeUsbConfiguration_getInterfaces(env, wrapper.obj()); + Java_ChromeUsbConfiguration_getInterfaces(env, wrapper); jsize count = env->GetArrayLength(interfaces.obj()); config.interfaces.reserve(count); for (jsize i = 0; i < count; ++i) {
diff --git a/device/usb/usb_device_android.cc b/device/usb/usb_device_android.cc index 2c5904d..3586adf 100644 --- a/device/usb/usb_device_android.cc +++ b/device/usb/usb_device_android.cc
@@ -30,27 +30,27 @@ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, const JavaRef<jobject>& usb_device) { ScopedJavaLocalRef<jobject> wrapper = - Java_ChromeUsbDevice_create(env, usb_device.obj()); + Java_ChromeUsbDevice_create(env, usb_device); uint16_t device_version = 0; if (base::android::BuildInfo::GetInstance()->sdk_int() >= 23) - device_version = Java_ChromeUsbDevice_getDeviceVersion(env, wrapper.obj()); + device_version = Java_ChromeUsbDevice_getDeviceVersion(env, wrapper); base::string16 manufacturer_string, product_string, serial_number; if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) { manufacturer_string = ConvertJavaStringToUTF16( - env, Java_ChromeUsbDevice_getManufacturerName(env, wrapper.obj())); + env, Java_ChromeUsbDevice_getManufacturerName(env, wrapper)); product_string = ConvertJavaStringToUTF16( - env, Java_ChromeUsbDevice_getProductName(env, wrapper.obj())); + env, Java_ChromeUsbDevice_getProductName(env, wrapper)); serial_number = ConvertJavaStringToUTF16( - env, Java_ChromeUsbDevice_getSerialNumber(env, wrapper.obj())); + env, Java_ChromeUsbDevice_getSerialNumber(env, wrapper)); } return make_scoped_refptr(new UsbDeviceAndroid( env, service, 0x0200, // USB protocol version, not provided by the Android API. - Java_ChromeUsbDevice_getDeviceClass(env, wrapper.obj()), - Java_ChromeUsbDevice_getDeviceSubclass(env, wrapper.obj()), - Java_ChromeUsbDevice_getDeviceProtocol(env, wrapper.obj()), - Java_ChromeUsbDevice_getVendorId(env, wrapper.obj()), - Java_ChromeUsbDevice_getProductId(env, wrapper.obj()), device_version, + Java_ChromeUsbDevice_getDeviceClass(env, wrapper), + Java_ChromeUsbDevice_getDeviceSubclass(env, wrapper), + Java_ChromeUsbDevice_getDeviceProtocol(env, wrapper), + Java_ChromeUsbDevice_getVendorId(env, wrapper), + Java_ChromeUsbDevice_getProductId(env, wrapper), device_version, manufacturer_string, product_string, serial_number, blocking_task_runner, wrapper)); } @@ -111,12 +111,12 @@ product_string, serial_number), blocking_task_runner_(blocking_task_runner), - device_id_(Java_ChromeUsbDevice_getDeviceId(env, wrapper.obj())), + device_id_(Java_ChromeUsbDevice_getDeviceId(env, wrapper)), service_(service), j_object_(wrapper) { if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) { ScopedJavaLocalRef<jobjectArray> configurations = - Java_ChromeUsbDevice_getConfigurations(env, j_object_.obj()); + Java_ChromeUsbDevice_getConfigurations(env, j_object_); jsize count = env->GetArrayLength(configurations.obj()); configurations_.reserve(count); for (jsize i = 0; i < count; ++i) { @@ -133,7 +133,7 @@ 0); // Maximum power, aitrary default. ScopedJavaLocalRef<jobjectArray> interfaces = - Java_ChromeUsbDevice_getInterfaces(env, wrapper.obj()); + Java_ChromeUsbDevice_getInterfaces(env, wrapper); jsize count = env->GetArrayLength(interfaces.obj()); config.interfaces.reserve(count); for (jsize i = 0; i < count; ++i) {
diff --git a/device/usb/usb_device_handle_android.cc b/device/usb/usb_device_handle_android.cc index 5041f60..e2e0dc0 100644 --- a/device/usb/usb_device_handle_android.cc +++ b/device/usb/usb_device_handle_android.cc
@@ -20,9 +20,8 @@ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, const base::android::JavaRef<jobject>& usb_connection) { ScopedJavaLocalRef<jobject> wrapper = - Java_ChromeUsbConnection_create(env, usb_connection.obj()); - base::ScopedFD fd( - Java_ChromeUsbConnection_getFileDescriptor(env, wrapper.obj())); + Java_ChromeUsbConnection_create(env, usb_connection); + base::ScopedFD fd(Java_ChromeUsbConnection_getFileDescriptor(env, wrapper)); return make_scoped_refptr(new UsbDeviceHandleAndroid( device, std::move(fd), blocking_task_runner, wrapper)); } @@ -45,7 +44,7 @@ void UsbDeviceHandleAndroid::CloseConnection() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_ChromeUsbConnection_close(env, j_object_.obj()); + Java_ChromeUsbConnection_close(env, j_object_); j_object_.Reset(); }
diff --git a/device/usb/usb_endpoint_android.cc b/device/usb/usb_endpoint_android.cc index 6908b98..a5eff76c 100644 --- a/device/usb/usb_endpoint_android.cc +++ b/device/usb/usb_endpoint_android.cc
@@ -13,13 +13,13 @@ JNIEnv* env, const base::android::JavaRef<jobject>& usb_endpoint) { base::android::ScopedJavaLocalRef<jobject> wrapper = - Java_ChromeUsbEndpoint_create(env, usb_endpoint.obj()); + Java_ChromeUsbEndpoint_create(env, usb_endpoint); UsbEndpointDescriptor endpoint( - Java_ChromeUsbEndpoint_getAddress(env, wrapper.obj()), - Java_ChromeUsbEndpoint_getAttributes(env, wrapper.obj()), - Java_ChromeUsbEndpoint_getMaxPacketSize(env, wrapper.obj()), - Java_ChromeUsbEndpoint_getInterval(env, wrapper.obj())); + Java_ChromeUsbEndpoint_getAddress(env, wrapper), + Java_ChromeUsbEndpoint_getAttributes(env, wrapper), + Java_ChromeUsbEndpoint_getMaxPacketSize(env, wrapper), + Java_ChromeUsbEndpoint_getInterval(env, wrapper)); return endpoint; }
diff --git a/device/usb/usb_interface_android.cc b/device/usb/usb_interface_android.cc index b1daa8da..33c86c9 100644 --- a/device/usb/usb_interface_android.cc +++ b/device/usb/usb_interface_android.cc
@@ -17,23 +17,23 @@ JNIEnv* env, const base::android::JavaRef<jobject>& usb_interface) { ScopedJavaLocalRef<jobject> wrapper = - Java_ChromeUsbInterface_create(env, usb_interface.obj()); + Java_ChromeUsbInterface_create(env, usb_interface); uint8_t alternate_setting = 0; if (base::android::BuildInfo::GetInstance()->sdk_int() >= 21) { alternate_setting = - Java_ChromeUsbInterface_getAlternateSetting(env, wrapper.obj()); + Java_ChromeUsbInterface_getAlternateSetting(env, wrapper); } UsbInterfaceDescriptor interface( - Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper.obj()), + Java_ChromeUsbInterface_getInterfaceNumber(env, wrapper), alternate_setting, - Java_ChromeUsbInterface_getInterfaceClass(env, wrapper.obj()), - Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper.obj()), - Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper.obj())); + Java_ChromeUsbInterface_getInterfaceClass(env, wrapper), + Java_ChromeUsbInterface_getInterfaceSubclass(env, wrapper), + Java_ChromeUsbInterface_getInterfaceProtocol(env, wrapper)); ScopedJavaLocalRef<jobjectArray> endpoints = - Java_ChromeUsbInterface_getEndpoints(env, wrapper.obj()); + Java_ChromeUsbInterface_getEndpoints(env, wrapper); jsize count = env->GetArrayLength(endpoints.obj()); interface.endpoints.reserve(count); for (jsize i = 0; i < count; ++i) {
diff --git a/device/usb/usb_service_android.cc b/device/usb/usb_service_android.cc index 878f1dc..a1d1a89 100644 --- a/device/usb/usb_service_android.cc +++ b/device/usb/usb_service_android.cc
@@ -36,7 +36,7 @@ Java_ChromeUsbService_create(env, base::android::GetApplicationContext(), reinterpret_cast<jlong>(this))); ScopedJavaLocalRef<jobjectArray> devices = - Java_ChromeUsbService_getDevices(env, j_object_.obj()); + Java_ChromeUsbService_getDevices(env, j_object_); jsize length = env->GetArrayLength(devices.obj()); for (jsize i = 0; i < length; ++i) { ScopedJavaLocalRef<jobject> usb_device( @@ -49,7 +49,7 @@ UsbServiceAndroid::~UsbServiceAndroid() { JNIEnv* env = AttachCurrentThread(); - Java_ChromeUsbService_close(env, j_object_.obj()); + Java_ChromeUsbService_close(env, j_object_); } void UsbServiceAndroid::DeviceAttached(JNIEnv* env, @@ -92,13 +92,13 @@ ScopedJavaLocalRef<jobject> UsbServiceAndroid::OpenDevice( JNIEnv* env, const JavaRef<jobject>& wrapper) { - return Java_ChromeUsbService_openDevice(env, j_object_.obj(), wrapper.obj()); + return Java_ChromeUsbService_openDevice(env, j_object_, wrapper); } void UsbServiceAndroid::RequestDevicePermission(const JavaRef<jobject>& wrapper, jint device_id) { - Java_ChromeUsbService_requestDevicePermission( - AttachCurrentThread(), j_object_.obj(), wrapper.obj(), device_id); + Java_ChromeUsbService_requestDevicePermission(AttachCurrentThread(), + j_object_, wrapper, device_id); } void UsbServiceAndroid::AddDevice(scoped_refptr<UsbDeviceAndroid> device) {
diff --git a/device/vr/android/cardboard/cardboard_vr_device.cc b/device/vr/android/cardboard/cardboard_vr_device.cc index c2a0a50a..e6163b53 100644 --- a/device/vr/android/cardboard/cardboard_vr_device.cc +++ b/device/vr/android/cardboard/cardboard_vr_device.cc
@@ -34,7 +34,7 @@ CardboardVRDevice::~CardboardVRDevice() { Java_CardboardVRDevice_stopTracking(AttachCurrentThread(), - j_cardboard_device_.obj()); + j_cardboard_device_); } VRDisplayPtr CardboardVRDevice::GetVRDevice() { @@ -44,13 +44,12 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_device_name = - Java_CardboardVRDevice_getDeviceName(env, j_cardboard_device_.obj()); + Java_CardboardVRDevice_getDeviceName(env, j_cardboard_device_); device->displayName = base::android::ConvertJavaStringToUTF8(env, j_device_name.obj()); ScopedJavaLocalRef<jfloatArray> j_fov(env, env->NewFloatArray(4)); - Java_CardboardVRDevice_getFieldOfView(env, j_cardboard_device_.obj(), - j_fov.obj()); + Java_CardboardVRDevice_getFieldOfView(env, j_cardboard_device_, j_fov); std::vector<float> fov; base::android::JavaFloatArrayToFloatVector(env, j_fov.obj(), &fov); @@ -80,7 +79,7 @@ right_eye->fieldOfView->leftDegrees = fov[3]; right_eye->fieldOfView->rightDegrees = fov[2]; - float ipd = Java_CardboardVRDevice_getIpd(env, j_cardboard_device_.obj()); + float ipd = Java_CardboardVRDevice_getIpd(env, j_cardboard_device_); left_eye->offset = mojo::Array<float>::New(3); left_eye->offset[0] = ipd * -0.5f; @@ -93,8 +92,7 @@ right_eye->offset[2] = 0.0f; ScopedJavaLocalRef<jintArray> j_screen_size(env, env->NewIntArray(2)); - Java_CardboardVRDevice_getScreenSize(env, j_cardboard_device_.obj(), - j_screen_size.obj()); + Java_CardboardVRDevice_getScreenSize(env, j_cardboard_device_, j_screen_size); std::vector<int> screen_size; base::android::JavaIntArrayToIntVector(env, j_screen_size.obj(), @@ -116,8 +114,8 @@ pose->timestamp = base::Time::Now().ToJsTime(); JNIEnv* env = AttachCurrentThread(); - Java_CardboardVRDevice_getSensorState(env, j_cardboard_device_.obj(), - j_head_matrix_.obj()); + Java_CardboardVRDevice_getSensorState(env, j_cardboard_device_, + j_head_matrix_); std::vector<float> head_matrix; base::android::JavaFloatArrayToFloatVector(env, j_head_matrix_.obj(), @@ -148,7 +146,7 @@ void CardboardVRDevice::ResetPose() { Java_CardboardVRDevice_resetSensor(AttachCurrentThread(), - j_cardboard_device_.obj()); + j_cardboard_device_); } } // namespace device
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc index 68b89484..35f446c 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -13264,19 +13264,38 @@ return; } - // For 3D textures, we always clear the entire texture. See the code in - // TextureManager::ValidateAndDoTexSubImage for TexSubImage3D. + ScopedResolvedFrameBufferBinder binder(this, false, true); + gfx::Size size = GetBoundReadFrameBufferSize(); + GLint copyX = 0; + GLint copyY = 0; + GLint copyWidth = 0; + GLint copyHeight = 0; + Clip(x, width, size.width(), ©X, ©Width); + Clip(y, height, size.height(), ©Y, ©Height); + + GLint dx = copyX - x; + GLint dy = copyY - y; + GLint destX = xoffset + dx; + GLint destY = yoffset + dy; + // For 3D textures, we always clear the entire texture to 0 if it is not + // cleared. See the code in TextureManager::ValidateAndDoTexSubImage + // for TexSubImage3D. if (!texture->IsLevelCleared(target, level)) { - texture_manager()->ClearTextureLevel(this, texture_ref, target, level); + if (!texture_manager()->ClearTextureLevel(this, texture_ref, target, + level)) { + LOCAL_SET_GL_ERROR(GL_OUT_OF_MEMORY, func_name, "dimensions too big"); + return; + } DCHECK(texture->IsLevelCleared(target, level)); } // TODO(yunchao): Follow-up CLs are necessary. For instance: // 1. emulation of unsized formats in core profile - // 2. out-of-bounds reading, etc. - glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, - height); + if (copyHeight > 0 && copyWidth > 0) { + glCopyTexSubImage3D(target, level, destX, destY, zoffset, + copyX, copyY, copyWidth, copyHeight); + } // This may be a slow command. Exit command processing to allow for // context preemption and GPU watchdog checks.
diff --git a/gpu/ipc/common/BUILD.gn b/gpu/ipc/common/BUILD.gn index 95e2a71..629ae54 100644 --- a/gpu/ipc/common/BUILD.gn +++ b/gpu/ipc/common/BUILD.gn
@@ -121,7 +121,6 @@ mojom("interfaces") { sources = [ "capabilities.mojom", - "command_buffer.mojom", "dx_diag_node.mojom", "gpu_info.mojom", "mailbox.mojom",
diff --git a/gpu/ipc/common/command_buffer.mojom b/gpu/ipc/common/command_buffer.mojom deleted file mode 100644 index e3677b7d..0000000 --- a/gpu/ipc/common/command_buffer.mojom +++ /dev/null
@@ -1,9 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module gpu.mojom; - -// Native struct CommandBuffer::State; -[Native] -struct CommandBufferState;
diff --git a/gpu/ipc/common/command_buffer.typemap b/gpu/ipc/common/command_buffer.typemap deleted file mode 100644 index 154169269..0000000 --- a/gpu/ipc/common/command_buffer.typemap +++ /dev/null
@@ -1,12 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -mojom = "//gpu/ipc/common/command_buffer.mojom" -public_headers = [ "//gpu/command_buffer/common/command_buffer.h" ] -traits_headers = [ "//gpu/ipc/common/gpu_command_buffer_traits.h" ] -deps = [ - "//gpu/ipc/common:command_buffer_traits", -] - -type_mappings = [ "gpu.mojom.CommandBufferState=gpu::CommandBuffer::State" ]
diff --git a/gpu/ipc/common/gpu_info.mojom b/gpu/ipc/common/gpu_info.mojom index 111dae8..8178926 100644 --- a/gpu/ipc/common/gpu_info.mojom +++ b/gpu/ipc/common/gpu_info.mojom
@@ -77,7 +77,7 @@ bool optimus; bool amd_switchable; bool lenovo_dcute; - mojo.common.mojom.Version display_link_version; + mojo.common.mojom.Version? display_link_version; GpuDevice gpu; array<GpuDevice> secondary_gpus; uint64 adapter_luid;
diff --git a/gpu/ipc/common/struct_traits_unittest.cc b/gpu/ipc/common/struct_traits_unittest.cc index 45f4ba9c..7541d0b2 100644 --- a/gpu/ipc/common/struct_traits_unittest.cc +++ b/gpu/ipc/common/struct_traits_unittest.cc
@@ -281,6 +281,14 @@ video_encode_accelerator_supported_profiles.size()); } +TEST_F(StructTraitsTest, EmptyGpuInfo) { + gpu::GPUInfo input; + mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); + gpu::GPUInfo output; + proxy->EchoGpuInfo(input, &output); + EXPECT_FALSE(output.display_link_version.IsValid()); +} + TEST_F(StructTraitsTest, Mailbox) { const int8_t mailbox_name[GL_MAILBOX_SIZE_CHROMIUM] = { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 9, 7, 5, 3, 1, 2, 4, 6, 8, 0, 0, 9,
diff --git a/gpu/ipc/common/typemaps.gni b/gpu/ipc/common/typemaps.gni index d49a01f..c1485dc 100644 --- a/gpu/ipc/common/typemaps.gni +++ b/gpu/ipc/common/typemaps.gni
@@ -4,7 +4,6 @@ typemaps = [ "//gpu/ipc/common/capabilities.typemap", - "//gpu/ipc/common/command_buffer.typemap", "//gpu/ipc/common/gpu_info.typemap", "//gpu/ipc/common/dx_diag_node.typemap", "//gpu/ipc/common/mailbox.typemap",
diff --git a/headless/app/headless_shell.cc b/headless/app/headless_shell.cc index 4d05e3e..46e7af0 100644 --- a/headless/app/headless_shell.cc +++ b/headless/app/headless_shell.cc
@@ -209,7 +209,7 @@ } void OnDomFetched(std::unique_ptr<runtime::EvaluateResult> result) { - if (result->GetWasThrown()) { + if (result->GetExceptionDetails()) { LOG(ERROR) << "Failed to evaluate document.body.innerHTML"; } else { std::string dom;
diff --git a/ios/chrome/browser/passwords/js_credential_manager.mm b/ios/chrome/browser/passwords/js_credential_manager.mm index 330050f..252ac7c 100644 --- a/ios/chrome/browser/passwords/js_credential_manager.mm +++ b/ios/chrome/browser/passwords/js_credential_manager.mm
@@ -55,11 +55,10 @@ stringWithFormat:@"__gCrWeb['credentialManager'].resolve(%ld, %@)", static_cast<long>(requestID), base::SysUTF8ToNSString(credentialDataJSON)]; - [self evaluate:script - stringResultHandler:^(NSString* result, NSError* error) { - if (completionHandler) - completionHandler(!error && [result isEqualToString:@"true"]); - }]; + [self executeJavaScript:script completionHandler:^(id result, NSError*) { + if (completionHandler) + completionHandler([result isEqual:@YES]); + }]; } - (void)resolvePromiseWithRequestID:(NSInteger)requestID @@ -83,11 +82,10 @@ - (void)evaluateScript:(NSString*)script completionHandler:(void (^)(BOOL))completionHandler { - [self evaluate:script - stringResultHandler:^(NSString* result, NSError* error) { - if (completionHandler) - completionHandler(!error && [result isEqualToString:@"true"]); - }]; + [self executeJavaScript:script completionHandler:^(id result, NSError*) { + if (completionHandler) + completionHandler([result isEqual:@YES]); + }]; } #pragma mark - Protected methods
diff --git a/ios/chrome/browser/passwords/js_password_manager.mm b/ios/chrome/browser/passwords/js_password_manager.mm index afeb41f..15d879c90 100644 --- a/ios/chrome/browser/passwords/js_password_manager.mm +++ b/ios/chrome/browser/passwords/js_password_manager.mm
@@ -6,6 +6,7 @@ #include "base/json/string_escape.h" #include "base/logging.h" +#include "base/mac/foundation_util.h" #include "base/strings/sys_string_conversions.h" namespace { @@ -52,10 +53,9 @@ NSString* script = [NSString stringWithFormat:@"__gCrWeb.fillPasswordForm(%@, %@, %@)", JSONString, JSONEscape(username), JSONEscape(password)]; - [self evaluate:script - stringResultHandler:^(NSString* result, NSError* error) { - completionHandler(!error && [result isEqualToString:@"true"]); - }]; + [self executeJavaScript:script completionHandler:^(id result, NSError*) { + completionHandler([result isEqual:@YES]); + }]; } - (void)clearAutofilledPasswordsInForm:(NSString*)formName @@ -63,10 +63,9 @@ NSString* script = [NSString stringWithFormat:@"__gCrWeb.clearAutofilledPasswords(%@)", JSONEscape(formName)]; - [self evaluate:script - stringResultHandler:^(NSString* result, NSError* error) { - completionHandler(!error && [result isEqualToString:@"true"]); - }]; + [self executeJavaScript:script completionHandler:^(id result, NSError*) { + completionHandler([result isEqual:@YES]); + }]; } - (void)fillPasswordForm:(NSString*)formName @@ -76,11 +75,10 @@ [NSString stringWithFormat: @"__gCrWeb.fillPasswordFormWithGeneratedPassword(%@, %@)", JSONEscape(formName), JSONEscape(password)]; - [self evaluate:script - stringResultHandler:^(NSString* result, NSError* error) { - if (completionHandler) - completionHandler(!error && [result isEqualToString:@"true"]); - }]; + [self executeJavaScript:script completionHandler:^(id result, NSError*) { + if (completionHandler) + completionHandler([result isEqual:@YES]); + }]; } #pragma mark - @@ -97,10 +95,9 @@ completionHandler:(void (^)(NSString*))completionHandler { DCHECK(completionHandler); NSString* JS = [[self injectionContent] stringByAppendingString:script]; - [self evaluate:JS - stringResultHandler:^(NSString* result, NSError*) { - completionHandler(result); - }]; + [self executeJavaScript:JS completionHandler:^(id result, NSError*) { + completionHandler(base::mac::ObjCCastStrict<NSString>(result)); + }]; } @end
diff --git a/ios/web/web_state/ui/wk_web_view_configuration_provider.mm b/ios/web/web_state/ui/wk_web_view_configuration_provider.mm index b2e6f3a..c3f6db2 100644 --- a/ios/web/web_state/ui/wk_web_view_configuration_provider.mm +++ b/ios/web/web_state/ui/wk_web_view_configuration_provider.mm
@@ -66,7 +66,9 @@ // TODO(crbug.com/620878) Remove these guards after moving to iOS10 SDK. #if defined(__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 if (base::ios::IsRunningOnIOS10OrLater()) { - [configuration_ setDataDetectorTypes:WKDataDetectorTypePhoneNumber]; + [configuration_ setDataDetectorTypes:WKDataDetectorTypeCalendarEvent | + WKDataDetectorTypeFlightNumber | + WKDataDetectorTypePhoneNumber]; } #endif // setJavaScriptCanOpenWindowsAutomatically is required to support popups.
diff --git a/media/audio/android/audio_manager_android.cc b/media/audio/android/audio_manager_android.cc index e22f414..56a522ae 100644 --- a/media/audio/android/audio_manager_android.cc +++ b/media/audio/android/audio_manager_android.cc
@@ -76,7 +76,7 @@ return; DVLOG(2) << "Destroying Java part of the audio manager"; Java_AudioManagerAndroid_close(base::android::AttachCurrentThread(), - j_audio_manager_.obj()); + j_audio_manager_); j_audio_manager_.Reset(); } @@ -119,10 +119,10 @@ ScopedJavaLocalRef<jobject> j_device( env, env->GetObjectArrayElement(j_device_array.obj(), i)); ScopedJavaLocalRef<jstring> j_device_name = - Java_AudioDeviceName_name(env, j_device.obj()); + Java_AudioDeviceName_name(env, j_device); ConvertJavaStringToUTF8(env, j_device_name.obj(), &device.device_name); ScopedJavaLocalRef<jstring> j_device_id = - Java_AudioDeviceName_id(env, j_device.obj()); + Java_AudioDeviceName_id(env, j_device); ConvertJavaStringToUTF8(env, j_device_id.obj(), &device.unique_id); device_names->push_back(device); } @@ -361,7 +361,7 @@ // Prepare the list of audio devices and register receivers for device // notifications. Java_AudioManagerAndroid_init(base::android::AttachCurrentThread(), - j_audio_manager_.obj()); + j_audio_manager_); } return j_audio_manager_.obj(); } @@ -382,7 +382,7 @@ env, device_id == AudioDeviceDescription::kDefaultDeviceId ? std::string() : device_id); return Java_AudioManagerAndroid_setDevice(env, GetJavaAudioManager(), - j_device_id.obj()); + j_device_id); } int AudioManagerAndroid::GetNativeOutputSampleRate() {
diff --git a/media/audio/android/audio_record_input.cc b/media/audio/android/audio_record_input.cc index 2f69be36..8e436ff 100644 --- a/media/audio/android/audio_record_input.cc +++ b/media/audio/android/audio_record_input.cc
@@ -70,8 +70,8 @@ bool AudioRecordInputStream::Open() { DVLOG(2) << __PRETTY_FUNCTION__; DCHECK(thread_checker_.CalledOnValidThread()); - return Java_AudioRecordInput_open( - base::android::AttachCurrentThread(), j_audio_record_.obj()); + return Java_AudioRecordInput_open(base::android::AttachCurrentThread(), + j_audio_record_); } void AudioRecordInputStream::Start(AudioInputCallback* callback) { @@ -87,8 +87,8 @@ // The Java thread has not yet started, so we are free to set |callback_|. callback_ = callback; - Java_AudioRecordInput_start( - base::android::AttachCurrentThread(), j_audio_record_.obj()); + Java_AudioRecordInput_start(base::android::AttachCurrentThread(), + j_audio_record_); } void AudioRecordInputStream::Stop() { @@ -99,8 +99,8 @@ return; } - Java_AudioRecordInput_stop( - base::android::AttachCurrentThread(), j_audio_record_.obj()); + Java_AudioRecordInput_stop(base::android::AttachCurrentThread(), + j_audio_record_); // The Java thread must have been stopped at this point, so we are free to // clear |callback_|. @@ -112,8 +112,8 @@ DCHECK(thread_checker_.CalledOnValidThread()); Stop(); DCHECK(!callback_); - Java_AudioRecordInput_close( - base::android::AttachCurrentThread(), j_audio_record_.obj()); + Java_AudioRecordInput_close(base::android::AttachCurrentThread(), + j_audio_record_); audio_manager_->ReleaseInputStream(this); }
diff --git a/media/base/android/media_codec_util.cc b/media/base/android/media_codec_util.cc index efe5afd..e507936f 100644 --- a/media/base/android/media_codec_util.cc +++ b/media/base/android/media_codec_util.cc
@@ -73,7 +73,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime_type); ScopedJavaLocalRef<jstring> j_codec_name = - Java_MediaCodecUtil_getDefaultCodecName(env, j_mime.obj(), direction, + Java_MediaCodecUtil_getDefaultCodecName(env, j_mime, direction, require_software_codec); return ConvertJavaStringToUTF8(env, j_codec_name.obj()); } @@ -84,7 +84,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, android_mime_type); - return Java_MediaCodecUtil_isDecoderSupportedForDevice(env, j_mime.obj()); + return Java_MediaCodecUtil_isDecoderSupportedForDevice(env, j_mime); } // static @@ -119,7 +119,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime_type); ScopedJavaLocalRef<jintArray> j_color_format_array = - Java_MediaCodecUtil_getEncoderColorFormatsForMime(env, j_mime.obj()); + Java_MediaCodecUtil_getEncoderColorFormatsForMime(env, j_mime); if (j_color_format_array.obj()) { std::vector<int> formats; @@ -140,7 +140,7 @@ if (mime.empty()) return false; ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime); - return Java_MediaCodecUtil_canDecode(env, j_mime.obj(), is_secure); + return Java_MediaCodecUtil_canDecode(env, j_mime, is_secure); } // static
diff --git a/media/base/android/media_drm_bridge.cc b/media/base/android/media_drm_bridge.cc index a7e7469..0c4d0d6 100644 --- a/media/base/android/media_drm_bridge.cc +++ b/media/base/android/media_drm_bridge.cc
@@ -192,8 +192,8 @@ base::android::ToJavaByteArray(env, &scheme_uuid[0], scheme_uuid.size()); ScopedJavaLocalRef<jstring> j_container_mime_type = ConvertUTF8ToJavaString(env, container_mime_type); - return Java_MediaDrmBridge_isCryptoSchemeSupported( - env, j_scheme_uuid.obj(), j_container_mime_type.obj()); + return Java_MediaDrmBridge_isCryptoSchemeSupported(env, j_scheme_uuid, + j_container_mime_type); } MediaDrmBridge::SecurityLevel GetSecurityLevelFromString( @@ -355,8 +355,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jbyteArray> j_certificate = base::android::ToJavaByteArray( env, certificate.data(), certificate.size()); - if (Java_MediaDrmBridge_setServerCertificate(env, j_media_drm_.obj(), - j_certificate.obj())) { + if (Java_MediaDrmBridge_setServerCertificate(env, j_media_drm_, + j_certificate)) { promise->resolve(); } else { promise->reject(INVALID_ACCESS_ERROR, 0, "Set server certificate failed."); @@ -415,9 +415,9 @@ ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, ConvertInitDataType(init_data_type)); uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); - Java_MediaDrmBridge_createSessionFromNative( - env, j_media_drm_.obj(), j_init_data.obj(), j_mime.obj(), - j_optional_parameters.obj(), promise_id); + Java_MediaDrmBridge_createSessionFromNative(env, j_media_drm_, j_init_data, + j_mime, j_optional_parameters, + promise_id); } void MediaDrmBridge::LoadSession( @@ -445,8 +445,8 @@ env, reinterpret_cast<const uint8_t*>(session_id.data()), session_id.size()); uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); - Java_MediaDrmBridge_updateSession(env, j_media_drm_.obj(), j_session_id.obj(), - j_response.obj(), promise_id); + Java_MediaDrmBridge_updateSession(env, j_media_drm_, j_session_id, j_response, + promise_id); } void MediaDrmBridge::CloseSession( @@ -460,8 +460,7 @@ env, reinterpret_cast<const uint8_t*>(session_id.data()), session_id.size()); uint32_t promise_id = cdm_promise_adapter_.SavePromise(std::move(promise)); - Java_MediaDrmBridge_closeSession(env, j_media_drm_.obj(), j_session_id.obj(), - promise_id); + Java_MediaDrmBridge_closeSession(env, j_media_drm_, j_session_id, promise_id); } void MediaDrmBridge::RemoveSession( @@ -518,7 +517,7 @@ DCHECK(reset_credentials_cb_.is_null()); reset_credentials_cb_ = callback; JNIEnv* env = AttachCurrentThread(); - Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_.obj()); + Java_MediaDrmBridge_resetDeviceCredentials(env, j_media_drm_); } void MediaDrmBridge::ResolvePromise(uint32_t promise_id) { @@ -682,12 +681,12 @@ env, env->GetObjectArrayElement(j_keys_info, i)); ScopedJavaLocalRef<jbyteArray> j_key_id = - Java_KeyStatus_getKeyId(env, j_key_status.obj()); + Java_KeyStatus_getKeyId(env, j_key_status); std::vector<uint8_t> key_id; JavaByteArrayToByteVector(env, j_key_id.obj(), &key_id); DCHECK(!key_id.empty()); - jint j_status_code = Java_KeyStatus_getStatusCode(env, j_key_status.obj()); + jint j_status_code = Java_KeyStatus_getStatusCode(env, j_key_status); CdmKeyInformation::KeyStatus key_status = ConvertKeyStatus(static_cast<KeyStatus>(j_status_code)); @@ -797,8 +796,7 @@ // Note: OnMediaCryptoReady() could be called in this call. j_media_drm_.Reset(Java_MediaDrmBridge_create( - env, j_scheme_uuid.obj(), j_security_level.obj(), - reinterpret_cast<intptr_t>(this))); + env, j_scheme_uuid, j_security_level, reinterpret_cast<intptr_t>(this))); } MediaDrmBridge::~MediaDrmBridge() { @@ -810,7 +808,7 @@ // After the call to Java_MediaDrmBridge_destroy() Java won't call native // methods anymore, this is ensured by MediaDrmBridge.java. if (!j_media_drm_.is_null()) - Java_MediaDrmBridge_destroy(env, j_media_drm_.obj()); + Java_MediaDrmBridge_destroy(env, j_media_drm_); player_tracker_.NotifyCdmUnset(); @@ -833,7 +831,7 @@ MediaDrmBridge::SecurityLevel MediaDrmBridge::GetSecurityLevel() { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_security_level = - Java_MediaDrmBridge_getSecurityLevel(env, j_media_drm_.obj()); + Java_MediaDrmBridge_getSecurityLevel(env, j_media_drm_); std::string security_level_str = ConvertJavaStringToUTF8(env, j_security_level.obj()); return GetSecurityLevelFromString(security_level_str); @@ -894,8 +892,8 @@ ScopedJavaLocalRef<jbyteArray> j_response = base::android::ToJavaByteArray( env, reinterpret_cast<const uint8_t*>(response.data()), response.size()); - Java_MediaDrmBridge_processProvisionResponse(env, j_media_drm_.obj(), success, - j_response.obj()); + Java_MediaDrmBridge_processProvisionResponse(env, j_media_drm_, success, + j_response); } void MediaDrmBridge::OnHasAdditionalUsableKey() {
diff --git a/media/base/android/media_player_android.cc b/media/base/android/media_player_android.cc index 7e202ad3..16ea867 100644 --- a/media/base/android/media_player_android.cc +++ b/media/base/android/media_player_android.cc
@@ -7,12 +7,15 @@ #include <algorithm> #include "base/android/context_utils.h" +#include "base/android/scoped_java_ref.h" #include "base/logging.h" #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" #include "media/base/android/media_drm_bridge.h" #include "media/base/android/media_player_manager.h" +using base::android::JavaRef; + namespace { const double kDefaultVolume = 1.0; @@ -106,11 +109,10 @@ void MediaPlayerAndroid::OnMediaPrepared() {} -void MediaPlayerAndroid::AttachListener(jobject j_media_player) { - jobject j_context = base::android::GetApplicationContext(); - DCHECK(j_context); - - listener_->CreateMediaPlayerListener(j_context, j_media_player); +void MediaPlayerAndroid::AttachListener( + const JavaRef<jobject>& j_media_player) { + listener_->CreateMediaPlayerListener(base::android::GetApplicationContext(), + j_media_player); } void MediaPlayerAndroid::DetachListener() {
diff --git a/media/base/android/media_player_android.h b/media/base/android/media_player_android.h index 57a9908..a6c5e0b 100644 --- a/media/base/android/media_player_android.h +++ b/media/base/android/media_player_android.h
@@ -10,6 +10,7 @@ #include <memory> #include <string> +#include "base/android/scoped_java_ref.h" #include "base/callback.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" @@ -128,7 +129,7 @@ // Attach/Detaches |listener_| for listening to all the media events. If // |j_media_player| is NULL, |listener_| only listens to the system media // events. Otherwise, it also listens to the events from |j_media_player|. - void AttachListener(jobject j_media_player); + void AttachListener(const base::android::JavaRef<jobject>& j_media_player); void DetachListener(); protected:
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc index 225d103..5221548 100644 --- a/media/base/android/media_player_bridge.cc +++ b/media/base/android/media_player_bridge.cc
@@ -9,6 +9,7 @@ #include "base/android/context_utils.h" #include "base/android/jni_android.h" #include "base/android/jni_string.h" +#include "base/android/scoped_java_ref.h" #include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" @@ -21,6 +22,7 @@ using base::android::ConvertUTF8ToJavaString; using base::android::JavaParamRef; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; namespace media { @@ -73,7 +75,7 @@ if (!j_media_player_bridge_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - Java_MediaPlayerBridge_destroy(env, j_media_player_bridge_.obj()); + Java_MediaPlayerBridge_destroy(env, j_media_player_bridge_); } Release(); @@ -123,7 +125,7 @@ UpdateEffectiveVolume(); - AttachListener(j_media_player_bridge_.obj()); + AttachListener(j_media_player_bridge_); } void MediaPlayerBridge::SetDuration(base::TimeDelta duration) { @@ -139,8 +141,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - Java_MediaPlayerBridge_setSurface( - env, j_media_player_bridge_.obj(), surface_.j_surface().obj()); + Java_MediaPlayerBridge_setSurface(env, j_media_player_bridge_, + surface_.j_surface()); } void MediaPlayerBridge::Prepare() { @@ -168,8 +170,8 @@ int64_t offset; int64_t size; if (InterceptMediaUrl(url, &fd, &offset, &size)) { - if (!Java_MediaPlayerBridge_setDataSourceFromFd( - env, j_media_player_bridge_.obj(), fd, offset, size)) { + if (!Java_MediaPlayerBridge_setDataSourceFromFd(env, j_media_player_bridge_, + fd, offset, size)) { OnMediaError(MEDIA_ERROR_FORMAT); return; } @@ -178,13 +180,12 @@ ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); - jobject j_context = base::android::GetApplicationContext(); - DCHECK(j_context); + const JavaRef<jobject>& j_context = base::android::GetApplicationContext(); const std::string data_uri_prefix("data:"); if (base::StartsWith(url, data_uri_prefix, base::CompareCase::SENSITIVE)) { if (!Java_MediaPlayerBridge_setDataUriDataSource( - env, j_media_player_bridge_.obj(), j_context, j_url_string.obj())) { + env, j_media_player_bridge_, j_context, j_url_string)) { OnMediaError(MEDIA_ERROR_FORMAT); } return; @@ -196,14 +197,14 @@ env, user_agent_); if (!Java_MediaPlayerBridge_setDataSource( - env, j_media_player_bridge_.obj(), j_context, j_url_string.obj(), - j_cookies.obj(), j_user_agent.obj(), hide_url_log_)) { + env, j_media_player_bridge_, j_context, j_url_string, j_cookies, + j_user_agent, hide_url_log_)) { OnMediaError(MEDIA_ERROR_FORMAT); return; } } - if (!Java_MediaPlayerBridge_prepareAsync(env, j_media_player_bridge_.obj())) + if (!Java_MediaPlayerBridge_prepareAsync(env, j_media_player_bridge_)) OnMediaError(MEDIA_ERROR_FORMAT); } @@ -237,7 +238,7 @@ return; } - if (!Java_MediaPlayerBridge_prepareAsync(env, j_media_player_bridge_.obj())) + if (!Java_MediaPlayerBridge_prepareAsync(env, j_media_player_bridge_)) OnMediaError(MEDIA_ERROR_FORMAT); } @@ -338,37 +339,35 @@ JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - jboolean result = Java_MediaPlayerBridge_isPlaying( - env, j_media_player_bridge_.obj()); + jboolean result = + Java_MediaPlayerBridge_isPlaying(env, j_media_player_bridge_); return result; } bool MediaPlayerBridge::HasVideo() const { DCHECK(prepared_); JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MediaPlayerBridge_hasVideo(env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_hasVideo(env, j_media_player_bridge_); } bool MediaPlayerBridge::HasAudio() const { DCHECK(prepared_); JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MediaPlayerBridge_hasAudio(env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_hasAudio(env, j_media_player_bridge_); } int MediaPlayerBridge::GetVideoWidth() { if (!prepared_) return width_; JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MediaPlayerBridge_getVideoWidth( - env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_getVideoWidth(env, j_media_player_bridge_); } int MediaPlayerBridge::GetVideoHeight() { if (!prepared_) return height_; JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MediaPlayerBridge_getVideoHeight( - env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_getVideoHeight(env, j_media_player_bridge_); } void MediaPlayerBridge::SeekTo(base::TimeDelta timestamp) { @@ -385,8 +384,7 @@ return pending_seek_; JNIEnv* env = base::android::AttachCurrentThread(); return base::TimeDelta::FromMilliseconds( - Java_MediaPlayerBridge_getCurrentPosition( - env, j_media_player_bridge_.obj())); + Java_MediaPlayerBridge_getCurrentPosition(env, j_media_player_bridge_)); } base::TimeDelta MediaPlayerBridge::GetDuration() { @@ -394,7 +392,7 @@ return duration_; JNIEnv* env = base::android::AttachCurrentThread(); const int duration_ms = - Java_MediaPlayerBridge_getDuration(env, j_media_player_bridge_.obj()); + Java_MediaPlayerBridge_getDuration(env, j_media_player_bridge_); return duration_ms < 0 ? media::kInfiniteDuration : base::TimeDelta::FromMilliseconds(duration_ms); } @@ -416,7 +414,7 @@ pending_play_ = false; SetVideoSurface(gl::ScopedJavaSurface()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_MediaPlayerBridge_release(env, j_media_player_bridge_.obj()); + Java_MediaPlayerBridge_release(env, j_media_player_bridge_); j_media_player_bridge_.Reset(); DetachListener(); } @@ -429,7 +427,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - Java_MediaPlayerBridge_setVolume(env, j_media_player_bridge_.obj(), + Java_MediaPlayerBridge_setVolume(env, j_media_player_bridge_, effective_volume); } @@ -497,8 +495,8 @@ JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); - return Java_MediaPlayerBridge_getAllowedOperations( - env, j_media_player_bridge_.obj()); + return Java_MediaPlayerBridge_getAllowedOperations(env, + j_media_player_bridge_); } void MediaPlayerBridge::UpdateAllowedOperations() { @@ -507,11 +505,11 @@ ScopedJavaLocalRef<jobject> allowedOperations = GetAllowedOperations(); - can_pause_ = Java_AllowedOperations_canPause(env, allowedOperations.obj()); - can_seek_forward_ = Java_AllowedOperations_canSeekForward( - env, allowedOperations.obj()); - can_seek_backward_ = Java_AllowedOperations_canSeekBackward( - env, allowedOperations.obj()); + can_pause_ = Java_AllowedOperations_canPause(env, allowedOperations); + can_seek_forward_ = + Java_AllowedOperations_canSeekForward(env, allowedOperations); + can_seek_backward_ = + Java_AllowedOperations_canSeekBackward(env, allowedOperations); } void MediaPlayerBridge::StartInternal() { @@ -521,7 +519,7 @@ } JNIEnv* env = base::android::AttachCurrentThread(); - Java_MediaPlayerBridge_start(env, j_media_player_bridge_.obj()); + Java_MediaPlayerBridge_start(env, j_media_player_bridge_); if (!time_update_timer_.IsRunning()) { time_update_timer_.Start( FROM_HERE, @@ -532,7 +530,7 @@ void MediaPlayerBridge::PauseInternal() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_MediaPlayerBridge_pause(env, j_media_player_bridge_.obj()); + Java_MediaPlayerBridge_pause(env, j_media_player_bridge_); time_update_timer_.Stop(); } @@ -563,8 +561,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); CHECK(env); int time_msec = static_cast<int>(time.InMilliseconds()); - Java_MediaPlayerBridge_seekTo( - env, j_media_player_bridge_.obj(), time_msec); + Java_MediaPlayerBridge_seekTo(env, j_media_player_bridge_, time_msec); return true; }
diff --git a/media/base/android/media_player_listener.cc b/media/base/android/media_player_listener.cc index 95dd0c533..37a8543 100644 --- a/media/base/android/media_player_listener.cc +++ b/media/base/android/media_player_listener.cc
@@ -5,6 +5,7 @@ #include "media/base/android/media_player_listener.h" #include "base/android/jni_android.h" +#include "base/android/scoped_java_ref.h" #include "base/bind.h" #include "base/location.h" #include "base/logging.h" @@ -15,6 +16,7 @@ using base::android::AttachCurrentThread; using base::android::CheckException; using base::android::JavaParamRef; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; namespace media { @@ -31,9 +33,9 @@ MediaPlayerListener::~MediaPlayerListener() {} void MediaPlayerListener::CreateMediaPlayerListener( - jobject context, jobject media_player) { + const JavaRef<jobject>& context, + const JavaRef<jobject>& media_player) { JNIEnv* env = AttachCurrentThread(); - CHECK(env); if (j_media_player_listener_.is_null()) { j_media_player_listener_.Reset(Java_MediaPlayerListener_create( env, reinterpret_cast<intptr_t>(this), context, media_player));
diff --git a/media/base/android/media_player_listener.h b/media/base/android/media_player_listener.h index 6d15c63..844475b 100644 --- a/media/base/android/media_player_listener.h +++ b/media/base/android/media_player_listener.h
@@ -30,33 +30,37 @@ MediaPlayerListener( const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, base::WeakPtr<MediaPlayerAndroid> media_player); - virtual ~MediaPlayerListener(); + virtual ~MediaPlayerListener(); // Called by the Java MediaPlayerListener and mirrored to corresponding // callbacks. - void OnMediaError(JNIEnv* /* env */, - const base::android::JavaParamRef<jobject>& /* obj */, - jint error_type); - void OnVideoSizeChanged(JNIEnv* /* env */, + void OnMediaError(JNIEnv* /* env */, + const base::android::JavaParamRef<jobject>& /* obj */, + jint error_type); + void OnVideoSizeChanged(JNIEnv* /* env */, + const base::android::JavaParamRef<jobject>& /* obj */, + jint width, + jint height); + void OnBufferingUpdate(JNIEnv* /* env */, const base::android::JavaParamRef<jobject>& /* obj */, - jint width, - jint height); - void OnBufferingUpdate(JNIEnv* /* env */, - const base::android::JavaParamRef<jobject>& /* obj */, - jint percent); - void OnPlaybackComplete(JNIEnv* /* env */, - const base::android::JavaParamRef<jobject>& /* obj */); - void OnSeekComplete(JNIEnv* /* env */, - const base::android::JavaParamRef<jobject>& /* obj */); - void OnMediaPrepared(JNIEnv* /* env */, + jint percent); + void OnPlaybackComplete( + JNIEnv* /* env */, + const base::android::JavaParamRef<jobject>& /* obj */); + void OnSeekComplete(JNIEnv* /* env */, const base::android::JavaParamRef<jobject>& /* obj */); - void OnMediaInterrupted(JNIEnv* /* env */, - const base::android::JavaParamRef<jobject>& /* obj */); + void OnMediaPrepared(JNIEnv* /* env */, + const base::android::JavaParamRef<jobject>& /* obj */); + void OnMediaInterrupted( + JNIEnv* /* env */, + const base::android::JavaParamRef<jobject>& /* obj */); // Create a Java MediaPlayerListener object and listens to all the media // related events from system and |media_player|. If |media_player| is NULL, // this class only listens to system events. - void CreateMediaPlayerListener(jobject context, jobject media_player); + void CreateMediaPlayerListener( + const base::android::JavaRef<jobject>& context, + const base::android::JavaRef<jobject>& media_player); void ReleaseMediaPlayerListenerResources(); // Register MediaPlayerListener in the system library loader.
diff --git a/media/base/android/media_source_player.cc b/media/base/android/media_source_player.cc index 47860ba4..a077ba1 100644 --- a/media/base/android/media_source_player.cc +++ b/media/base/android/media_source_player.cc
@@ -252,7 +252,7 @@ // related info should all be cleared. is_waiting_for_key_ = false; key_added_while_decode_pending_ = false; - AttachListener(NULL); + AttachListener(nullptr); SetPendingEvent(PREFETCH_REQUEST_EVENT_PENDING); ProcessPendingEvents();
diff --git a/media/base/android/sdk_media_codec_bridge.cc b/media/base/android/sdk_media_codec_bridge.cc index a7fe13bb..bbe4aa4a 100644 --- a/media/base/android/sdk_media_codec_bridge.cc +++ b/media/base/android/sdk_media_codec_bridge.cc
@@ -89,41 +89,41 @@ DCHECK(!mime.empty()); ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime); j_media_codec_.Reset(Java_MediaCodecBridge_create( - env, j_mime.obj(), is_secure, direction, require_software_codec)); + env, j_mime, is_secure, direction, require_software_codec)); } SdkMediaCodecBridge::~SdkMediaCodecBridge() { JNIEnv* env = AttachCurrentThread(); CHECK(env); if (j_media_codec_.obj()) - Java_MediaCodecBridge_release(env, j_media_codec_.obj()); + Java_MediaCodecBridge_release(env, j_media_codec_); } bool SdkMediaCodecBridge::Start() { JNIEnv* env = AttachCurrentThread(); - return Java_MediaCodecBridge_start(env, j_media_codec_.obj()); + return Java_MediaCodecBridge_start(env, j_media_codec_); } void SdkMediaCodecBridge::Stop() { JNIEnv* env = AttachCurrentThread(); - Java_MediaCodecBridge_stop(env, j_media_codec_.obj()); + Java_MediaCodecBridge_stop(env, j_media_codec_); } MediaCodecStatus SdkMediaCodecBridge::Flush() { JNIEnv* env = AttachCurrentThread(); return static_cast<MediaCodecStatus>( - Java_MediaCodecBridge_flush(env, j_media_codec_.obj())); + Java_MediaCodecBridge_flush(env, j_media_codec_)); } MediaCodecStatus SdkMediaCodecBridge::GetOutputSize(gfx::Size* size) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> result = - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj()); + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_); MediaCodecStatus status = static_cast<MediaCodecStatus>( - Java_GetOutputFormatResult_status(env, result.obj())); + Java_GetOutputFormatResult_status(env, result)); if (status == MEDIA_CODEC_OK) { - size->SetSize(Java_GetOutputFormatResult_width(env, result.obj()), - Java_GetOutputFormatResult_height(env, result.obj())); + size->SetSize(Java_GetOutputFormatResult_width(env, result), + Java_GetOutputFormatResult_height(env, result)); } return status; } @@ -132,11 +132,11 @@ int* sampling_rate) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> result = - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj()); + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_); MediaCodecStatus status = static_cast<MediaCodecStatus>( - Java_GetOutputFormatResult_status(env, result.obj())); + Java_GetOutputFormatResult_status(env, result)); if (status == MEDIA_CODEC_OK) - *sampling_rate = Java_GetOutputFormatResult_sampleRate(env, result.obj()); + *sampling_rate = Java_GetOutputFormatResult_sampleRate(env, result); return status; } @@ -144,11 +144,11 @@ int* channel_count) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> result = - Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_.obj()); + Java_MediaCodecBridge_getOutputFormat(env, j_media_codec_); MediaCodecStatus status = static_cast<MediaCodecStatus>( - Java_GetOutputFormatResult_status(env, result.obj())); + Java_GetOutputFormatResult_status(env, result)); if (status == MEDIA_CODEC_OK) - *channel_count = Java_GetOutputFormatResult_channelCount(env, result.obj()); + *channel_count = Java_GetOutputFormatResult_channelCount(env, result); return status; } @@ -166,7 +166,7 @@ return MEDIA_CODEC_ERROR; JNIEnv* env = AttachCurrentThread(); return static_cast<MediaCodecStatus>(Java_MediaCodecBridge_queueInputBuffer( - env, j_media_codec_.obj(), index, 0, data_size, + env, j_media_codec_, index, 0, data_size, presentation_time.InMicroseconds(), 0)); } @@ -231,16 +231,15 @@ return static_cast<MediaCodecStatus>( Java_MediaCodecBridge_queueSecureInputBuffer( env, j_media_codec_.obj(), index, 0, j_iv.obj(), j_key_id.obj(), - clear_array.obj(), cypher_array.obj(), new_subsamples_size, + clear_array, cypher_array, new_subsamples_size, presentation_time.InMicroseconds())); } void SdkMediaCodecBridge::QueueEOS(int input_buffer_index) { DVLOG(3) << __PRETTY_FUNCTION__ << ": " << input_buffer_index; JNIEnv* env = AttachCurrentThread(); - Java_MediaCodecBridge_queueInputBuffer(env, j_media_codec_.obj(), - input_buffer_index, 0, 0, 0, - kBufferFlagEndOfStream); + Java_MediaCodecBridge_queueInputBuffer( + env, j_media_codec_, input_buffer_index, 0, 0, 0, kBufferFlagEndOfStream); } MediaCodecStatus SdkMediaCodecBridge::DequeueInputBuffer( @@ -248,10 +247,10 @@ int* index) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> result = Java_MediaCodecBridge_dequeueInputBuffer( - env, j_media_codec_.obj(), timeout.InMicroseconds()); - *index = Java_DequeueInputResult_index(env, result.obj()); + env, j_media_codec_, timeout.InMicroseconds()); + *index = Java_DequeueInputResult_index(env, result); MediaCodecStatus status = static_cast<MediaCodecStatus>( - Java_DequeueInputResult_status(env, result.obj())); + Java_DequeueInputResult_status(env, result)); DVLOG(3) << __PRETTY_FUNCTION__ << ": status: " << status << ", index: " << *index; return status; @@ -267,25 +266,24 @@ bool* key_frame) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> result = - Java_MediaCodecBridge_dequeueOutputBuffer(env, j_media_codec_.obj(), + Java_MediaCodecBridge_dequeueOutputBuffer(env, j_media_codec_, timeout.InMicroseconds()); - *index = Java_DequeueOutputResult_index(env, result.obj()); - *offset = base::checked_cast<size_t>( - Java_DequeueOutputResult_offset(env, result.obj())); + *index = Java_DequeueOutputResult_index(env, result); + *offset = + base::checked_cast<size_t>(Java_DequeueOutputResult_offset(env, result)); *size = base::checked_cast<size_t>( - Java_DequeueOutputResult_numBytes(env, result.obj())); + Java_DequeueOutputResult_numBytes(env, result)); if (presentation_time) { *presentation_time = base::TimeDelta::FromMicroseconds( - Java_DequeueOutputResult_presentationTimeMicroseconds(env, - result.obj())); + Java_DequeueOutputResult_presentationTimeMicroseconds(env, result)); } - int flags = Java_DequeueOutputResult_flags(env, result.obj()); + int flags = Java_DequeueOutputResult_flags(env, result); if (end_of_stream) *end_of_stream = flags & kBufferFlagEndOfStream; if (key_frame) *key_frame = flags & kBufferFlagSyncFrame; MediaCodecStatus status = static_cast<MediaCodecStatus>( - Java_DequeueOutputResult_status(env, result.obj())); + Java_DequeueOutputResult_status(env, result)); DVLOG(3) << __PRETTY_FUNCTION__ << ": status: " << status << ", index: " << *index << ", offset: " << *offset << ", size: " << *size << ", flags: " << flags; @@ -297,8 +295,7 @@ JNIEnv* env = AttachCurrentThread(); CHECK(env); - Java_MediaCodecBridge_releaseOutputBuffer(env, j_media_codec_.obj(), index, - render); + Java_MediaCodecBridge_releaseOutputBuffer(env, j_media_codec_, index, render); } MediaCodecStatus SdkMediaCodecBridge::GetInputBuffer(int input_buffer_index, @@ -306,7 +303,7 @@ size_t* capacity) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_buffer(Java_MediaCodecBridge_getInputBuffer( - env, j_media_codec_.obj(), input_buffer_index)); + env, j_media_codec_, input_buffer_index)); if (j_buffer.is_null()) return MEDIA_CODEC_ERROR; @@ -323,7 +320,7 @@ size_t* capacity) { JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jobject> j_buffer( - Java_MediaCodecBridge_getOutputBuffer(env, j_media_codec_.obj(), index)); + Java_MediaCodecBridge_getOutputBuffer(env, j_media_codec_, index)); if (j_buffer.is_null()) return MEDIA_CODEC_ERROR; const size_t total_capacity = env->GetDirectBufferCapacity(j_buffer.obj()); @@ -340,8 +337,8 @@ return ""; JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_name = - Java_MediaCodecBridge_getName(env, j_media_codec_.obj()); - return ConvertJavaStringToUTF8(env, j_name.obj()); + Java_MediaCodecBridge_getName(env, j_media_codec_); + return ConvertJavaStringToUTF8(env, j_name); } // static @@ -416,7 +413,7 @@ ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, codec_string); ScopedJavaLocalRef<jobject> j_format(Java_MediaCodecBridge_createAudioFormat( - env, j_mime.obj(), sample_rate, channel_count)); + env, j_mime, sample_rate, channel_count)); DCHECK(!j_format.is_null()); if (!ConfigureMediaFormat(j_format.obj(), codec, extra_data, extra_data_size, @@ -424,7 +421,7 @@ return false; } - if (!Java_MediaCodecBridge_configureAudio(env, media_codec(), j_format.obj(), + if (!Java_MediaCodecBridge_configureAudio(env, media_codec(), j_format, media_crypto, 0, play_audio)) { return false; } @@ -479,13 +476,12 @@ ScopedJavaLocalRef<jbyteArray> first_header = base::android::ToJavaByteArray(env, current_pos, header_length[0]); Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, - first_header.obj()); + first_header); // The last header is codec header. ScopedJavaLocalRef<jbyteArray> last_header = base::android::ToJavaByteArray(env, extra_data + total_length, extra_data_size - total_length); - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, - last_header.obj()); + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, last_header); break; } case kCodecAAC: { @@ -523,8 +519,7 @@ csd[1] = (frequency_index & 0x01) << 7 | channel_config << 3; ScopedJavaLocalRef<jbyteArray> byte_array = base::android::ToJavaByteArray(env, csd, kCsdLength); - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, - byte_array.obj()); + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, byte_array); // TODO(qinmin): pass an extra variable to this function to determine // whether we need to call this. @@ -541,19 +536,19 @@ // csd0 - Opus Header ScopedJavaLocalRef<jbyteArray> csd0 = base::android::ToJavaByteArray(env, extra_data, extra_data_size); - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, csd0.obj()); + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 0, csd0); // csd1 - Codec Delay ScopedJavaLocalRef<jbyteArray> csd1 = base::android::ToJavaByteArray( env, reinterpret_cast<const uint8_t*>(&codec_delay_ns), sizeof(int64_t)); - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, csd1.obj()); + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 1, csd1); // csd2 - Seek Preroll ScopedJavaLocalRef<jbyteArray> csd2 = base::android::ToJavaByteArray( env, reinterpret_cast<const uint8_t*>(&seek_preroll_ns), sizeof(int64_t)); - Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 2, csd2.obj()); + Java_MediaCodecBridge_setCodecSpecificData(env, j_format, 2, csd2); break; } default: @@ -597,8 +592,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jbyteArray> byte_array = base::android::ToJavaByteArray(env, buffer, numBytes); - *playback_pos = Java_MediaCodecBridge_playOutputBuffer( - env, media_codec(), byte_array.obj(), postpone); + *playback_pos = Java_MediaCodecBridge_playOutputBuffer(env, media_codec(), + byte_array, postpone); return status; } @@ -637,12 +632,12 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime); ScopedJavaLocalRef<jobject> j_format( - Java_MediaCodecBridge_createVideoDecoderFormat( - env, j_mime.obj(), size.width(), size.height())); + Java_MediaCodecBridge_createVideoDecoderFormat(env, j_mime, size.width(), + size.height())); DCHECK(!j_format.is_null()); - if (!Java_MediaCodecBridge_configureVideo( - env, bridge->media_codec(), j_format.obj(), surface, media_crypto, 0, - allow_adaptive_playback)) { + if (!Java_MediaCodecBridge_configureVideo(env, bridge->media_codec(), + j_format, surface, media_crypto, 0, + allow_adaptive_playback)) { return nullptr; } @@ -672,11 +667,11 @@ ScopedJavaLocalRef<jstring> j_mime = ConvertUTF8ToJavaString(env, mime); ScopedJavaLocalRef<jobject> j_format( Java_MediaCodecBridge_createVideoEncoderFormat( - env, j_mime.obj(), size.width(), size.height(), bit_rate, frame_rate, + env, j_mime, size.width(), size.height(), bit_rate, frame_rate, i_frame_interval, color_format)); DCHECK(!j_format.is_null()); if (!Java_MediaCodecBridge_configureVideo(env, bridge->media_codec(), - j_format.obj(), nullptr, nullptr, + j_format, nullptr, nullptr, kConfigureFlagEncode, true)) { return nullptr; }
diff --git a/media/capture/content/android/screen_capture_machine_android.cc b/media/capture/content/android/screen_capture_machine_android.cc index df57fa2..f3b2ee9 100644 --- a/media/capture/content/android/screen_capture_machine_android.cc +++ b/media/capture/content/android/screen_capture_machine_android.cc
@@ -220,7 +220,7 @@ DCHECK(!(params.requested_format.frame_size.height() % 2)); const jboolean ret = Java_ScreenCapture_startPrompt( - AttachCurrentThread(), j_capture_.obj(), + AttachCurrentThread(), j_capture_, params.requested_format.frame_size.width(), params.requested_format.frame_size.height()); @@ -228,7 +228,7 @@ } void ScreenCaptureMachineAndroid::Stop(const base::Closure& callback) { - Java_ScreenCapture_stopCapture(AttachCurrentThread(), j_capture_.obj()); + Java_ScreenCapture_stopCapture(AttachCurrentThread(), j_capture_); callback.Run(); }
diff --git a/media/capture/video/android/photo_capabilities.cc b/media/capture/video/android/photo_capabilities.cc index 59f798f..3871477f 100644 --- a/media/capture/video/android/photo_capabilities.cc +++ b/media/capture/video/android/photo_capabilities.cc
@@ -21,78 +21,69 @@ int PhotoCapabilities::getMinIso() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMinIso(AttachCurrentThread(), object_.obj()); + return Java_PhotoCapabilities_getMinIso(AttachCurrentThread(), object_); } int PhotoCapabilities::getMaxIso() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMaxIso(AttachCurrentThread(), object_.obj()); + return Java_PhotoCapabilities_getMaxIso(AttachCurrentThread(), object_); } int PhotoCapabilities::getCurrentIso() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getCurrentIso(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getCurrentIso(AttachCurrentThread(), object_); } int PhotoCapabilities::getMinHeight() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMinHeight(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMinHeight(AttachCurrentThread(), object_); } int PhotoCapabilities::getMaxHeight() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMaxHeight(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMaxHeight(AttachCurrentThread(), object_); } int PhotoCapabilities::getCurrentHeight() const { DCHECK(!object_.is_null()); return Java_PhotoCapabilities_getCurrentHeight(AttachCurrentThread(), - object_.obj()); + object_); } int PhotoCapabilities::getMinWidth() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMinWidth(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMinWidth(AttachCurrentThread(), object_); } int PhotoCapabilities::getMaxWidth() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMaxWidth(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMaxWidth(AttachCurrentThread(), object_); } int PhotoCapabilities::getCurrentWidth() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getCurrentWidth(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getCurrentWidth(AttachCurrentThread(), object_); } int PhotoCapabilities::getMinZoom() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMinZoom(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMinZoom(AttachCurrentThread(), object_); } int PhotoCapabilities::getMaxZoom() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getMaxZoom(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getMaxZoom(AttachCurrentThread(), object_); } int PhotoCapabilities::getCurrentZoom() const { DCHECK(!object_.is_null()); - return Java_PhotoCapabilities_getCurrentZoom(AttachCurrentThread(), - object_.obj()); + return Java_PhotoCapabilities_getCurrentZoom(AttachCurrentThread(), object_); } PhotoCapabilities::AndroidFocusMode PhotoCapabilities::getFocusMode() const { DCHECK(!object_.is_null()); - return static_cast<AndroidFocusMode>(Java_PhotoCapabilities_getFocusMode( - AttachCurrentThread(), object_.obj())); + return static_cast<AndroidFocusMode>( + Java_PhotoCapabilities_getFocusMode(AttachCurrentThread(), object_)); } } // namespace media
diff --git a/media/capture/video/android/video_capture_device_android.cc b/media/capture/video/android/video_capture_device_android.cc index 730871a..b3c5d89f 100644 --- a/media/capture/video/android/video_capture_device_android.cc +++ b/media/capture/video/android/video_capture_device_android.cc
@@ -71,7 +71,7 @@ JNIEnv* env = AttachCurrentThread(); jboolean ret = Java_VideoCapture_allocate( - env, j_capture_.obj(), params.requested_format.frame_size.width(), + env, j_capture_, params.requested_format.frame_size.width(), params.requested_format.frame_size.height(), params.requested_format.frame_rate); if (!ret) { @@ -80,10 +80,10 @@ } capture_format_.frame_size.SetSize( - Java_VideoCapture_queryWidth(env, j_capture_.obj()), - Java_VideoCapture_queryHeight(env, j_capture_.obj())); + Java_VideoCapture_queryWidth(env, j_capture_), + Java_VideoCapture_queryHeight(env, j_capture_)); capture_format_.frame_rate = - Java_VideoCapture_queryFrameRate(env, j_capture_.obj()); + Java_VideoCapture_queryFrameRate(env, j_capture_); capture_format_.pixel_format = GetColorspace(); DCHECK_NE(capture_format_.pixel_format, media::PIXEL_FORMAT_UNKNOWN); CHECK(capture_format_.frame_size.GetArea() > 0); @@ -100,7 +100,7 @@ << capture_format_.frame_size.ToString() << ")@ " << capture_format_.frame_rate << "fps"; - ret = Java_VideoCapture_startCapture(env, j_capture_.obj()); + ret = Java_VideoCapture_startCapture(env, j_capture_); if (!ret) { SetErrorState(FROM_HERE, "failed to start capture"); return; @@ -122,7 +122,7 @@ JNIEnv* env = AttachCurrentThread(); - const jboolean ret = Java_VideoCapture_stopCapture(env, j_capture_.obj()); + const jboolean ret = Java_VideoCapture_stopCapture(env, j_capture_); if (!ret) { SetErrorState(FROM_HERE, "failed to stop capture"); return; @@ -134,7 +134,7 @@ client_.reset(); } - Java_VideoCapture_deallocate(env, j_capture_.obj()); + Java_VideoCapture_deallocate(env, j_capture_); } void VideoCaptureDeviceAndroid::TakePhoto(TakePhotoCallback callback) { @@ -348,7 +348,7 @@ VideoPixelFormat VideoCaptureDeviceAndroid::GetColorspace() { JNIEnv* env = AttachCurrentThread(); const int current_capture_colorspace = - Java_VideoCapture_getColorspace(env, j_capture_.obj()); + Java_VideoCapture_getColorspace(env, j_capture_); switch (current_capture_colorspace) { case ANDROID_IMAGE_FORMAT_YV12: return media::PIXEL_FORMAT_YV12; @@ -389,7 +389,7 @@ std::unique_ptr<TakePhotoCallback> heap_callback( new TakePhotoCallback(std::move(callback))); const intptr_t callback_id = reinterpret_cast<intptr_t>(heap_callback.get()); - if (!Java_VideoCapture_takePhoto(env, j_capture_.obj(), callback_id)) + if (!Java_VideoCapture_takePhoto(env, j_capture_, callback_id)) return; { @@ -411,7 +411,7 @@ JNIEnv* env = AttachCurrentThread(); PhotoCapabilities caps( - Java_VideoCapture_getPhotoCapabilities(env, j_capture_.obj())); + Java_VideoCapture_getPhotoCapabilities(env, j_capture_)); // TODO(mcasas): Manual member copying sucks, consider adding typemapping from // PhotoCapabilities to mojom::PhotoCapabilitiesPtr, https://crbug.com/622002. @@ -487,7 +487,7 @@ } Java_VideoCapture_setPhotoOptions( - env, j_capture_.obj(), zoom, static_cast<int>(focus_mode), width, height); + env, j_capture_, zoom, static_cast<int>(focus_mode), width, height); callback.Run(true); }
diff --git a/media/capture/video/android/video_capture_device_factory_android.cc b/media/capture/video/android/video_capture_device_factory_android.cc index 3a65bda..5fb75168 100644 --- a/media/capture/video/android/video_capture_device_factory_android.cc +++ b/media/capture/video/android/video_capture_device_factory_android.cc
@@ -8,12 +8,14 @@ #include "base/android/context_utils.h" #include "base/android/jni_string.h" +#include "base/android/scoped_java_ref.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" #include "jni/VideoCaptureFactory_jni.h" #include "media/capture/video/android/video_capture_device_android.h" using base::android::AttachCurrentThread; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; namespace media { @@ -53,7 +55,7 @@ JNIEnv* env = AttachCurrentThread(); - const jobject context = base::android::GetApplicationContext(); + const JavaRef<jobject>& context = base::android::GetApplicationContext(); const int num_cameras = Java_VideoCaptureFactory_getNumberOfCameras(env, context); DVLOG(1) << __FUNCTION__ << ": num_cameras=" << num_cameras; @@ -106,7 +108,7 @@ VideoPixelFormat pixel_format = media::PIXEL_FORMAT_UNKNOWN; switch (media::Java_VideoCaptureFactory_getCaptureFormatPixelFormat( - env, format.obj())) { + env, format)) { case VideoCaptureDeviceAndroid::ANDROID_IMAGE_FORMAT_YV12: pixel_format = media::PIXEL_FORMAT_YV12; break; @@ -117,12 +119,11 @@ continue; } VideoCaptureFormat capture_format( - gfx::Size(media::Java_VideoCaptureFactory_getCaptureFormatWidth( - env, format.obj()), - media::Java_VideoCaptureFactory_getCaptureFormatHeight( - env, format.obj())), - media::Java_VideoCaptureFactory_getCaptureFormatFramerate(env, - format.obj()), + gfx::Size( + media::Java_VideoCaptureFactory_getCaptureFormatWidth(env, format), + media::Java_VideoCaptureFactory_getCaptureFormatHeight(env, + format)), + media::Java_VideoCaptureFactory_getCaptureFormatFramerate(env, format), pixel_format); capture_formats->push_back(capture_format); DVLOG(1) << device.display_name << " "
diff --git a/media/midi/midi_device_android.cc b/media/midi/midi_device_android.cc index fec90b9e..a9c7584 100644 --- a/media/midi/midi_device_android.cc +++ b/media/midi/midi_device_android.cc
@@ -52,19 +52,19 @@ std::string MidiDeviceAndroid::GetManufacturer() { JNIEnv* env = base::android::AttachCurrentThread(); return ConvertMaybeJavaString( - env, Java_MidiDeviceAndroid_getManufacturer(env, raw_device_.obj())); + env, Java_MidiDeviceAndroid_getManufacturer(env, raw_device_)); } std::string MidiDeviceAndroid::GetProductName() { JNIEnv* env = base::android::AttachCurrentThread(); return ConvertMaybeJavaString( - env, Java_MidiDeviceAndroid_getProduct(env, raw_device_.obj())); + env, Java_MidiDeviceAndroid_getProduct(env, raw_device_)); } std::string MidiDeviceAndroid::GetDeviceVersion() { JNIEnv* env = base::android::AttachCurrentThread(); return ConvertMaybeJavaString( - env, Java_MidiDeviceAndroid_getVersion(env, raw_device_.obj())); + env, Java_MidiDeviceAndroid_getVersion(env, raw_device_)); } } // namespace midi
diff --git a/media/midi/midi_input_port_android.cc b/media/midi/midi_input_port_android.cc index 3389c024..59b355a 100644 --- a/media/midi/midi_input_port_android.cc +++ b/media/midi/midi_input_port_android.cc
@@ -24,13 +24,13 @@ bool MidiInputPortAndroid::Open() { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MidiInputPortAndroid_open(env, raw_port_.obj(), + return Java_MidiInputPortAndroid_open(env, raw_port_, reinterpret_cast<jlong>(this)); } void MidiInputPortAndroid::Close() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_MidiInputPortAndroid_close(env, raw_port_.obj()); + Java_MidiInputPortAndroid_close(env, raw_port_); } void MidiInputPortAndroid::OnData(JNIEnv* env,
diff --git a/media/midi/midi_manager_android.cc b/media/midi/midi_manager_android.cc index d59fa77..54fe915 100644 --- a/media/midi/midi_manager_android.cc +++ b/media/midi/midi_manager_android.cc
@@ -44,7 +44,7 @@ raw_manager_.Reset(Java_MidiManagerAndroid_create( env, base::android::GetApplicationContext(), pointer)); scheduler_.reset(new MidiScheduler(this)); - Java_MidiManagerAndroid_initialize(env, raw_manager_.obj()); + Java_MidiManagerAndroid_initialize(env, raw_manager_); } void MidiManagerAndroid::DispatchSendMidiData(MidiManagerClient* client,
diff --git a/media/midi/midi_output_port_android.cc b/media/midi/midi_output_port_android.cc index 5a45ce40..bcb1e41 100644 --- a/media/midi/midi_output_port_android.cc +++ b/media/midi/midi_output_port_android.cc
@@ -20,12 +20,12 @@ bool MidiOutputPortAndroid::Open() { JNIEnv* env = base::android::AttachCurrentThread(); - return Java_MidiOutputPortAndroid_open(env, raw_port_.obj()); + return Java_MidiOutputPortAndroid_open(env, raw_port_); } void MidiOutputPortAndroid::Close() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_MidiOutputPortAndroid_close(env, raw_port_.obj()); + Java_MidiOutputPortAndroid_close(env, raw_port_); } void MidiOutputPortAndroid::Send(const std::vector<uint8_t>& data) { @@ -37,7 +37,7 @@ ScopedJavaLocalRef<jbyteArray> data_to_pass = base::android::ToJavaByteArray(env, &data[0], data.size()); - Java_MidiOutputPortAndroid_send(env, raw_port_.obj(), data_to_pass.obj()); + Java_MidiOutputPortAndroid_send(env, raw_port_, data_to_pass); } } // namespace midi
diff --git a/media/midi/usb_midi_device_android.cc b/media/midi/usb_midi_device_android.cc index b9003d3..6d6635a 100644 --- a/media/midi/usb_midi_device_android.cc +++ b/media/midi/usb_midi_device_android.cc
@@ -24,7 +24,7 @@ UsbMidiDeviceDelegate* delegate) : raw_device_(raw_device), delegate_(delegate) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_UsbMidiDeviceAndroid_registerSelf(env, raw_device_.obj(), + Java_UsbMidiDeviceAndroid_registerSelf(env, raw_device_, reinterpret_cast<jlong>(this)); GetDescriptorsInternal(); @@ -33,7 +33,7 @@ UsbMidiDeviceAndroid::~UsbMidiDeviceAndroid() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_UsbMidiDeviceAndroid_close(env, raw_device_.obj()); + Java_UsbMidiDeviceAndroid_close(env, raw_device_); } std::vector<uint8_t> UsbMidiDeviceAndroid::GetDescriptors() { @@ -59,8 +59,8 @@ ScopedJavaLocalRef<jbyteArray> data_to_pass = base::android::ToJavaByteArray(env, head, data.size()); - Java_UsbMidiDeviceAndroid_send(env, raw_device_.obj(), endpoint_number, - data_to_pass.obj()); + Java_UsbMidiDeviceAndroid_send(env, raw_device_, endpoint_number, + data_to_pass); } void UsbMidiDeviceAndroid::OnData(JNIEnv* env, @@ -82,7 +82,7 @@ void UsbMidiDeviceAndroid::GetDescriptorsInternal() { JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jbyteArray> descriptors = - Java_UsbMidiDeviceAndroid_getDescriptors(env, raw_device_.obj()); + Java_UsbMidiDeviceAndroid_getDescriptors(env, raw_device_); base::android::JavaByteArrayToByteVector(env, descriptors.obj(), &descriptors_); @@ -115,8 +115,7 @@ std::vector<uint8_t> UsbMidiDeviceAndroid::GetStringDescriptor(int index) { JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jbyteArray> descriptors = - Java_UsbMidiDeviceAndroid_getStringDescriptor(env, raw_device_.obj(), - index); + Java_UsbMidiDeviceAndroid_getStringDescriptor(env, raw_device_, index); std::vector<uint8_t> ret; base::android::JavaByteArrayToByteVector(env, descriptors.obj(), &ret);
diff --git a/media/midi/usb_midi_device_factory_android.cc b/media/midi/usb_midi_device_factory_android.cc index 80fc4276..abb1275 100644 --- a/media/midi/usb_midi_device_factory_android.cc +++ b/media/midi/usb_midi_device_factory_android.cc
@@ -33,7 +33,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); if (!raw_factory_.is_null()) Java_UsbMidiDeviceFactoryAndroid_close( - env, raw_factory_.obj(), base::android::GetApplicationContext()); + env, raw_factory_, base::android::GetApplicationContext()); } void UsbMidiDeviceFactoryAndroid::EnumerateDevices( @@ -49,7 +49,7 @@ callback_ = callback; if (Java_UsbMidiDeviceFactoryAndroid_enumerateDevices( - env, raw_factory_.obj(), base::android::GetApplicationContext())) { + env, raw_factory_, base::android::GetApplicationContext())) { // Asynchronous operation. return; }
diff --git a/mojo/android/javatests/validation_test_util.cc b/mojo/android/javatests/validation_test_util.cc index 989291d0..75f79b3 100644 --- a/mojo/android/javatests/validation_test_util.cc +++ b/mojo/android/javatests/validation_test_util.cc
@@ -37,8 +37,7 @@ input, &data, &num_handles, &error_message)) { ScopedJavaLocalRef<jstring> j_error_message = base::android::ConvertUTF8ToJavaString(env, error_message); - return Java_ValidationTestUtil_buildData(env, nullptr, 0, - j_error_message.obj()); + return Java_ValidationTestUtil_buildData(env, nullptr, 0, j_error_message); } void* data_ptr = &data[0]; if (!data_ptr) {
diff --git a/mojo/android/system/base_run_loop.cc b/mojo/android/system/base_run_loop.cc index 5bf2a3c..8768d2f 100644 --- a/mojo/android/system/base_run_loop.cc +++ b/mojo/android/system/base_run_loop.cc
@@ -45,7 +45,7 @@ static void RunJavaRunnable( const base::android::ScopedJavaGlobalRef<jobject>& runnable_ref) { Java_BaseRunLoop_runRunnable(base::android::AttachCurrentThread(), - runnable_ref.obj()); + runnable_ref); } static void PostDelayedTask(JNIEnv* env,
diff --git a/mojo/android/system/watcher_impl.cc b/mojo/android/system/watcher_impl.cc index 33470fd..a363a59 100644 --- a/mojo/android/system/watcher_impl.cc +++ b/mojo/android/system/watcher_impl.cc
@@ -32,7 +32,7 @@ void OnHandleReady(MojoResult result) { Java_WatcherImpl_onHandleReady(base::android::AttachCurrentThread(), - java_watcher_.obj(), result); + java_watcher_, result); } private:
diff --git a/mojo/common/common_custom_types_struct_traits.h b/mojo/common/common_custom_types_struct_traits.h index f3190f9..b925221 100644 --- a/mojo/common/common_custom_types_struct_traits.h +++ b/mojo/common/common_custom_types_struct_traits.h
@@ -15,6 +15,12 @@ template <> struct StructTraits<mojo::common::mojom::Version, base::Version> { + static bool IsNull(const base::Version& version) { + return !version.IsValid(); + } + static void SetToNull(base::Version* out) { + *out = base::Version(std::string()); + } static const std::vector<uint32_t>& components(const base::Version& version); static bool Read(mojo::common::mojom::VersionDataView data, base::Version* out);
diff --git a/mojo/common/struct_traits_unittest.cc b/mojo/common/struct_traits_unittest.cc index 054519d..5ac4bc9 100644 --- a/mojo/common/struct_traits_unittest.cc +++ b/mojo/common/struct_traits_unittest.cc
@@ -22,7 +22,7 @@ private: // TraitsTestService: - void EchoVersion(const base::Version& m, + void EchoVersion(const base::Optional<base::Version>& m, const EchoVersionCallback& callback) override { callback.Run(m); } @@ -37,11 +37,19 @@ const std::string& version_str = "1.2.3.4"; base::Version input(version_str); mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); - base::Version output; + base::Optional<base::Version> output; proxy->EchoVersion(input, &output); - base::Version test_version(version_str); + EXPECT_TRUE(output.has_value()); + EXPECT_EQ(version_str, output->GetString()); +} - EXPECT_EQ(version_str, output.GetString()); +TEST_F(StructTraitsTest, InvalidVersion) { + const std::string invalid_version_str; + base::Version input(invalid_version_str); + mojom::TraitsTestServicePtr proxy = GetTraitsTestProxy(); + base::Optional<base::Version> output; + proxy->EchoVersion(input, &output); + EXPECT_FALSE(output.has_value()); } } // namespace
diff --git a/mojo/common/traits_test_service.mojom b/mojo/common/traits_test_service.mojom index 9ea63a1..bf508cd 100644 --- a/mojo/common/traits_test_service.mojom +++ b/mojo/common/traits_test_service.mojom
@@ -10,5 +10,5 @@ // serialization and deserialization. interface TraitsTestService { [Sync] - EchoVersion(Version v) => (Version pass); + EchoVersion(Version? v) => (Version? pass); };
diff --git a/net/android/http_auth_negotiate_android.cc b/net/android/http_auth_negotiate_android.cc index fa6f19b25..745ce63 100644 --- a/net/android/http_auth_negotiate_android.cc +++ b/net/android/http_auth_negotiate_android.cc
@@ -65,8 +65,7 @@ JNIEnv* env = AttachCurrentThread(); java_authenticator_.Reset(Java_HttpNegotiateAuthenticator_create( env, - ConvertUTF8ToJavaString(env, prefs->AuthAndroidNegotiateAccountType()) - .obj())); + ConvertUTF8ToJavaString(env, prefs->AuthAndroidNegotiateAccountType()))); } HttpAuthNegotiateAndroid::~HttpAuthNegotiateAndroid() { @@ -140,9 +139,8 @@ JavaNegotiateResultWrapper* callback_wrapper = new JavaNegotiateResultWrapper( callback_task_runner, thread_safe_callback); Java_HttpNegotiateAuthenticator_getNextAuthToken( - env, java_authenticator_.obj(), - reinterpret_cast<intptr_t>(callback_wrapper), java_spn.obj(), - java_server_auth_token.obj(), can_delegate_); + env, java_authenticator_, reinterpret_cast<intptr_t>(callback_wrapper), + java_spn, java_server_auth_token, can_delegate_); return ERR_IO_PENDING; }
diff --git a/net/android/keystore.cc b/net/android/keystore.cc index f648818..cb17900 100644 --- a/net/android/keystore.cc +++ b/net/android/keystore.cc
@@ -59,7 +59,7 @@ // Invoke platform API ScopedJavaLocalRef<jbyteArray> signature_ref = Java_AndroidKeyStore_rawSignDigestWithPrivateKey(env, private_key_ref, - digest_ref.obj()); + digest_ref); if (HasException(env) || signature_ref.is_null()) return false;
diff --git a/net/android/keystore_unittest.cc b/net/android/keystore_unittest.cc index d28d6fa2..32137314 100644 --- a/net/android/keystore_unittest.cc +++ b/net/android/keystore_unittest.cc
@@ -167,9 +167,8 @@ env, reinterpret_cast<const uint8_t*>(pkcs8_key.data()), pkcs8_key.size())); - ScopedJava key( - Java_AndroidKeyStoreTestUtil_createPrivateKeyFromPKCS8( - env, key_type, bytes.obj())); + ScopedJava key(Java_AndroidKeyStoreTestUtil_createPrivateKeyFromPKCS8( + env, key_type, bytes)); return key; }
diff --git a/net/android/network_change_notifier_delegate_android.cc b/net/android/network_change_notifier_delegate_android.cc index 0627d51..6bafb44 100644 --- a/net/android/network_change_notifier_delegate_android.cc +++ b/net/android/network_change_notifier_delegate_android.cc
@@ -78,21 +78,19 @@ Java_NetworkChangeNotifier_init( env, base::android::GetApplicationContext())); Java_NetworkChangeNotifier_addNativeObserver( - env, java_network_change_notifier_.obj(), - reinterpret_cast<intptr_t>(this)); + env, java_network_change_notifier_, reinterpret_cast<intptr_t>(this)); SetCurrentConnectionType( - ConvertConnectionType( - Java_NetworkChangeNotifier_getCurrentConnectionType( - env, java_network_change_notifier_.obj()))); + ConvertConnectionType(Java_NetworkChangeNotifier_getCurrentConnectionType( + env, java_network_change_notifier_))); SetCurrentMaxBandwidth( Java_NetworkChangeNotifier_getCurrentMaxBandwidthInMbps( - env, java_network_change_notifier_.obj())); + env, java_network_change_notifier_)); SetCurrentDefaultNetwork(Java_NetworkChangeNotifier_getCurrentDefaultNetId( - env, java_network_change_notifier_.obj())); + env, java_network_change_notifier_)); NetworkMap network_map; ScopedJavaLocalRef<jlongArray> networks_and_types = Java_NetworkChangeNotifier_getCurrentNetworksAndTypes( - env, java_network_change_notifier_.obj()); + env, java_network_change_notifier_); JavaLongArrayToNetworkMap(env, networks_and_types.obj(), &network_map); SetCurrentNetworksAndTypes(network_map); } @@ -102,8 +100,7 @@ observers_->AssertEmpty(); JNIEnv* env = base::android::AttachCurrentThread(); Java_NetworkChangeNotifier_removeNativeObserver( - env, java_network_change_notifier_.obj(), - reinterpret_cast<intptr_t>(this)); + env, java_network_change_notifier_, reinterpret_cast<intptr_t>(this)); } NetworkChangeNotifier::ConnectionType @@ -117,8 +114,7 @@ DCHECK(thread_checker_.CalledOnValidThread()); return ConvertConnectionSubtype( Java_NetworkChangeNotifier_getCurrentConnectionSubtype( - base::android::AttachCurrentThread(), - java_network_change_notifier_.obj())); + base::android::AttachCurrentThread(), java_network_change_notifier_)); } void NetworkChangeNotifierDelegateAndroid:: @@ -358,7 +354,7 @@ NetworkChangeNotifier::NetworkList networks) { JNIEnv* env = base::android::AttachCurrentThread(); Java_NetworkChangeNotifier_fakePurgeActiveNetworkList( - env, base::android::ToJavaLongArray(env, networks).obj()); + env, base::android::ToJavaLongArray(env, networks)); } void NetworkChangeNotifierDelegateAndroid::FakeDefaultNetwork(
diff --git a/net/android/network_library.cc b/net/android/network_library.cc index aec12f1f5..da62b79 100644 --- a/net/android/network_library.cc +++ b/net/android/network_library.cc
@@ -45,7 +45,7 @@ ScopedJavaLocalRef<jobject> result = Java_AndroidNetworkLibrary_verifyServerCertificates( - env, chain_byte_array.obj(), auth_string.obj(), host_string.obj()); + env, chain_byte_array, auth_string, host_string); ExtractCertVerifyResult(result.obj(), status, is_issued_by_known_root, verified_chain); @@ -55,7 +55,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jbyteArray> cert_array = ToJavaByteArray(env, cert, len); DCHECK(!cert_array.is_null()); - Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array.obj()); + Java_AndroidNetworkLibrary_addTestRootCertificate(env, cert_array); } void ClearTestRootCertificates() { @@ -72,8 +72,8 @@ ToJavaByteArray(env, public_key, public_len); ScopedJavaLocalRef<jbyteArray> private_array = ToJavaByteArray(env, private_key, private_len); - jboolean ret = Java_AndroidNetworkLibrary_storeKeyPair(env, - GetApplicationContext(), public_array.obj(), private_array.obj()); + jboolean ret = Java_AndroidNetworkLibrary_storeKeyPair( + env, GetApplicationContext(), public_array, private_array); LOG_IF(WARNING, !ret) << "Call to Java_AndroidNetworkLibrary_storeKeyPair failed"; return ret; @@ -85,8 +85,8 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jbyteArray> data_array = ToJavaByteArray(env, reinterpret_cast<const uint8_t*>(data), data_len); - jboolean ret = Java_AndroidNetworkLibrary_storeCertificate(env, - GetApplicationContext(), cert_type, data_array.obj()); + jboolean ret = Java_AndroidNetworkLibrary_storeCertificate( + env, GetApplicationContext(), cert_type, data_array); LOG_IF(WARNING, !ret) << "Call to Java_AndroidNetworkLibrary_storeCertificate" " failed"; @@ -107,8 +107,8 @@ ScopedJavaLocalRef<jstring> extension_string = ConvertUTF8ToJavaString(env, extension); ScopedJavaLocalRef<jstring> ret = - Java_AndroidNetworkLibrary_getMimeTypeFromExtension( - env, extension_string.obj()); + Java_AndroidNetworkLibrary_getMimeTypeFromExtension(env, + extension_string); if (!ret.obj()) return false;
diff --git a/net/proxy/proxy_config_service_android.cc b/net/proxy/proxy_config_service_android.cc index 44f41fe..25049911 100644 --- a/net/proxy/proxy_config_service_android.cc +++ b/net/proxy/proxy_config_service_android.cc
@@ -158,7 +158,7 @@ JNIEnv* env = AttachCurrentThread(); ScopedJavaLocalRef<jstring> str = ConvertUTF8ToJavaString(env, property); ScopedJavaLocalRef<jstring> result = - Java_ProxyChangeListener_getProperty(env, str.obj()); + Java_ProxyChangeListener_getProperty(env, str); return result.is_null() ? std::string() : ConvertJavaStringToUTF8(env, result.obj()); } @@ -213,10 +213,8 @@ env, base::android::GetApplicationContext())); CHECK(!java_proxy_change_listener_.is_null()); } - Java_ProxyChangeListener_start( - env, - java_proxy_change_listener_.obj(), - reinterpret_cast<intptr_t>(&jni_delegate_)); + Java_ProxyChangeListener_start(env, java_proxy_change_listener_, + reinterpret_cast<intptr_t>(&jni_delegate_)); } void FetchInitialConfig() { @@ -331,7 +329,7 @@ if (java_proxy_change_listener_.is_null()) return; JNIEnv* env = AttachCurrentThread(); - Java_ProxyChangeListener_stop(env, java_proxy_change_listener_.obj()); + Java_ProxyChangeListener_stop(env, java_proxy_change_listener_); } // Called on the network thread.
diff --git a/net/quic/core/crypto/quic_crypto_server_config.cc b/net/quic/core/crypto/quic_crypto_server_config.cc index 2c843a61..4133899d 100644 --- a/net/quic/core/crypto/quic_crypto_server_config.cc +++ b/net/quic/core/crypto/quic_crypto_server_config.cc
@@ -619,7 +619,7 @@ if (!ClientDemandsX509Proof(client_hello) && FLAGS_quic_require_x509) { *error_details = "Missing or invalid PDMD"; - return QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER; + return QUIC_UNSUPPORTED_PROOF_DEMAND; } DCHECK(proof_source_.get()); string chlo_hash; @@ -1516,9 +1516,9 @@ bool should_return_sct = params->sct_supported_by_client && enable_serving_sct_; const size_t sct_size = should_return_sct ? crypto_proof.cert_sct.size() : 0; - if (info.valid_source_address_token || - crypto_proof.signature.size() + compressed.size() + sct_size < - max_unverified_size) { + const size_t total_size = + crypto_proof.signature.size() + compressed.size() + sct_size; + if (info.valid_source_address_token || total_size < max_unverified_size) { out->SetStringPiece(kCertificateTag, compressed); out->SetStringPiece(kPROF, crypto_proof.signature); if (should_return_sct) { @@ -1528,6 +1528,14 @@ out->SetStringPiece(kCertificateSCTTag, crypto_proof.cert_sct); } } + } else { + if (FLAGS_quic_use_chlo_packet_size) { + DLOG(WARNING) << "Sending inchoate REJ for hostname: " << info.sni + << " signature: " << crypto_proof.signature.size() + << " cert: " << compressed.size() << " sct:" << sct_size + << " total: " << total_size + << " max: " << max_unverified_size; + } } }
diff --git a/net/quic/core/quic_config_test.cc b/net/quic/core/quic_config_test.cc index adac1600..d89ade5 100644 --- a/net/quic/core/quic_config_test.cc +++ b/net/quic/core/quic_config_test.cc
@@ -219,8 +219,9 @@ // peer: the receive window must be at least the default of 16 Kb. QuicConfig config; const uint64_t kInvalidWindow = kMinimumFlowControlSendWindow - 1; - EXPECT_DFATAL(config.SetInitialStreamFlowControlWindowToSend(kInvalidWindow), - "Initial stream flow control receive window"); + EXPECT_QUIC_BUG( + config.SetInitialStreamFlowControlWindowToSend(kInvalidWindow), + "Initial stream flow control receive window"); EXPECT_EQ(kMinimumFlowControlSendWindow, config.GetInitialStreamFlowControlWindowToSend());
diff --git a/net/quic/core/quic_connection.cc b/net/quic/core/quic_connection.cc index bb7170d..96ecadda 100644 --- a/net/quic/core/quic_connection.cc +++ b/net/quic/core/quic_connection.cc
@@ -1681,7 +1681,7 @@ DVLOG(1) << ENDPOINT << "time we began writing last sent packet: " << packet_send_time.ToDebuggingValue(); - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { // TODO(ianswett): Change the packet number length and other packet creator // options by a more explicit API than setting a struct value directly, // perhaps via the NetworkChangeVisitor. @@ -1706,7 +1706,7 @@ SetRetransmissionAlarm(); } - if (FLAGS_quic_simple_packet_number_length) { + if (FLAGS_quic_simple_packet_number_length_2) { // The packet number length must be updated after OnPacketSent, because it // may change the packet number length in packet. if (FLAGS_quic_least_unacked_packet_number_length) {
diff --git a/net/quic/core/quic_connection_test.cc b/net/quic/core/quic_connection_test.cc index e63abd80..a63df623 100644 --- a/net/quic/core/quic_connection_test.cc +++ b/net/quic/core/quic_connection_test.cc
@@ -709,7 +709,6 @@ connection_id_length_(PACKET_8BYTE_CONNECTION_ID) { connection_.set_defer_send_in_response_to_packets(GetParam().ack_response == AckResponse::kDefer); - FLAGS_quic_always_log_bugs_for_tests = true; connection_.set_visitor(&visitor_); connection_.SetSendAlgorithm(kDefaultPathId, send_algorithm_); connection_.SetLossAlgorithm(kDefaultPathId, loss_algorithm_.get()); @@ -1374,7 +1373,7 @@ EXPECT_CALL(visitor_, OnSuccessfulVersionNegotiation(_)); EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_UNENCRYPTED_STREAM_DATA, _, ConnectionCloseSource::FROM_SELF)); - EXPECT_DFATAL(ProcessDataPacket(kDefaultPathId, 1, !kEntropyFlag), ""); + EXPECT_QUIC_BUG(ProcessDataPacket(kDefaultPathId, 1, !kEntropyFlag), ""); EXPECT_FALSE(QuicConnectionPeer::GetConnectionClosePacket(&connection_) == nullptr); const vector<QuicConnectionCloseFrame>& connection_close_frames = @@ -4782,7 +4781,7 @@ // not result in a QuicAckNotifier being used-after-free (fail under ASAN). // Regression test for b/18594622 scoped_refptr<MockAckListener> listener(new MockAckListener); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( connection_.SendStreamDataWithString(3, "", 0, !kFin, listener.get()), "Attempt to send empty stream frame"); } @@ -4841,8 +4840,8 @@ EXPECT_CALL(visitor_, OnConnectionClosed(QUIC_ATTEMPT_TO_SEND_UNENCRYPTED_STREAM_DATA, _, ConnectionCloseSource::FROM_SELF)); - EXPECT_DFATAL(connection_.SendStreamDataWithString(3, "", 0, kFin, nullptr), - "Cannot send stream data without encryption."); + EXPECT_QUIC_BUG(connection_.SendStreamDataWithString(3, "", 0, kFin, nullptr), + "Cannot send stream data without encryption."); EXPECT_FALSE(connection_.connected()); } @@ -4888,7 +4887,7 @@ EXPECT_FALSE(QuicConnectionPeer::IsMultipathEnabled(&connection_)); peer_creator_.SetCurrentPath(/*path_id=*/1u, 1u, 10u); QuicStreamFrame stream_frame(1u, false, 0u, StringPiece()); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( ProcessFramePacket(QuicFrame(&stream_frame)), "Received a packet with multipath flag but multipath is not enabled."); EXPECT_FALSE(connection_.connected());
diff --git a/net/quic/core/quic_flags.cc b/net/quic/core/quic_flags.cc index ab5ceb8..49b8c7a3 100644 --- a/net/quic/core/quic_flags.cc +++ b/net/quic/core/quic_flags.cc
@@ -86,10 +86,6 @@ // Do not use a QuicAckListener in order to confirm a larger Path MTU. bool FLAGS_quic_no_mtu_discovery_ack_listener = true; -// Deprecate QuicPacketCreator::next_packet_number_length_ because it's no -// longer necessary. -bool FLAGS_quic_simple_packet_number_length = true; - // If true, enables QUIC_VERSION_35. bool FLAGS_quic_enable_version_35 = true; @@ -162,3 +158,10 @@ // If true, the connection will check whether it is application-limited, and // notify the congestion controller about it. bool FLAGS_quic_enable_app_limited_check = true; + +// Deprecate QuicPacketCreator::next_packet_number_length_ because it's no +// longer necessary. +bool FLAGS_quic_simple_packet_number_length_2 = true; + +// If true, disables QUIC version less than 32. +bool FLAGS_quic_disable_pre_32 = true;
diff --git a/net/quic/core/quic_flags.h b/net/quic/core/quic_flags.h index b3f4869..9b862f6 100644 --- a/net/quic/core/quic_flags.h +++ b/net/quic/core/quic_flags.h
@@ -29,7 +29,6 @@ NET_EXPORT_PRIVATE extern bool FLAGS_quic_use_cheap_stateless_rejects; NET_EXPORT_PRIVATE extern bool FLAGS_quic_respect_http2_settings_frame; NET_EXPORT_PRIVATE extern bool FLAGS_quic_no_mtu_discovery_ack_listener; -NET_EXPORT_PRIVATE extern bool FLAGS_quic_simple_packet_number_length; NET_EXPORT_PRIVATE extern bool FLAGS_quic_enable_version_35; NET_EXPORT_PRIVATE extern bool FLAGS_quic_enable_version_36; NET_EXPORT_PRIVATE extern bool FLAGS_quic_enable_version_36_v2; @@ -51,5 +50,7 @@ NET_EXPORT_PRIVATE extern bool FLAGS_quic_use_chlo_packet_size; NET_EXPORT_PRIVATE extern bool FLAGS_quic_buffer_packet_till_chlo; NET_EXPORT_PRIVATE extern bool FLAGS_quic_enable_app_limited_check; +NET_EXPORT_PRIVATE extern bool FLAGS_quic_simple_packet_number_length_2; +NET_EXPORT_PRIVATE extern bool FLAGS_quic_disable_pre_32; #endif // NET_QUIC_QUIC_FLAGS_H_
diff --git a/net/quic/core/quic_flow_controller_test.cc b/net/quic/core/quic_flow_controller_test.cc index f6bae8b..5b7981f1 100644 --- a/net/quic/core/quic_flow_controller_test.cc +++ b/net/quic/core/quic_flow_controller_test.cc
@@ -82,9 +82,10 @@ // Try to send more bytes, violating flow control. EXPECT_CALL(connection_, CloseConnection(QUIC_FLOW_CONTROL_SENT_TOO_MUCH_DATA, _, _)); - EXPECT_DFATAL(flow_controller_->AddBytesSent(send_window_ * 10), - base::StringPrintf("Trying to send an extra %" PRIu64 " bytes", - send_window_ * 10)); + EXPECT_QUIC_BUG( + flow_controller_->AddBytesSent(send_window_ * 10), + base::StringPrintf("Trying to send an extra %" PRIu64 " bytes", + send_window_ * 10)); EXPECT_TRUE(flow_controller_->IsBlocked()); EXPECT_EQ(0u, flow_controller_->SendWindowSize()); }
diff --git a/net/quic/core/quic_framer_test.cc b/net/quic/core/quic_framer_test.cc index 922ed4ca..dd49260d 100644 --- a/net/quic/core/quic_framer_test.cc +++ b/net/quic/core/quic_framer_test.cc
@@ -4,7 +4,7 @@ #include "net/quic/core/quic_framer.h" -#include <stdint.h> +#include <string.h> #include <algorithm> #include <map> @@ -642,7 +642,7 @@ memset(packet + header_size, 0, kMaxPacketSize - header_size); QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false); - EXPECT_DFATAL(framer_.ProcessPacket(encrypted), "Packet too large:1"); + EXPECT_QUIC_BUG(framer_.ProcessPacket(encrypted), "Packet too large:1"); ASSERT_TRUE(visitor_.header_.get()); // Make sure we've parsed the packet header, so we can send an error.
diff --git a/net/quic/core/quic_headers_stream_test.cc b/net/quic/core/quic_headers_stream_test.cc index 59f300e..ba6e34b 100644 --- a/net/quic/core/quic_headers_stream_test.cc +++ b/net/quic/core/quic_headers_stream_test.cc
@@ -208,7 +208,6 @@ FLAGS_spdy_framer_use_new_methods3 = true; break; } - FLAGS_quic_always_log_bugs_for_tests = true; VLOG(1) << "TestParams: version: " << QuicVersionToString(version) << ", perspective: " << perspective << ", http2_decoder: " << http2_decoder @@ -460,7 +459,7 @@ CheckHeaders(); saved_data_.clear(); } else { - EXPECT_DFATAL( + EXPECT_QUIC_BUG( headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_.Clone(), nullptr), "Client shouldn't send PUSH_PROMISE");
diff --git a/net/quic/core/quic_multipath_received_packet_manager_test.cc b/net/quic/core/quic_multipath_received_packet_manager_test.cc index 7ca4c2a..fcb8ed3 100644 --- a/net/quic/core/quic_multipath_received_packet_manager_test.cc +++ b/net/quic/core/quic_multipath_received_packet_manager_test.cc
@@ -67,8 +67,8 @@ EXPECT_TRUE( QuicMultipathReceivedPacketManagerPeer::PathReceivedPacketManagerExists( &multipath_manager_, kPathId1)); - EXPECT_DFATAL(multipath_manager_.OnPathCreated(kDefaultPathId, &stats_), - "Received packet manager of path already exists"); + EXPECT_QUIC_BUG(multipath_manager_.OnPathCreated(kDefaultPathId, &stats_), + "Received packet manager of path already exists"); // Path 2 created. multipath_manager_.OnPathCreated(kPathId2, &stats_); EXPECT_TRUE( @@ -88,17 +88,17 @@ EXPECT_FALSE( QuicMultipathReceivedPacketManagerPeer::PathReceivedPacketManagerExists( &multipath_manager_, kDefaultPathId)); - EXPECT_DFATAL(multipath_manager_.OnPathClosed(kDefaultPathId), - "Received packet manager of path does not exist"); + EXPECT_QUIC_BUG(multipath_manager_.OnPathClosed(kDefaultPathId), + "Received packet manager of path does not exist"); } TEST_F(QuicMultipathReceivedPacketManagerTest, RecordPacketReceived) { EXPECT_CALL(*manager_0_, RecordPacketReceived(_, _, _)).Times(1); multipath_manager_.RecordPacketReceived(kDefaultPathId, kBytes, header_, QuicTime::Zero()); - EXPECT_DFATAL(multipath_manager_.RecordPacketReceived( - kPathId2, kBytes, header_, QuicTime::Zero()), - "Received a packet on a non-existent path"); + EXPECT_QUIC_BUG(multipath_manager_.RecordPacketReceived( + kPathId2, kBytes, header_, QuicTime::Zero()), + "Received a packet on a non-existent path"); } TEST_F(QuicMultipathReceivedPacketManagerTest, IsMissing) { @@ -109,8 +109,8 @@ EXPECT_TRUE( multipath_manager_.IsMissing(kDefaultPathId, header_.packet_number)); EXPECT_FALSE(multipath_manager_.IsMissing(kPathId1, header_.packet_number)); - EXPECT_DFATAL(multipath_manager_.IsMissing(kPathId2, header_.packet_number), - "Check whether a packet is missing on a non-existent path"); + EXPECT_QUIC_BUG(multipath_manager_.IsMissing(kPathId2, header_.packet_number), + "Check whether a packet is missing on a non-existent path"); } TEST_F(QuicMultipathReceivedPacketManagerTest, IsAwaitingPacket) { @@ -122,7 +122,7 @@ header_.packet_number)); EXPECT_FALSE( multipath_manager_.IsAwaitingPacket(kPathId1, header_.packet_number)); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( multipath_manager_.IsAwaitingPacket(kPathId2, header_.packet_number), "Check whether a packet is awaited on a non-existent path"); } @@ -149,8 +149,9 @@ EXPECT_CALL(*manager_1_, HasNewMissingPackets()).WillOnce(Return(false)); EXPECT_TRUE(multipath_manager_.HasNewMissingPackets(kDefaultPathId)); EXPECT_FALSE(multipath_manager_.HasNewMissingPackets(kPathId1)); - EXPECT_DFATAL(multipath_manager_.HasNewMissingPackets(kPathId2), - "Check whether has new missing packets on a non-existent path"); + EXPECT_QUIC_BUG( + multipath_manager_.HasNewMissingPackets(kPathId2), + "Check whether has new missing packets on a non-existent path"); } } // namespace
diff --git a/net/quic/core/quic_multipath_sent_packet_manager_test.cc b/net/quic/core/quic_multipath_sent_packet_manager_test.cc index 4098c30ad..62177aa 100644 --- a/net/quic/core/quic_multipath_sent_packet_manager_test.cc +++ b/net/quic/core/quic_multipath_sent_packet_manager_test.cc
@@ -36,7 +36,6 @@ &multipath_manager_, manager_1_); QuicMultipathSentPacketManagerPeer::AddPathWithCloseState( &multipath_manager_, manager_2_); - FLAGS_quic_always_log_bugs_for_tests = true; } ~QuicMultipathSentPacketManagerTest() override {} @@ -156,7 +155,7 @@ EXPECT_EQ(2u, multipath_manager_.GetLeastUnacked(kDefaultPathId)); EXPECT_EQ(3u, multipath_manager_.GetLeastUnacked(kTestPathId1)); EXPECT_EQ(4u, multipath_manager_.GetLeastUnacked(kTestPathId2)); - EXPECT_DFATAL(multipath_manager_.GetLeastUnacked(kTestPathId3), ""); + EXPECT_QUIC_BUG(multipath_manager_.GetLeastUnacked(kTestPathId3), ""); } TEST_F(QuicMultipathSentPacketManagerTest, OnPacketSent) { @@ -181,16 +180,16 @@ EXPECT_CALL(*manager_2_, OnPacketSent(_, _, _, _, _, _)).Times(0); EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_MULTIPATH_PATH_NOT_ACTIVE, _, _)); - EXPECT_DFATAL(multipath_manager_.OnPacketSent( - &packet2, kInvalidPathId, 0, clock_.Now(), - NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), - ""); + EXPECT_QUIC_BUG(multipath_manager_.OnPacketSent( + &packet2, kInvalidPathId, 0, clock_.Now(), + NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), + ""); EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_MULTIPATH_PATH_DOES_NOT_EXIST, _, _)); - EXPECT_DFATAL(multipath_manager_.OnPacketSent( - &packet3, kInvalidPathId, 0, clock_.Now(), - NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), - ""); + EXPECT_QUIC_BUG(multipath_manager_.OnPacketSent( + &packet3, kInvalidPathId, 0, clock_.Now(), + NOT_RETRANSMISSION, HAS_RETRANSMITTABLE_DATA), + ""); } TEST_F(QuicMultipathSentPacketManagerTest, OnRetransmissionTimeout) { @@ -268,11 +267,11 @@ multipath_manager_.OnConnectionMigration(kDefaultPathId, PORT_CHANGE); EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_MULTIPATH_PATH_NOT_ACTIVE, _, _)); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( multipath_manager_.OnConnectionMigration(kTestPathId2, PORT_CHANGE), ""); EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_MULTIPATH_PATH_DOES_NOT_EXIST, _, _)); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( multipath_manager_.OnConnectionMigration(kTestPathId3, PORT_CHANGE), ""); } @@ -298,7 +297,7 @@ EXPECT_EQ(10u, multipath_manager_.GetLargestObserved(kDefaultPathId)); EXPECT_EQ(11u, multipath_manager_.GetLargestObserved(kTestPathId1)); EXPECT_EQ(12u, multipath_manager_.GetLargestObserved(kTestPathId2)); - EXPECT_DFATAL(multipath_manager_.GetLargestObserved(kTestPathId3), ""); + EXPECT_QUIC_BUG(multipath_manager_.GetLargestObserved(kTestPathId3), ""); } TEST_F(QuicMultipathSentPacketManagerTest, GetLargestSentPacket) { @@ -311,7 +310,7 @@ EXPECT_EQ(10u, multipath_manager_.GetLargestSentPacket(kDefaultPathId)); EXPECT_EQ(11u, multipath_manager_.GetLargestSentPacket(kTestPathId1)); EXPECT_EQ(12u, multipath_manager_.GetLargestSentPacket(kTestPathId2)); - EXPECT_DFATAL(multipath_manager_.GetLargestSentPacket(kTestPathId3), ""); + EXPECT_QUIC_BUG(multipath_manager_.GetLargestSentPacket(kTestPathId3), ""); } TEST_F(QuicMultipathSentPacketManagerTest, GetLeastPacketAwaitedByPeer) { @@ -325,8 +324,8 @@ multipath_manager_.GetLeastPacketAwaitedByPeer(kDefaultPathId)); EXPECT_EQ(11u, multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId1)); EXPECT_EQ(12u, multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId2)); - EXPECT_DFATAL(multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId3), - ""); + EXPECT_QUIC_BUG(multipath_manager_.GetLeastPacketAwaitedByPeer(kTestPathId3), + ""); } TEST_F(QuicMultipathSentPacketManagerTest, SetNetworkChangeVisitor) {
diff --git a/net/quic/core/quic_one_block_arena_test.cc b/net/quic/core/quic_one_block_arena_test.cc index 3f63632..15ff0c67 100644 --- a/net/quic/core/quic_one_block_arena_test.cc +++ b/net/quic/core/quic_one_block_arena_test.cc
@@ -7,6 +7,7 @@ #include "net/quic/core/interval_set.h" #include "net/quic/core/quic_flags.h" #include "net/quic/core/quic_utils.h" +#include "net/quic/test_tools/quic_test_utils.h" #include "net/test/gtest_util.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -33,8 +34,8 @@ EXPECT_TRUE(ptr.is_from_arena()); } QuicArenaScopedPtr<TestObject> ptr; - EXPECT_DFATAL(ptr = arena.New<TestObject>(), - "Ran out of space in QuicOneBlockArena"); + EXPECT_QUIC_BUG(ptr = arena.New<TestObject>(), + "Ran out of space in QuicOneBlockArena"); EXPECT_FALSE(ptr.is_from_arena()); }
diff --git a/net/quic/core/quic_packet_creator.cc b/net/quic/core/quic_packet_creator.cc index 285ad708..d6b82a1 100644 --- a/net/quic/core/quic_packet_creator.cc +++ b/net/quic/core/quic_packet_creator.cc
@@ -83,7 +83,7 @@ } void QuicPacketCreator::MaybeUpdatePacketNumberLength() { - DCHECK(!FLAGS_quic_simple_packet_number_length); + DCHECK(!FLAGS_quic_simple_packet_number_length_2); if (!queued_frames_.empty()) { // Don't change creator state if there are frames queued. return; @@ -115,7 +115,7 @@ void QuicPacketCreator::UpdatePacketNumberLength( QuicPacketNumber least_packet_awaited_by_peer, QuicPacketCount max_packets_in_flight) { - if (FLAGS_quic_simple_packet_number_length && !queued_frames_.empty()) { + if (FLAGS_quic_simple_packet_number_length_2 && !queued_frames_.empty()) { // Don't change creator state if there are frames queued. QUIC_BUG << "Called UpdatePacketNumberLength with " << queued_frames_.size() << " queued_frames. First frame type:" @@ -128,7 +128,7 @@ const QuicPacketNumber current_delta = packet_.packet_number + 1 - least_packet_awaited_by_peer; const uint64_t delta = max(current_delta, max_packets_in_flight); - if (FLAGS_quic_simple_packet_number_length) { + if (FLAGS_quic_simple_packet_number_length_2) { packet_.packet_number_length = QuicFramer::GetMinSequenceNumberLength(delta * 4); } else { @@ -209,7 +209,7 @@ IncludeNonceInPublicHeader(), PACKET_6BYTE_PACKET_NUMBER, offset)); - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { MaybeUpdatePacketNumberLength(); } QUIC_BUG_IF(!HasRoomForStreamFrame(id, offset)) @@ -304,7 +304,7 @@ // Temporarily set the packet number length and change the encryption level. packet_.packet_number_length = retransmission.packet_number_length; - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { next_packet_number_length_ = retransmission.packet_number_length; } packet_.num_padding_bytes = retransmission.num_padding_bytes; @@ -318,12 +318,13 @@ // Serialize the packet and restore packet number length state. for (const QuicFrame& frame : retransmission.retransmittable_frames) { bool success = AddFrame(frame, false); - LOG_IF(DFATAL, !success) - << " Failed to add frame of type:" << frame.type - << " num_frames:" << retransmission.retransmittable_frames.size() - << " retransmission.packet_number_length:" - << retransmission.packet_number_length - << " packet_.packet_number_length:" << packet_.packet_number_length; + QUIC_BUG_IF(!success) << " Failed to add frame of type:" << frame.type + << " num_frames:" + << retransmission.retransmittable_frames.size() + << " retransmission.packet_number_length:" + << retransmission.packet_number_length + << " packet_.packet_number_length:" + << packet_.packet_number_length; } SerializePacket(buffer, buffer_len); packet_.original_path_id = retransmission.path_id; @@ -331,7 +332,7 @@ packet_.transmission_type = retransmission.transmission_type; OnSerializedPacket(); // Restore old values. - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { // OnSerializedPacket updates the packet_number_length, so it's incorrect to // restore it here. packet_.packet_number_length = saved_length; @@ -486,7 +487,7 @@ return packet_size_; } // Update packet number length on packet boundary. - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { packet_.packet_number_length = next_packet_number_length_; } packet_size_ = GetPacketHeaderSize( @@ -621,7 +622,7 @@ ConnectionCloseSource::FROM_SELF); return false; } - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { MaybeUpdatePacketNumberLength(); } size_t frame_len = framer_->GetSerializedFrameLength(
diff --git a/net/quic/core/quic_packet_creator_test.cc b/net/quic/core/quic_packet_creator_test.cc index ec7156a..b7848b6 100644 --- a/net/quic/core/quic_packet_creator_test.cc +++ b/net/quic/core/quic_packet_creator_test.cc
@@ -131,7 +131,6 @@ &buffer_allocator_, &delegate_), serialized_packet_(creator_.NoPacket()) { - FLAGS_quic_always_log_bugs_for_tests = true; creator_.set_connection_id_length(GetParam().connection_id_length); creator_.SetEncrypter(ENCRYPTION_INITIAL, new NullEncrypter()); @@ -179,7 +178,7 @@ // Returns the number of bytes consumed by the header of packet, including // the version. size_t GetPacketHeaderOverhead(QuicVersion version) { - if (FLAGS_quic_simple_packet_number_length) { + if (FLAGS_quic_simple_packet_number_length_2) { return GetPacketHeaderSize( version, creator_.connection_id_length(), kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce, @@ -280,7 +279,7 @@ } TEST_P(QuicPacketCreatorTest, SerializeChangingSequenceNumberLength) { - FLAGS_quic_simple_packet_number_length = false; + FLAGS_quic_simple_packet_number_length_2 = false; frames_.push_back(QuicFrame(new QuicAckFrame(MakeAckFrame(0u)))); creator_.AddSavedFrame(frames_[0]); QuicPacketCreatorPeer::SetNextPacketNumberLength(&creator_, @@ -329,7 +328,7 @@ } TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacket) { - FLAGS_quic_simple_packet_number_length = false; + FLAGS_quic_simple_packet_number_length_2 = false; // Changing the packet number length with queued frames in the creator // should hold the change until after any currently queued frames are // serialized. @@ -412,7 +411,7 @@ } TEST_P(QuicPacketCreatorTest, ChangeSequenceNumberLengthMidPacketDoesNothing) { - FLAGS_quic_simple_packet_number_length = true; + FLAGS_quic_simple_packet_number_length_2 = true; EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); // Changing the packet number length with queued frames in the creator @@ -423,8 +422,8 @@ // Now change packet number length and expect a QUIC_BUG and no change in // packet number length. - EXPECT_DFATAL(creator_.UpdatePacketNumberLength(0, 256), - "Called UpdatePacketNumberLength with 1 queued_frames."); + EXPECT_QUIC_BUG(creator_.UpdatePacketNumberLength(0, 256), + "Called UpdatePacketNumberLength with 1 queued_frames."); EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); delete ack_frame.ack_frame; @@ -434,7 +433,7 @@ // If the original packet number length, the current packet number // length, and the configured send packet number length are different, the // retransmit must sent with the original length and the others do not change. - if (!FLAGS_quic_simple_packet_number_length) { + if (!FLAGS_quic_simple_packet_number_length_2) { QuicPacketCreatorPeer::SetNextPacketNumberLength( &creator_, PACKET_4BYTE_PACKET_NUMBER); } @@ -451,7 +450,7 @@ EXPECT_CALL(delegate_, OnSerializedPacket(_)) .WillOnce(Invoke(this, &QuicPacketCreatorTest::SaveSerializedPacket)); creator_.ReserializeAllFrames(retransmission, buffer, kMaxPacketSize); - if (FLAGS_quic_simple_packet_number_length) { + if (FLAGS_quic_simple_packet_number_length_2) { // The packet number length is updated after every packet is sent, // so there is no need to restore the old length after sending. EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, @@ -550,7 +549,7 @@ PendingRetransmission retransmission(CreateRetransmission( frames, false /* has_crypto_handshake */, kNumPaddingBytes1 /* padding bytes */, ENCRYPTION_NONE, - FLAGS_quic_simple_packet_number_length + FLAGS_quic_simple_packet_number_length_2 ? QuicPacketCreatorPeer::GetPacketNumberLength(&creator_) : QuicPacketCreatorPeer::NextPacketNumberLength(&creator_))); EXPECT_CALL(delegate_, OnSerializedPacket(_)) @@ -812,7 +811,7 @@ } TEST_P(QuicPacketCreatorTest, UpdatePacketNumberLengthLeastAwaiting_Old) { - FLAGS_quic_simple_packet_number_length = false; + FLAGS_quic_simple_packet_number_length_2 = false; EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); @@ -839,7 +838,7 @@ } TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthBandwidth_old) { - FLAGS_quic_simple_packet_number_length = false; + FLAGS_quic_simple_packet_number_length_2 = false; EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::NextPacketNumberLength(&creator_)); @@ -863,7 +862,7 @@ } TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthLeastAwaiting) { - FLAGS_quic_simple_packet_number_length = true; + FLAGS_quic_simple_packet_number_length_2 = true; EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); @@ -890,7 +889,7 @@ } TEST_P(QuicPacketCreatorTest, UpdatePacketSequenceNumberLengthCwnd) { - FLAGS_quic_simple_packet_number_length = true; + FLAGS_quic_simple_packet_number_length_2 = true; EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, QuicPacketCreatorPeer::GetPacketNumberLength(&creator_)); @@ -1181,8 +1180,8 @@ // Change current path. QuicPathId kPathId1 = 1; - EXPECT_DFATAL(creator_.SetCurrentPath(kPathId1, 1, 0), - "Unable to change paths when a packet is under construction"); + EXPECT_QUIC_BUG(creator_.SetCurrentPath(kPathId1, 1, 0), + "Unable to change paths when a packet is under construction"); EXPECT_CALL(delegate_, OnSerializedPacket(_)) .Times(1) .WillRepeatedly( @@ -1221,7 +1220,7 @@ TEST_P(QuicPacketCreatorTest, SetCurrentPathAndUpdatePacketSequenceNumberLength) { - FLAGS_quic_simple_packet_number_length = false; + FLAGS_quic_simple_packet_number_length_2 = false; // Current path is the default path. EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(&creator_)); EXPECT_EQ(PACKET_1BYTE_PACKET_NUMBER, @@ -1309,8 +1308,8 @@ EXPECT_CALL(delegate_, OnUnrecoverableError(_, _, _)); QuicStreamFrame stream_frame(kHeadersStreamId, /*fin=*/false, 0u, StringPiece()); - EXPECT_DFATAL(creator_.AddSavedFrame(QuicFrame(&stream_frame)), - "Cannot send stream data without encryption."); + EXPECT_QUIC_BUG(creator_.AddSavedFrame(QuicFrame(&stream_frame)), + "Cannot send stream data without encryption."); } TEST_P(QuicPacketCreatorTest, ChloTooLarge) { @@ -1327,7 +1326,7 @@ QuicFrame frame; EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_CRYPTO_CHLO_TOO_LARGE, _, _)); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( creator_.ConsumeData(1u, data_iovec, 0u, 0u, false, false, &frame), "Client hello won't fit in a single packet."); }
diff --git a/net/quic/core/quic_packet_generator_test.cc b/net/quic/core/quic_packet_generator_test.cc index f3a2327..56928b9 100644 --- a/net/quic/core/quic_packet_generator_test.cc +++ b/net/quic/core/quic_packet_generator_test.cc
@@ -401,9 +401,9 @@ } TEST_F(QuicPacketGeneratorTest, ConsumeData_EmptyData) { - EXPECT_DFATAL(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, - false, nullptr), - "Attempt to consume empty data without FIN."); + EXPECT_QUIC_BUG(generator_.ConsumeData(kHeadersStreamId, MakeIOVector(""), 0, + false, nullptr), + "Attempt to consume empty data without FIN."); } TEST_F(QuicPacketGeneratorTest, @@ -842,9 +842,9 @@ EXPECT_CALL(delegate_, OnUnrecoverableError(QUIC_FAILED_TO_SERIALIZE_PACKET, _, ConnectionCloseSource::FROM_SELF)); - EXPECT_DFATAL(generator_.FinishBatchOperations(), - "packet_number_length 1 is too small " - "for least_unacked_delta: 1001"); + EXPECT_QUIC_BUG(generator_.FinishBatchOperations(), + "packet_number_length 1 is too small " + "for least_unacked_delta: 1001"); } TEST_F(QuicPacketGeneratorTest, SetCurrentPath) { @@ -863,8 +863,8 @@ // Try to switch path when a packet is under construction. QuicPathId kTestPathId1 = 1; - EXPECT_DFATAL(generator_.SetCurrentPath(kTestPathId1, 1, 0), - "Unable to change paths when a packet is under construction"); + EXPECT_QUIC_BUG(generator_.SetCurrentPath(kTestPathId1, 1, 0), + "Unable to change paths when a packet is under construction"); EXPECT_EQ(kDefaultPathId, QuicPacketCreatorPeer::GetCurrentPath(creator_)); // Try to switch path after current open packet gets serialized.
diff --git a/net/quic/core/quic_protocol.cc b/net/quic/core/quic_protocol.cc index 586e316..d0e67154 100644 --- a/net/quic/core/quic_protocol.cc +++ b/net/quic/core/quic_protocol.cc
@@ -187,7 +187,11 @@ QuicVersionVector filtered_versions(versions.size()); filtered_versions.clear(); // Guaranteed by spec not to change capacity. for (QuicVersion version : versions) { - if (version == QUIC_VERSION_35) { + if (version < QUIC_VERSION_32) { + if (!FLAGS_quic_disable_pre_32) { + filtered_versions.push_back(version); + } + } else if (version == QUIC_VERSION_35) { if (FLAGS_quic_enable_version_35) { filtered_versions.push_back(version); } @@ -849,25 +853,28 @@ } QuicVersionManager::QuicVersionManager(QuicVersionVector supported_versions) - : enable_quic_version_35_(FLAGS_quic_enable_version_35), - enable_quic_version_36_(FLAGS_quic_enable_version_36_v2), + : disable_pre_32_(FLAGS_quic_disable_pre_32), + enable_version_35_(FLAGS_quic_enable_version_35), + enable_version_36_(FLAGS_quic_enable_version_36_v2), allowed_supported_versions_(supported_versions), filtered_supported_versions_( FilterSupportedVersions(supported_versions)) {} +QuicVersionManager::~QuicVersionManager() {} + const QuicVersionVector& QuicVersionManager::GetSupportedVersions() { - if (enable_quic_version_35_ != FLAGS_quic_enable_version_35 || - enable_quic_version_36_ != FLAGS_quic_enable_version_36_v2) { - enable_quic_version_35_ = FLAGS_quic_enable_version_35; - enable_quic_version_36_ = FLAGS_quic_enable_version_36_v2; + if (disable_pre_32_ != FLAGS_quic_disable_pre_32 || + enable_version_35_ != FLAGS_quic_enable_version_35 || + enable_version_36_ != FLAGS_quic_enable_version_36_v2) { + disable_pre_32_ = FLAGS_quic_disable_pre_32; + enable_version_35_ = FLAGS_quic_enable_version_35; + enable_version_36_ = FLAGS_quic_enable_version_36_v2; filtered_supported_versions_ = FilterSupportedVersions(allowed_supported_versions_); } return filtered_supported_versions_; } -QuicVersionManager::~QuicVersionManager() {} - AckListenerWrapper::AckListenerWrapper(QuicAckListenerInterface* listener, QuicPacketLength data_length) : ack_listener(listener), length(data_length) {
diff --git a/net/quic/core/quic_protocol.h b/net/quic/core/quic_protocol.h index bfe61f7..f00d39e9 100644 --- a/net/quic/core/quic_protocol.h +++ b/net/quic/core/quic_protocol.h
@@ -655,6 +655,8 @@ // A crypto message was received that contained a parameter with too few // values. QUIC_CRYPTO_MESSAGE_INDEX_NOT_FOUND = 37, + // A demand for an unsupport proof type was received. + QUIC_UNSUPPORTED_PROOF_DEMAND = 94, // An internal error occured in crypto processing. QUIC_CRYPTO_INTERNAL_ERROR = 38, // A crypto handshake message specified an unsupported version. @@ -715,7 +717,7 @@ QUIC_TOO_MANY_FRAME_GAPS = 93, // No error. Used as bound while iterating. - QUIC_LAST_ERROR = 94, + QUIC_LAST_ERROR = 95, }; typedef char DiversificationNonce[32]; @@ -1419,10 +1421,12 @@ const QuicVersionVector& GetSupportedVersions(); private: + // FLAGS_quic_disable_pre_32 + bool disable_pre_32_; // FLAGS_quic_enable_version_35 - bool enable_quic_version_35_; + bool enable_version_35_; // FLAGS_quic_enable_version_36_v2 - bool enable_quic_version_36_; + bool enable_version_36_; // The list of versions that may be supported. QuicVersionVector allowed_supported_versions_; // This vector contains QUIC versions which are currently supported based
diff --git a/net/quic/core/quic_protocol_test.cc b/net/quic/core/quic_protocol_test.cc index deee283..17c289f 100644 --- a/net/quic/core/quic_protocol_test.cc +++ b/net/quic/core/quic_protocol_test.cc
@@ -288,16 +288,15 @@ QUIC_VERSION_30, QUIC_VERSION_31, QUIC_VERSION_32, QUIC_VERSION_33, QUIC_VERSION_34, QUIC_VERSION_35, QUIC_VERSION_36}; + FLAGS_quic_disable_pre_32 = true; FLAGS_quic_enable_version_35 = false; FLAGS_quic_enable_version_36_v2 = false; QuicVersionVector filtered_versions = FilterSupportedVersions(all_versions); - ASSERT_EQ(5u, filtered_versions.size()); - EXPECT_EQ(QUIC_VERSION_30, filtered_versions[0]); - EXPECT_EQ(QUIC_VERSION_31, filtered_versions[1]); - EXPECT_EQ(QUIC_VERSION_32, filtered_versions[2]); - EXPECT_EQ(QUIC_VERSION_33, filtered_versions[3]); - EXPECT_EQ(QUIC_VERSION_34, filtered_versions[4]); + ASSERT_EQ(3u, filtered_versions.size()); + EXPECT_EQ(QUIC_VERSION_32, filtered_versions[0]); + EXPECT_EQ(QUIC_VERSION_33, filtered_versions[1]); + EXPECT_EQ(QUIC_VERSION_34, filtered_versions[2]); } TEST(QuicProtocolTest, QuicVersionManager) {
diff --git a/net/quic/core/quic_server_session_base_test.cc b/net/quic/core/quic_server_session_base_test.cc index daa947009..15d1cbe 100644 --- a/net/quic/core/quic_server_session_base_test.cc +++ b/net/quic/core/quic_server_session_base_test.cc
@@ -129,7 +129,6 @@ CryptoTestUtils::ProofSourceForTesting()), compressed_certs_cache_( QuicCompressedCertsCache::kQuicCompressedCertsCacheSize) { - FLAGS_quic_always_log_bugs_for_tests = true; config_.SetMaxStreamsPerConnection(kMaxStreamsForTest, kMaxStreamsForTest); config_.SetMaxIncomingDynamicStreamsToSend(kMaxStreamsForTest); QuicConfigPeer::SetReceivedMaxIncomingDynamicStreams(&config_, @@ -363,7 +362,7 @@ TEST_P(QuicServerSessionBaseTest, GetStreamDisconnected) { // Don't create new streams if the connection is disconnected. QuicConnectionPeer::TearDownLocalConnectionState(connection_); - EXPECT_DFATAL( + EXPECT_QUIC_BUG( QuicServerSessionBasePeer::GetOrCreateDynamicStream(session_.get(), 5), "ShouldCreateIncomingDynamicStream called when disconnected"); }
diff --git a/net/quic/core/quic_session_test.cc b/net/quic/core/quic_session_test.cc index 2d58f66..d7ebd85 100644 --- a/net/quic/core/quic_session_test.cc +++ b/net/quic/core/quic_session_test.cc
@@ -211,7 +211,6 @@ perspective, SupportedVersions(GetParam()))), session_(connection_) { - FLAGS_quic_always_log_bugs_for_tests = true; session_.config()->SetInitialStreamFlowControlWindowToSend( kInitialStreamFlowControlWindowForTest); session_.config()->SetInitialSessionFlowControlWindowToSend( @@ -381,9 +380,8 @@ // Close the stream. EXPECT_CALL(*connection_, SendRstStream(closed_stream_id, _, _)); stream2->Reset(QUIC_BAD_APPLICATION_PAYLOAD); - EXPECT_DEBUG_DFATAL( - session_.MarkConnectionLevelWriteBlocked(closed_stream_id), - "Marking unknown stream 2 blocked."); + EXPECT_QUIC_BUG(session_.MarkConnectionLevelWriteBlocked(closed_stream_id), + "Marking unknown stream 2 blocked."); } TEST_P(QuicSessionTestServer, OnCanWrite) {
diff --git a/net/quic/core/quic_spdy_stream_test.cc b/net/quic/core/quic_spdy_stream_test.cc index cad7e8b..97a19325 100644 --- a/net/quic/core/quic_spdy_stream_test.cc +++ b/net/quic/core/quic_spdy_stream_test.cc
@@ -67,7 +67,6 @@ class QuicSpdyStreamTest : public ::testing::TestWithParam<QuicVersion> { public: QuicSpdyStreamTest() { - FLAGS_quic_always_log_bugs_for_tests = true; headers_[":host"] = "www.google.com"; headers_[":path"] = "/index.hml"; headers_[":scheme"] = "https"; @@ -996,8 +995,8 @@ // Writing Trailers should fail, as the FIN has already been sent. // populated with the number of body bytes written. - EXPECT_DFATAL(stream_->WriteTrailers(SpdyHeaderBlock(), nullptr), - "Trailers cannot be sent after a FIN"); + EXPECT_QUIC_BUG(stream_->WriteTrailers(SpdyHeaderBlock(), nullptr), + "Trailers cannot be sent after a FIN"); } } // namespace
diff --git a/net/quic/core/quic_stream_sequencer_test.cc b/net/quic/core/quic_stream_sequencer_test.cc index 16bee47..96aea1e9 100644 --- a/net/quic/core/quic_stream_sequencer_test.cc +++ b/net/quic/core/quic_stream_sequencer_test.cc
@@ -548,9 +548,9 @@ // Now, attempt to mark consumed more data than was readable and expect the // stream to be closed. EXPECT_CALL(stream_, Reset(QUIC_ERROR_PROCESSING_STREAM)); - EXPECT_DFATAL(sequencer_->MarkConsumed(4), - "Invalid argument to MarkConsumed." - " expect to consume: 4, but not enough bytes available."); + EXPECT_QUIC_BUG(sequencer_->MarkConsumed(4), + "Invalid argument to MarkConsumed." + " expect to consume: 4, but not enough bytes available."); } TEST_F(QuicStreamSequencerTest, MarkConsumedWithMissingPacket) {
diff --git a/net/quic/core/quic_utils.cc b/net/quic/core/quic_utils.cc index f02adfc2..efc5b5dd 100644 --- a/net/quic/core/quic_utils.cc +++ b/net/quic/core/quic_utils.cc
@@ -251,6 +251,7 @@ RETURN_STRING_LITERAL(QUIC_CRYPTO_MESSAGE_PARAMETER_NOT_FOUND); RETURN_STRING_LITERAL(QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP); RETURN_STRING_LITERAL(QUIC_CRYPTO_MESSAGE_INDEX_NOT_FOUND); + RETURN_STRING_LITERAL(QUIC_UNSUPPORTED_PROOF_DEMAND); RETURN_STRING_LITERAL(QUIC_INVALID_STREAM_ID); RETURN_STRING_LITERAL(QUIC_INVALID_PRIORITY); RETURN_STRING_LITERAL(QUIC_TOO_MANY_OPEN_STREAMS); @@ -381,14 +382,6 @@ return options; } -string QuicUtils::ListTags(QuicTagValueMap tag_map) { - string result; - for (auto entry : tag_map) { - result.append(TagToString(entry.first) + " "); - } - return result; -} - string QuicUtils::PeerAddressChangeTypeToString(PeerAddressChangeType type) { switch (type) { RETURN_STRING_LITERAL(NO_CHANGE);
diff --git a/net/quic/core/quic_utils.h b/net/quic/core/quic_utils.h index b80e845..8fe06d1 100644 --- a/net/quic/core/quic_utils.h +++ b/net/quic/core/quic_utils.h
@@ -94,9 +94,6 @@ static QuicTagVector ParseQuicConnectionOptions( const std::string& connection_options); - // ListTags prints all of the tags in |tag_map| using TagToString. - static std::string ListTags(QuicTagValueMap tag_map); - // Returns PeerAddressChangeType as a std::string. static std::string PeerAddressChangeTypeToString(PeerAddressChangeType type);
diff --git a/net/quic/core/quic_utils_test.cc b/net/quic/core/quic_utils_test.cc index 1830bc7..57f57ff 100644 --- a/net/quic/core/quic_utils_test.cc +++ b/net/quic/core/quic_utils_test.cc
@@ -35,13 +35,6 @@ QuicUtils::TagToString(MakeQuicTag('C', 'H', 'L', '\x1f'))); } -TEST(QuicUtilsTest, ListTags) { - QuicTagValueMap map; - map.insert(std::make_pair(kSCFG, "asd")); - map.insert(std::make_pair(kCHLO, "dsa")); - EXPECT_EQ("SCFG CHLO ", QuicUtils::ListTags(map)); -} - TEST(QuicUtilsTest, ParseQuicConnectionOptions) { QuicTagVector empty_options = QuicUtils::ParseQuicConnectionOptions(""); EXPECT_EQ(0ul, empty_options.size());
diff --git a/net/quic/core/reliable_quic_stream_test.cc b/net/quic/core/reliable_quic_stream_test.cc index 15e09cbd..ceeee843 100644 --- a/net/quic/core/reliable_quic_stream_test.cc +++ b/net/quic/core/reliable_quic_stream_test.cc
@@ -184,7 +184,8 @@ // Write no data and no fin. If we consume nothing we should not be write // blocked. - EXPECT_DFATAL(stream_->WriteOrBufferData(StringPiece(), false, nullptr), ""); + EXPECT_QUIC_BUG(stream_->WriteOrBufferData(StringPiece(), false, nullptr), + ""); EXPECT_FALSE(HasWriteBlockedStreams()); }
diff --git a/net/quic/test_tools/quic_test_utils.h b/net/quic/test_tools/quic_test_utils.h index 32f4eb9..3eaf9f0 100644 --- a/net/quic/test_tools/quic_test_utils.h +++ b/net/quic/test_tools/quic_test_utils.h
@@ -39,6 +39,12 @@ using base::StringPiece; +// EXPECT_QUIC_BUG is like EXPECT_DFATAL, except it ensures that no DFATAL +// logging is skipped due to exponential backoff. +// +// For external QUIC, EXPECT_QUIC_BUG should be #defined to EXPECT_DFATAL. +#define EXPECT_QUIC_BUG EXPECT_DFATAL + namespace net { namespace test {
diff --git a/net/spdy/spdy_flags.cc b/net/spdy/spdy_flags.cc index f6564ccc..15fd0b1 100644 --- a/net/spdy/spdy_flags.cc +++ b/net/spdy/spdy_flags.cc
@@ -7,5 +7,9 @@ // Use NestedSpdyFramerDecoder. bool FLAGS_use_nested_spdy_framer_decoder = false; +// If true, SpdyFramer uses the new visitor methods OnHeaderFrameStart and +// OnHeaderFrameEnd. Third attempt. +bool FLAGS_chromium_http2_flag_spdy_framer_use_new_methods3 = true; + // Use SpdyHeaderBlock::AppendValueOrAddHeader when adding to headers. bool FLAGS_chromium_http2_flag_use_new_spdy_header_block_header_joining = true;
diff --git a/net/spdy/spdy_flags.h b/net/spdy/spdy_flags.h index e00f61b..a15889f 100644 --- a/net/spdy/spdy_flags.h +++ b/net/spdy/spdy_flags.h
@@ -9,6 +9,8 @@ NET_EXPORT_PRIVATE extern bool FLAGS_use_nested_spdy_framer_decoder; NET_EXPORT_PRIVATE extern bool + FLAGS_chromium_http2_flag_spdy_framer_use_new_methods3; +NET_EXPORT_PRIVATE extern bool FLAGS_chromium_http2_flag_use_new_spdy_header_block_header_joining; #endif // NET_SPDY_SPDY_FLAGS_H_
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc index 5cebf6f..c7c49bb 100644 --- a/net/spdy/spdy_framer.cc +++ b/net/spdy/spdy_framer.cc
@@ -1692,7 +1692,7 @@ #endif } - if (current_frame_type_ != CONTINUATION) { + if (use_new_methods_ && current_frame_type_ != CONTINUATION) { header_handler_ = visitor_->OnHeaderFrameStart(current_frame_stream_id_); if (header_handler_ == nullptr) { SPDY_BUG << "visitor_->OnHeaderFrameStart returned nullptr"; @@ -1762,18 +1762,34 @@ size_t compressed_len = 0; if (GetHpackDecoder()->HandleControlFrameHeadersComplete( &compressed_len)) { - visitor_->OnHeaderFrameEnd(current_frame_stream_id_, true); - if (state_ == SPDY_ERROR) { - return data_len; + if (use_new_methods_) { + visitor_->OnHeaderFrameEnd(current_frame_stream_id_, true); + if (state_ == SPDY_ERROR) { + return data_len; + } + } else { + // TODO(jgraettinger): To be removed with migration to + // SpdyHeadersHandlerInterface. Serializes the HPACK block as a + // SPDY3 block, delivered via reentrant call to + // ProcessControlFrameHeaderBlock(). + DeliverHpackBlockAsSpdy3Block(compressed_len); + return process_bytes; } } else { set_error(SPDY_DECOMPRESS_FAILURE); processed_successfully = false; } } else { - visitor_->OnHeaderFrameEnd(current_frame_stream_id_, true); - if (state_ == SPDY_ERROR) { - return data_len; + if (use_new_methods_) { + visitor_->OnHeaderFrameEnd(current_frame_stream_id_, true); + if (state_ == SPDY_ERROR) { + return data_len; + } + } else { + // The complete header block has been delivered. We send a zero-length + // OnControlFrameHeaderData() to indicated this. + visitor_->OnControlFrameHeaderData(current_frame_stream_id_, nullptr, + 0); } } } @@ -3177,11 +3193,17 @@ if ((rv == Z_OK) || input_exhausted) { size_t decompressed_len = arraysize(buffer) - decomp->avail_out; if (decompressed_len > 0) { - processed_successfully = header_parser_->HandleControlFrameHeadersData( - stream_id, buffer, decompressed_len); - if (header_parser_->get_error() == - SpdyHeadersBlockParser::NEED_MORE_DATA) { - processed_successfully = true; + if (use_new_methods_) { + processed_successfully = + header_parser_->HandleControlFrameHeadersData(stream_id, buffer, + decompressed_len); + if (header_parser_->get_error() == + SpdyHeadersBlockParser::NEED_MORE_DATA) { + processed_successfully = true; + } + } else { + processed_successfully = visitor_->OnControlFrameHeaderData( + stream_id, buffer, decompressed_len); } } if (!processed_successfully) { @@ -3203,10 +3225,16 @@ bool read_successfully = true; while (read_successfully && len > 0) { size_t bytes_to_deliver = std::min(len, kHeaderDataChunkMaxSize); - read_successfully = header_parser_->HandleControlFrameHeadersData( - stream_id, data, bytes_to_deliver); - if (header_parser_->get_error() == SpdyHeadersBlockParser::NEED_MORE_DATA) { - read_successfully = true; + if (use_new_methods_) { + read_successfully = header_parser_->HandleControlFrameHeadersData( + stream_id, data, bytes_to_deliver); + if (header_parser_->get_error() == + SpdyHeadersBlockParser::NEED_MORE_DATA) { + read_successfully = true; + } + } else { + read_successfully = + visitor_->OnControlFrameHeaderData(stream_id, data, bytes_to_deliver); } data += bytes_to_deliver; len -= bytes_to_deliver;
diff --git a/net/spdy/spdy_framer.h b/net/spdy/spdy_framer.h index fa63b75..2bf960a 100644 --- a/net/spdy/spdy_framer.h +++ b/net/spdy/spdy_framer.h
@@ -597,6 +597,11 @@ // Returns the maximum size of the header encoder compression table. size_t header_encoder_table_size() const; + // For testing support (i.e. for clients and backends), + // allow overriding the flag on a per framer basis. + void set_use_new_methods_for_test(bool v) { use_new_methods_ = v; } + bool use_new_methods_for_test() const { return use_new_methods_; } + protected: friend class BufferedSpdyFramer; friend class HttpNetworkLayer; // This is temporary for the server. @@ -851,6 +856,9 @@ // If true, then ProcessInput returns after processing a full frame, // rather than reading all available input. bool process_single_input_frame_ = false; + + bool use_new_methods_ = + FLAGS_chromium_http2_flag_spdy_framer_use_new_methods3; }; } // namespace net
diff --git a/net/spdy/spdy_framer_decoder_adapter.cc b/net/spdy/spdy_framer_decoder_adapter.cc index 679aefa8..949cbdf 100644 --- a/net/spdy/spdy_framer_decoder_adapter.cc +++ b/net/spdy/spdy_framer_decoder_adapter.cc
@@ -233,6 +233,12 @@ size_t ProcessInput(const char* data, size_t len) override { DVLOG(2) << "ProcessInput(data, " << len << ")"; + const bool use_new_methods = outer_->use_new_methods_for_test(); + if (framer_.use_new_methods_for_test() != use_new_methods) { + DVLOG(1) << "Overriding use_new_methods_ in nested framer, setting=" + << (use_new_methods ? "true" : "false"); + framer_.set_use_new_methods_for_test(use_new_methods); + } size_t result = framer_.ProcessInput(data, len); DVLOG(2) << "ProcessInput(data, " << len << ") returning " << result; return result;
diff --git a/net/test/embedded_test_server/android/embedded_test_server_android.cc b/net/test/embedded_test_server/android/embedded_test_server_android.cc index 0d2ce061..e7ab0009 100644 --- a/net/test/embedded_test_server/android/embedded_test_server_android.cc +++ b/net/test/embedded_test_server/android/embedded_test_server_android.cc
@@ -25,8 +25,7 @@ EmbeddedTestServerAndroid::~EmbeddedTestServerAndroid() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_EmbeddedTestServerImpl_clearNativePtr(env, - weak_java_server_.get(env).obj()); + Java_EmbeddedTestServerImpl_clearNativePtr(env, weak_java_server_.get(env)); } jboolean EmbeddedTestServerAndroid::Start(JNIEnv* env,
diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc index 246c0aa3..faed90630 100644 --- a/net/tools/quic/end_to_end_test.cc +++ b/net/tools/quic/end_to_end_test.cc
@@ -235,6 +235,9 @@ for (const QuicVersionVector& client_versions : version_buckets) { CHECK(!client_versions.empty()); + if (FilterSupportedVersions(client_versions).empty()) { + continue; + } // Add an entry for server and client supporting all versions. params.push_back(TestParams( client_versions, all_supported_versions, @@ -260,6 +263,10 @@ for (size_t i = 1; i < client_versions.size(); ++i) { QuicVersionVector server_supported_versions; server_supported_versions.push_back(client_versions[i]); + if (FilterSupportedVersions(server_supported_versions) + .empty()) { + continue; + } params.push_back(TestParams( client_versions, server_supported_versions, server_supported_versions.front(), @@ -1194,7 +1201,7 @@ ReliableQuicStreamPeer::SetWriteSideClosed(false, client_->GetOrCreateStream()); - EXPECT_DFATAL(client_->SendData("eep", true), "Fin already buffered"); + EXPECT_QUIC_BUG(client_->SendData("eep", true), "Fin already buffered"); } TEST_P(EndToEndTest, Timeout) {
diff --git a/net/tools/quic/quic_client_session.cc b/net/tools/quic/quic_client_session.cc index 7a2093c8..f86eebc 100644 --- a/net/tools/quic/quic_client_session.cc +++ b/net/tools/quic/quic_client_session.cc
@@ -7,6 +7,7 @@ #include "base/logging.h" #include "net/quic/chromium/crypto/proof_verifier_chromium.h" #include "net/quic/core/crypto/crypto_protocol.h" +#include "net/quic/core/quic_bug_tracker.h" #include "net/quic/core/quic_server_id.h" #include "net/tools/quic/quic_spdy_client_stream.h" @@ -90,7 +91,7 @@ bool QuicClientSession::ShouldCreateIncomingDynamicStream(QuicStreamId id) { if (!connection()->connected()) { - LOG(DFATAL) << "ShouldCreateIncomingDynamicStream called when disconnected"; + QUIC_BUG << "ShouldCreateIncomingDynamicStream called when disconnected"; return false; } if (goaway_received() && respect_goaway_) {
diff --git a/net/tools/quic/quic_dispatcher_test.cc b/net/tools/quic/quic_dispatcher_test.cc index 07df1e6..7957ec0 100644 --- a/net/tools/quic/quic_dispatcher_test.cc +++ b/net/tools/quic/quic_dispatcher_test.cc
@@ -727,7 +727,6 @@ TEST_P(QuicDispatcherStatelessRejectTest, BufferNonChlo) { FLAGS_quic_use_cheap_stateless_rejects = true; - FLAGS_quic_always_log_bugs_for_tests = true; CreateTimeWaitListManager(); const IPEndPoint client_address(net::test::Loopback4(), 1); @@ -751,7 +750,7 @@ if (first_packet_dropped) { // Never do stateless reject while // FLAGS_quic_buffer_packet_till_chlo is off. - EXPECT_DFATAL( + EXPECT_QUIC_BUG( ProcessPacket(client_address, connection_id, true, false, "NOT DATA FOR A CHLO"), "Have to drop packet because buffering non-chlo packet is "
diff --git a/net/tools/quic/quic_simple_server_session_test.cc b/net/tools/quic/quic_simple_server_session_test.cc index 78ba420..50435d9 100644 --- a/net/tools/quic/quic_simple_server_session_test.cc +++ b/net/tools/quic/quic_simple_server_session_test.cc
@@ -182,7 +182,6 @@ CryptoTestUtils::ProofSourceForTesting()), compressed_certs_cache_( QuicCompressedCertsCache::kQuicCompressedCertsCacheSize) { - FLAGS_quic_always_log_bugs_for_tests = true; config_.SetMaxStreamsPerConnection(kMaxStreamsForTest, kMaxStreamsForTest); config_.SetMaxIncomingDynamicStreamsToSend(kMaxStreamsForTest); QuicConfigPeer::SetReceivedMaxIncomingDynamicStreams(&config_, @@ -301,9 +300,9 @@ // Tests that incoming stream creation fails when connection is not connected. size_t initial_num_open_stream = session_->GetNumOpenIncomingStreams(); QuicConnectionPeer::TearDownLocalConnectionState(connection_); - EXPECT_DFATAL(QuicSimpleServerSessionPeer::CreateIncomingDynamicStream( - session_.get(), kClientDataStreamId1), - "ShouldCreateIncomingDynamicStream called when disconnected"); + EXPECT_QUIC_BUG(QuicSimpleServerSessionPeer::CreateIncomingDynamicStream( + session_.get(), kClientDataStreamId1), + "ShouldCreateIncomingDynamicStream called when disconnected"); EXPECT_EQ(initial_num_open_stream, session_->GetNumOpenIncomingStreams()); } @@ -329,9 +328,9 @@ // Tests that outgoing stream creation fails when connection is not connected. size_t initial_num_open_stream = session_->GetNumOpenOutgoingStreams(); QuicConnectionPeer::TearDownLocalConnectionState(connection_); - EXPECT_DFATAL(QuicSimpleServerSessionPeer::CreateOutgoingDynamicStream( - session_.get(), kDefaultPriority), - "ShouldCreateOutgoingDynamicStream called when disconnected"); + EXPECT_QUIC_BUG(QuicSimpleServerSessionPeer::CreateOutgoingDynamicStream( + session_.get(), kDefaultPriority), + "ShouldCreateOutgoingDynamicStream called when disconnected"); EXPECT_EQ(initial_num_open_stream, session_->GetNumOpenOutgoingStreams()); } @@ -340,9 +339,9 @@ // Tests that outgoing stream creation fails when encryption has not yet been // established. size_t initial_num_open_stream = session_->GetNumOpenOutgoingStreams(); - EXPECT_DFATAL(QuicSimpleServerSessionPeer::CreateOutgoingDynamicStream( - session_.get(), kDefaultPriority), - "Encryption not established so no outgoing stream created."); + EXPECT_QUIC_BUG(QuicSimpleServerSessionPeer::CreateOutgoingDynamicStream( + session_.get(), kDefaultPriority), + "Encryption not established so no outgoing stream created."); EXPECT_EQ(initial_num_open_stream, session_->GetNumOpenOutgoingStreams()); }
diff --git a/net/tools/quic/quic_simple_server_stream_test.cc b/net/tools/quic/quic_simple_server_stream_test.cc index 2a0de32..0c6039d 100644 --- a/net/tools/quic/quic_simple_server_stream_test.cc +++ b/net/tools/quic/quic_simple_server_stream_test.cc
@@ -190,7 +190,6 @@ crypto_config_.get(), &compressed_certs_cache_), body_("hello world") { - FLAGS_quic_always_log_bugs_for_tests = true; SpdyHeaderBlock request_headers; request_headers[":host"] = ""; request_headers[":authority"] = "www.google.com"; @@ -468,9 +467,9 @@ TEST_P(QuicSimpleServerStreamTest, PushResponseOnClientInitiatedStream) { // Calling PushResponse() on a client initialted stream is never supposed to // happen. - EXPECT_DFATAL(stream_->PushResponse(SpdyHeaderBlock()), - "Client initiated stream" - " shouldn't be used as promised stream."); + EXPECT_QUIC_BUG(stream_->PushResponse(SpdyHeaderBlock()), + "Client initiated stream" + " shouldn't be used as promised stream."); } TEST_P(QuicSimpleServerStreamTest, PushResponseOnServerInitiatedStream) {
diff --git a/net/tools/quic/test_tools/quic_test_client.cc b/net/tools/quic/test_tools/quic_test_client.cc index a401223..29c173b 100644 --- a/net/tools/quic/test_tools/quic_test_client.cc +++ b/net/tools/quic/test_tools/quic_test_client.cc
@@ -38,6 +38,8 @@ using net::test::ReliableQuicStreamPeer; using std::string; using std::vector; +using testing::_; +using testing::Invoke; namespace net { namespace test { @@ -177,7 +179,16 @@ base::WrapUnique( new RecordingProofVerifier(std::move(proof_verifier)))), override_connection_id_(0), - test_writer_(nullptr) {} + test_writer_(nullptr) { + ON_CALL(*this, ProcessPacket(_, _, _)) + .WillByDefault(Invoke(this, &MockableQuicClient::ProcessPacketBase)); +} + +void MockableQuicClient::ProcessPacketBase(const IPEndPoint& self_address, + const IPEndPoint& peer_address, + const QuicReceivedPacket& packet) { + QuicClient::ProcessPacket(self_address, peer_address, packet); +} MockableQuicClient::~MockableQuicClient() { if (connected()) {
diff --git a/net/tools/quic/test_tools/quic_test_client.h b/net/tools/quic/test_tools/quic_test_client.h index 3ebeb2d9..40fd2bf 100644 --- a/net/tools/quic/test_tools/quic_test_client.h +++ b/net/tools/quic/test_tools/quic_test_client.h
@@ -23,6 +23,7 @@ #include "net/tools/epoll_server/epoll_server.h" #include "net/tools/quic/quic_client.h" #include "net/tools/quic/test_tools/simple_client.h" +#include "testing/gmock/include/gmock/gmock.h" using base::StringPiece; @@ -38,7 +39,7 @@ class HTTPMessage; class MockableQuicClient; -// A quic client which allows mocking out writes. +// A quic client which allows mocking out reads and writes. class MockableQuicClient : public QuicClient { public: MockableQuicClient(IPEndPoint server_address, @@ -60,6 +61,16 @@ std::unique_ptr<ProofVerifier> proof_verifier); ~MockableQuicClient() override; + + // By default, this will call QuicClient::ProcessPacket + MOCK_METHOD3(ProcessPacket, + void(const IPEndPoint&, + const IPEndPoint&, + const QuicReceivedPacket&)); + + void ProcessPacketBase(const IPEndPoint& self_address, + const IPEndPoint& peer_address, + const QuicReceivedPacket& packet); QuicPacketWriter* CreateQuicPacketWriter() override; QuicConnectionId GenerateNewConnectionId() override; void UseWriter(QuicPacketWriterWrapper* writer);
diff --git a/printing/printing_context_android.cc b/printing/printing_context_android.cc index 113329a..46cff7f 100644 --- a/printing/printing_context_android.cc +++ b/printing/printing_context_android.cc
@@ -101,10 +101,9 @@ } if (is_scripted) { - Java_PrintingContext_showPrintDialog(env, j_printing_context_.obj()); + Java_PrintingContext_showPrintDialog(env, j_printing_context_); } else { - Java_PrintingContext_pageCountEstimationDone(env, - j_printing_context_.obj(), + Java_PrintingContext_pageCountEstimationDone(env, j_printing_context_, max_pages); } } @@ -122,21 +121,20 @@ // We use device name variable to store the file descriptor. This is hacky // but necessary. Since device name is not necessary for the upstream // printing code for Android, this is harmless. - int fd = Java_PrintingContext_getFileDescriptor(env, - j_printing_context_.obj()); + int fd = Java_PrintingContext_getFileDescriptor(env, j_printing_context_); settings_.set_device_name(base::IntToString16(fd)); ScopedJavaLocalRef<jintArray> intArr = - Java_PrintingContext_getPages(env, j_printing_context_.obj()); + Java_PrintingContext_getPages(env, j_printing_context_); if (intArr.obj() != NULL) { PageRanges range_vector; GetPageRanges(env, intArr.obj(), range_vector); settings_.set_ranges(range_vector); } - int dpi = Java_PrintingContext_getDpi(env, j_printing_context_.obj()); - int width = Java_PrintingContext_getWidth(env, j_printing_context_.obj()); - int height = Java_PrintingContext_getHeight(env, j_printing_context_.obj()); + int dpi = Java_PrintingContext_getDpi(env, j_printing_context_); + int width = Java_PrintingContext_getWidth(env, j_printing_context_); + int height = Java_PrintingContext_getHeight(env, j_printing_context_); width = Round(ConvertUnitDouble(width, kInchToMil, 1.0) * dpi); height = Round(ConvertUnitDouble(height, kInchToMil, 1.0) * dpi); SetSizes(&settings_, dpi, width, height);
diff --git a/remoting/client/jni/jni_client.cc b/remoting/client/jni/jni_client.cc index 78aea2a..5c9ad07b 100644 --- a/remoting/client/jni/jni_client.cc +++ b/remoting/client/jni/jni_client.cc
@@ -86,15 +86,14 @@ DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_Client_onConnectionState(env, java_client_.obj(), state, error); + Java_Client_onConnectionState(env, java_client_, state, error); } void JniClient::DisplayAuthenticationPrompt(bool pairing_supported) { DCHECK(runtime_->ui_task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_Client_displayAuthenticationPrompt(env, java_client_.obj(), - pairing_supported); + Java_Client_displayAuthenticationPrompt(env, java_client_, pairing_supported); } void JniClient::CommitPairingCredentials(const std::string& host, @@ -107,8 +106,8 @@ ScopedJavaLocalRef<jstring> j_id = ConvertUTF8ToJavaString(env, id); ScopedJavaLocalRef<jstring> j_secret = ConvertUTF8ToJavaString(env, secret); - Java_Client_commitPairingCredentials(env, java_client_.obj(), j_host.obj(), - j_id.obj(), j_secret.obj()); + Java_Client_commitPairingCredentials(env, java_client_, j_host, j_id, + j_secret); } void JniClient::FetchThirdPartyToken(const std::string& token_url, @@ -122,8 +121,8 @@ ConvertUTF8ToJavaString(env, client_id); ScopedJavaLocalRef<jstring> j_scope = ConvertUTF8ToJavaString(env, scope); - Java_Client_fetchThirdPartyToken(env, java_client_.obj(), j_url.obj(), - j_client_id.obj(), j_scope.obj()); + Java_Client_fetchThirdPartyToken(env, java_client_, j_url, j_client_id, + j_scope); } void JniClient::SetCapabilities(const std::string& capabilities) { @@ -133,7 +132,7 @@ ScopedJavaLocalRef<jstring> j_cap = ConvertUTF8ToJavaString(env, capabilities); - Java_Client_setCapabilities(env, java_client_.obj(), j_cap.obj()); + Java_Client_setCapabilities(env, java_client_, j_cap); } void JniClient::HandleExtensionMessage(const std::string& type, @@ -144,8 +143,7 @@ ScopedJavaLocalRef<jstring> j_type = ConvertUTF8ToJavaString(env, type); ScopedJavaLocalRef<jstring> j_message = ConvertUTF8ToJavaString(env, message); - Java_Client_handleExtensionMessage(env, java_client_.obj(), j_type.obj(), - j_message.obj()); + Java_Client_handleExtensionMessage(env, java_client_, j_type, j_message); } // static
diff --git a/remoting/client/jni/jni_display_handler.cc b/remoting/client/jni/jni_display_handler.cc index 923a046..f2ed6202 100644 --- a/remoting/client/jni/jni_display_handler.cc +++ b/remoting/client/jni/jni_display_handler.cc
@@ -37,14 +37,13 @@ JniDisplayHandler::~JniDisplayHandler() { DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); - Java_Display_invalidate(base::android::AttachCurrentThread(), - java_display_.obj()); + Java_Display_invalidate(base::android::AttachCurrentThread(), java_display_); } void JniDisplayHandler::InitializeClient( const base::android::JavaRef<jobject>& java_client) { return Java_Display_initializeClient(base::android::AttachCurrentThread(), - java_display_.obj(), java_client.obj()); + java_display_, java_client); } std::unique_ptr<protocol::CursorShapeStub> @@ -72,14 +71,14 @@ DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_Display_setVideoFrame(env, java_display_.obj(), bitmap.obj()); + Java_Display_setVideoFrame(env, java_display_, bitmap); } void JniDisplayHandler::RedrawCanvas() { DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); JNIEnv* env = base::android::AttachCurrentThread(); - Java_Display_redrawGraphicsInternal(env, java_display_.obj()); + Java_Display_redrawGraphicsInternal(env, java_display_); } // static @@ -111,8 +110,8 @@ base::android::ScopedJavaLocalRef<jobject> buffer( env, env->NewDirectByteBuffer(data, cursor_total_bytes)); Java_Display_updateCursorShape( - env, java_display_.obj(), cursor_shape.width(), cursor_shape.height(), - cursor_shape.hotspot_x(), cursor_shape.hotspot_y(), buffer.obj()); + env, java_display_, cursor_shape.width(), cursor_shape.height(), + cursor_shape.hotspot_x(), cursor_shape.hotspot_y(), buffer); } } // namespace remoting
diff --git a/remoting/client/jni/jni_gl_display_handler.cc b/remoting/client/jni/jni_gl_display_handler.cc index 13d09d84..114d48e 100644 --- a/remoting/client/jni/jni_gl_display_handler.cc +++ b/remoting/client/jni/jni_gl_display_handler.cc
@@ -34,15 +34,14 @@ JniGlDisplayHandler::~JniGlDisplayHandler() { DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); Java_GlDisplay_invalidate(base::android::AttachCurrentThread(), - java_display_.obj()); + java_display_); runtime_->ui_task_runner()->DeleteSoon(FROM_HERE, ui_task_poster_.release()); } void JniGlDisplayHandler::InitializeClient( const base::android::JavaRef<jobject>& java_client) { return Java_GlDisplay_initializeClient(base::android::AttachCurrentThread(), - java_display_.obj(), - java_client.obj()); + java_display_, java_client); } std::unique_ptr<protocol::CursorShapeStub> @@ -173,7 +172,7 @@ void JniGlDisplayHandler::NotifyRenderDoneOnUiThread( base::android::ScopedJavaGlobalRef<jobject> java_display) { Java_GlDisplay_canvasRendered(base::android::AttachCurrentThread(), - java_display.obj()); + java_display); } void JniGlDisplayHandler::SurfaceCreatedOnDisplayThread( @@ -203,7 +202,7 @@ int width, int height) { JNIEnv* env = base::android::AttachCurrentThread(); - Java_GlDisplay_changeCanvasSize(env, java_display.obj(), width, height); + Java_GlDisplay_changeCanvasSize(env, java_display, width, height); } } // namespace remoting
diff --git a/remoting/client/jni/jni_touch_event_data.cc b/remoting/client/jni/jni_touch_event_data.cc index 83431da..842ea1f 100644 --- a/remoting/client/jni/jni_touch_event_data.cc +++ b/remoting/client/jni/jni_touch_event_data.cc
@@ -19,25 +19,25 @@ const base::android::ScopedJavaLocalRef<jobject>& java_object, protocol::TouchEventPoint* touch_event_point) { touch_event_point->set_id( - Java_TouchEventData_getTouchPointId(env, java_object.obj())); + Java_TouchEventData_getTouchPointId(env, java_object)); touch_event_point->set_x( - Java_TouchEventData_getTouchPointX(env, java_object.obj())); + Java_TouchEventData_getTouchPointX(env, java_object)); touch_event_point->set_y( - Java_TouchEventData_getTouchPointY(env, java_object.obj())); + Java_TouchEventData_getTouchPointY(env, java_object)); touch_event_point->set_radius_x( - Java_TouchEventData_getTouchPointRadiusX(env, java_object.obj())); + Java_TouchEventData_getTouchPointRadiusX(env, java_object)); touch_event_point->set_radius_y( - Java_TouchEventData_getTouchPointRadiusY(env, java_object.obj())); + Java_TouchEventData_getTouchPointRadiusY(env, java_object)); touch_event_point->set_angle( - Java_TouchEventData_getTouchPointAngle(env, java_object.obj())); + Java_TouchEventData_getTouchPointAngle(env, java_object)); touch_event_point->set_pressure( - Java_TouchEventData_getTouchPointPressure(env, java_object.obj())); + Java_TouchEventData_getTouchPointPressure(env, java_object)); } } // namespace remoting
diff --git a/remoting/host/android/jni_host.cc b/remoting/host/android/jni_host.cc index a2fe272..fa4d670c 100644 --- a/remoting/host/android/jni_host.cc +++ b/remoting/host/android/jni_host.cc
@@ -108,7 +108,7 @@ base::TimeDelta access_code_lifetime) { JNIEnv* env = base::android::AttachCurrentThread(); Java_Host_onAccessCodeReceived( - env, java_host_.obj(), ConvertUTF8ToJavaString(env, access_code).obj(), + env, java_host_, ConvertUTF8ToJavaString(env, access_code), static_cast<int>(access_code_lifetime.InSeconds())); } @@ -123,8 +123,8 @@ } JNIEnv* env = base::android::AttachCurrentThread(); - Java_Host_onStateChanged(env, java_host_.obj(), state, - ConvertUTF8ToJavaString(env, error_message).obj()); + Java_Host_onStateChanged(env, java_host_, state, + ConvertUTF8ToJavaString(env, error_message)); } static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& caller) {
diff --git a/services/ui/common/gpu_type_converters.cc b/services/ui/common/gpu_type_converters.cc index 9ee911a5..f387337 100644 --- a/services/ui/common/gpu_type_converters.cc +++ b/services/ui/common/gpu_type_converters.cc
@@ -151,18 +151,4 @@ return result; } -// static -ui::mojom::GpuInfoPtr -TypeConverter<ui::mojom::GpuInfoPtr, gpu::GPUInfo>::Convert( - const gpu::GPUInfo& input) { - ui::mojom::GpuInfoPtr result(ui::mojom::GpuInfo::New()); - result->vendor_id = input.gpu.vendor_id; - result->device_id = input.gpu.device_id; - result->vendor_info = mojo::String::From<std::string>(input.gl_vendor); - result->renderer_info = mojo::String::From<std::string>(input.gl_renderer); - result->driver_version = - mojo::String::From<std::string>(input.driver_version); - return result; -} - } // namespace mojo
diff --git a/services/ui/common/gpu_type_converters.h b/services/ui/common/gpu_type_converters.h index d5823fd..8a24d66 100644 --- a/services/ui/common/gpu_type_converters.h +++ b/services/ui/common/gpu_type_converters.h
@@ -9,7 +9,6 @@ #include "mojo/public/cpp/bindings/type_converter.h" #include "services/ui/common/mus_common_export.h" #include "services/ui/public/interfaces/channel_handle.mojom.h" -#include "services/ui/public/interfaces/gpu.mojom.h" #include "services/ui/public/interfaces/gpu_memory_buffer.mojom.h" namespace gfx { @@ -85,11 +84,6 @@ const ui::mojom::GpuMemoryBufferHandlePtr& handle); }; -template <> -struct MUS_COMMON_EXPORT TypeConverter<ui::mojom::GpuInfoPtr, gpu::GPUInfo> { - static ui::mojom::GpuInfoPtr Convert(const gpu::GPUInfo& input); -}; - } // namespace mojo #endif // SERVICES_UI_COMMON_GPU_TYPE_CONVERTERS_H_
diff --git a/services/ui/gpu/gpu_service_impl.cc b/services/ui/gpu/gpu_service_impl.cc index 8e01fb3..f0e6013 100644 --- a/services/ui/gpu/gpu_service_impl.cc +++ b/services/ui/gpu/gpu_service_impl.cc
@@ -18,7 +18,7 @@ const IPC::ChannelHandle& channel_handle) { // TODO(penghuang): Send the real GPUInfo to the client. callback.Run(client_id, mojom::ChannelHandle::From(channel_handle), - mojom::GpuInfo::From<gpu::GPUInfo>(gpu::GPUInfo())); + gpu::GPUInfo()); } }
diff --git a/services/ui/public/cpp/BUILD.gn b/services/ui/public/cpp/BUILD.gn index adbe35ac..2e246b0 100644 --- a/services/ui/public/cpp/BUILD.gn +++ b/services/ui/public/cpp/BUILD.gn
@@ -94,8 +94,6 @@ ] sources = [ - "command_buffer_client_impl.cc", - "command_buffer_client_impl.h", "context_provider.cc", "context_provider.h", "gles2_context.cc",
diff --git a/services/ui/public/cpp/command_buffer_client_impl.cc b/services/ui/public/cpp/command_buffer_client_impl.cc deleted file mode 100644 index 1c8d95e..0000000 --- a/services/ui/public/cpp/command_buffer_client_impl.cc +++ /dev/null
@@ -1,348 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "services/ui/public/cpp/command_buffer_client_impl.h" - -#include <stddef.h> -#include <stdint.h> - -#include <limits> -#include <utility> - -#include "base/logging.h" -#include "base/process/process_handle.h" -#include "base/threading/thread_restrictions.h" -#include "gpu/command_buffer/client/gpu_control_client.h" -#include "gpu/command_buffer/common/command_buffer_id.h" -#include "gpu/command_buffer/common/gpu_memory_buffer_support.h" -#include "gpu/command_buffer/common/sync_token.h" -#include "mojo/public/cpp/system/platform_handle.h" -#include "services/ui/common/gpu_type_converters.h" -#include "services/ui/public/cpp/mojo_buffer_backing.h" -#include "services/ui/public/cpp/mojo_gpu_memory_buffer.h" - -namespace ui { - -namespace { - -bool CreateAndMapSharedBuffer(size_t size, - mojo::ScopedSharedBufferMapping* mapping, - mojo::ScopedSharedBufferHandle* handle) { - *handle = mojo::SharedBufferHandle::Create(size); - if (!handle->is_valid()) - return false; - - *mapping = (*handle)->Map(size); - if (!*mapping) - return false; - - return true; -} - -} // namespace - -CommandBufferClientImpl::CommandBufferClientImpl( - const std::vector<int32_t>& attribs, - ui::mojom::CommandBufferPtr command_buffer_ptr) - : gpu_control_client_(nullptr), - destroyed_(false), - attribs_(attribs), - client_binding_(this), - command_buffer_(std::move(command_buffer_ptr)), - command_buffer_id_(), - last_put_offset_(-1), - next_transfer_buffer_id_(0), - next_image_id_(0), - next_fence_sync_release_(1), - flushed_fence_sync_release_(0) { - command_buffer_.set_connection_error_handler( - base::Bind(&CommandBufferClientImpl::Destroyed, base::Unretained(this), - gpu::error::kUnknown, gpu::error::kLostContext)); -} - -CommandBufferClientImpl::~CommandBufferClientImpl() {} - -bool CommandBufferClientImpl::Initialize() { - const size_t kSharedStateSize = sizeof(gpu::CommandBufferSharedState); - mojo::ScopedSharedBufferHandle handle; - bool result = - CreateAndMapSharedBuffer(kSharedStateSize, &shared_state_, &handle); - if (!result) - return false; - - shared_state()->Initialize(); - - ui::mojom::CommandBufferClientPtr client_ptr; - client_binding_.Bind(GetProxy(&client_ptr)); - - ui::mojom::CommandBufferInitializeResultPtr initialize_result; - result = command_buffer_->Initialize(std::move(client_ptr), std::move(handle), - mojo::Array<int32_t>::From(attribs_), - &initialize_result); - - if (!result) { - VLOG(1) << "Channel encountered error while creating command buffer."; - return false; - } - - if (!initialize_result) { - VLOG(1) << "Command buffer cannot be initialized successfully."; - return false; - } - - DCHECK_EQ(gpu::CommandBufferNamespace::MOJO, - initialize_result->command_buffer_namespace); - command_buffer_id_ = gpu::CommandBufferId::FromUnsafeValue( - initialize_result->command_buffer_id); - capabilities_ = initialize_result->capabilities; - return true; -} - -gpu::CommandBuffer::State CommandBufferClientImpl::GetLastState() { - return last_state_; -} - -int32_t CommandBufferClientImpl::GetLastToken() { - TryUpdateState(); - return last_state_.token; -} - -void CommandBufferClientImpl::Flush(int32_t put_offset) { - if (last_put_offset_ == put_offset) - return; - - last_put_offset_ = put_offset; - command_buffer_->Flush(put_offset); - flushed_fence_sync_release_ = next_fence_sync_release_ - 1; -} - -void CommandBufferClientImpl::OrderingBarrier(int32_t put_offset) { - // TODO(jamesr): Implement this more efficiently. - Flush(put_offset); -} - -void CommandBufferClientImpl::WaitForTokenInRange(int32_t start, int32_t end) { - TryUpdateState(); - while (!InRange(start, end, last_state_.token) && - last_state_.error == gpu::error::kNoError) { - MakeProgressAndUpdateState(); - } -} - -void CommandBufferClientImpl::WaitForGetOffsetInRange(int32_t start, - int32_t end) { - TryUpdateState(); - while (!InRange(start, end, last_state_.get_offset) && - last_state_.error == gpu::error::kNoError) { - MakeProgressAndUpdateState(); - } -} - -void CommandBufferClientImpl::SetGetBuffer(int32_t shm_id) { - command_buffer_->SetGetBuffer(shm_id); - last_put_offset_ = -1; -} - -scoped_refptr<gpu::Buffer> CommandBufferClientImpl::CreateTransferBuffer( - size_t size, - int32_t* id) { - if (size >= std::numeric_limits<uint32_t>::max()) - return NULL; - - mojo::ScopedSharedBufferMapping mapping; - mojo::ScopedSharedBufferHandle handle; - if (!CreateAndMapSharedBuffer(size, &mapping, &handle)) { - if (last_state_.error == gpu::error::kNoError) - last_state_.error = gpu::error::kLostContext; - return NULL; - } - - *id = ++next_transfer_buffer_id_; - - command_buffer_->RegisterTransferBuffer(*id, std::move(handle), - static_cast<uint32_t>(size)); - - std::unique_ptr<gpu::BufferBacking> backing( - new ui::MojoBufferBacking(std::move(mapping), size)); - scoped_refptr<gpu::Buffer> buffer(new gpu::Buffer(std::move(backing))); - return buffer; -} - -void CommandBufferClientImpl::DestroyTransferBuffer(int32_t id) { - command_buffer_->DestroyTransferBuffer(id); -} - -void CommandBufferClientImpl::SetGpuControlClient(gpu::GpuControlClient* c) { - gpu_control_client_ = c; -} - -gpu::Capabilities CommandBufferClientImpl::GetCapabilities() { - return capabilities_; -} - -int32_t CommandBufferClientImpl::CreateImage(ClientBuffer buffer, - size_t width, - size_t height, - unsigned internalformat) { - int32_t new_id = ++next_image_id_; - - gfx::Size size(static_cast<int32_t>(width), static_cast<int32_t>(height)); - - ui::MojoGpuMemoryBufferImpl* gpu_memory_buffer = - ui::MojoGpuMemoryBufferImpl::FromClientBuffer(buffer); - gfx::GpuMemoryBufferHandle handle = gpu_memory_buffer->GetHandle(); - - bool requires_sync_point = false; - if (handle.type != gfx::SHARED_MEMORY_BUFFER) { - requires_sync_point = true; - NOTIMPLEMENTED(); - return -1; - } - - base::SharedMemoryHandle dupd_handle = - base::SharedMemory::DuplicateHandle(handle.handle); -#if defined(OS_WIN) - HANDLE platform_handle = dupd_handle.GetHandle(); -#else - int platform_handle = dupd_handle.fd; -#endif - - mojo::ScopedHandle scoped_handle = mojo::WrapPlatformFile(platform_handle); - command_buffer_->CreateImage( - new_id, std::move(scoped_handle), handle.type, std::move(size), - static_cast<int32_t>(gpu_memory_buffer->GetFormat()), internalformat); - if (requires_sync_point) { - NOTIMPLEMENTED(); - // TODO(jam): need to support this if we support types other than - // SHARED_MEMORY_BUFFER. - // gpu_memory_buffer_manager->SetDestructionSyncPoint(gpu_memory_buffer, - // InsertSyncPoint()); - } - - return new_id; -} - -void CommandBufferClientImpl::DestroyImage(int32_t id) { - command_buffer_->DestroyImage(id); -} - -int32_t CommandBufferClientImpl::CreateGpuMemoryBufferImage( - size_t width, - size_t height, - unsigned internalformat, - unsigned usage) { - std::unique_ptr<gfx::GpuMemoryBuffer> buffer( - ui::MojoGpuMemoryBufferImpl::Create( - gfx::Size(static_cast<int>(width), static_cast<int>(height)), - gpu::DefaultBufferFormatForImageFormat(internalformat), - gfx::BufferUsage::SCANOUT)); - if (!buffer) - return -1; - - return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); -} - -void CommandBufferClientImpl::SignalQuery(uint32_t query, - const base::Closure& callback) { - // TODO(piman) - NOTIMPLEMENTED(); -} - -void CommandBufferClientImpl::Destroyed(int32_t lost_reason, int32_t error) { - if (destroyed_) - return; - last_state_.context_lost_reason = - static_cast<gpu::error::ContextLostReason>(lost_reason); - last_state_.error = static_cast<gpu::error::Error>(error); - if (gpu_control_client_) - gpu_control_client_->OnGpuControlLostContext(); - destroyed_ = true; -} - -void CommandBufferClientImpl::SignalAck(uint32_t id) {} - -void CommandBufferClientImpl::SwapBuffersCompleted(int32_t result) {} - -void CommandBufferClientImpl::UpdateState( - const gpu::CommandBuffer::State& state) {} - -void CommandBufferClientImpl::UpdateVSyncParameters(int64_t timebase, - int64_t interval) {} - -void CommandBufferClientImpl::TryUpdateState() { - if (last_state_.error == gpu::error::kNoError) - shared_state()->Read(&last_state_); -} - -void CommandBufferClientImpl::MakeProgressAndUpdateState() { - gpu::CommandBuffer::State state; - bool result = command_buffer_->MakeProgress(last_state_.get_offset, &state); - - if (!result) { - VLOG(1) << "Channel encountered error while waiting for command buffer."; - // TODO(piman): is it ok for this to re-enter? - Destroyed(gpu::error::kUnknown, gpu::error::kLostContext); - return; - } - - if (state.generation - last_state_.generation < 0x80000000U) - last_state_ = state; -} - -void CommandBufferClientImpl::SetLock(base::Lock* lock) {} - -void CommandBufferClientImpl::EnsureWorkVisible() { - // This is only relevant for out-of-process command buffers. -} - -gpu::CommandBufferNamespace CommandBufferClientImpl::GetNamespaceID() const { - return gpu::CommandBufferNamespace::MOJO; -} - -gpu::CommandBufferId CommandBufferClientImpl::GetCommandBufferID() const { - return command_buffer_id_; -} - -int32_t CommandBufferClientImpl::GetExtraCommandBufferData() const { - return 0; -} - -uint64_t CommandBufferClientImpl::GenerateFenceSyncRelease() { - return next_fence_sync_release_++; -} - -bool CommandBufferClientImpl::IsFenceSyncRelease(uint64_t release) { - return release != 0 && release < next_fence_sync_release_; -} - -bool CommandBufferClientImpl::IsFenceSyncFlushed(uint64_t release) { - return release != 0 && release <= flushed_fence_sync_release_; -} - -bool CommandBufferClientImpl::IsFenceSyncFlushReceived(uint64_t release) { - return IsFenceSyncFlushed(release); -} - -void CommandBufferClientImpl::SignalSyncToken(const gpu::SyncToken& sync_token, - const base::Closure& callback) { - // TODO(dyen) - NOTIMPLEMENTED(); -} - -bool CommandBufferClientImpl::CanWaitUnverifiedSyncToken( - const gpu::SyncToken* sync_token) { - // Right now, MOJO_LOCAL is only used by trusted code, so it is safe to wait - // on a sync token in MOJO_LOCAL command buffer. - if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO_LOCAL) - return true; - - // It is also safe to wait on the same context. - if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO && - sync_token->command_buffer_id() == GetCommandBufferID()) - return true; - - return false; -} - -} // namespace ui
diff --git a/services/ui/public/cpp/command_buffer_client_impl.h b/services/ui/public/cpp/command_buffer_client_impl.h deleted file mode 100644 index f07ba275..0000000 --- a/services/ui/public/cpp/command_buffer_client_impl.h +++ /dev/null
@@ -1,116 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_ -#define SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <map> -#include <memory> -#include <vector> - -#include "base/macros.h" -#include "gpu/command_buffer/client/gpu_control.h" -#include "gpu/command_buffer/common/command_buffer.h" -#include "gpu/command_buffer/common/command_buffer_id.h" -#include "gpu/command_buffer/common/command_buffer_shared.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "services/ui/public/interfaces/command_buffer.mojom.h" - -namespace base { -class RunLoop; -} - -namespace ui { -class CommandBufferClientImpl; - -class CommandBufferClientImpl : public ui::mojom::CommandBufferClient, - public gpu::CommandBuffer, - public gpu::GpuControl { - public: - explicit CommandBufferClientImpl( - const std::vector<int32_t>& attribs, - ui::mojom::CommandBufferPtr command_buffer_ptr); - ~CommandBufferClientImpl() override; - bool Initialize(); - - // CommandBuffer implementation: - State GetLastState() override; - int32_t GetLastToken() override; - void Flush(int32_t put_offset) override; - void OrderingBarrier(int32_t put_offset) override; - void WaitForTokenInRange(int32_t start, int32_t end) override; - void WaitForGetOffsetInRange(int32_t start, int32_t end) override; - void SetGetBuffer(int32_t shm_id) override; - scoped_refptr<gpu::Buffer> CreateTransferBuffer(size_t size, - int32_t* id) override; - void DestroyTransferBuffer(int32_t id) override; - - // gpu::GpuControl implementation: - void SetGpuControlClient(gpu::GpuControlClient*) override; - gpu::Capabilities GetCapabilities() override; - int32_t CreateImage(ClientBuffer buffer, - size_t width, - size_t height, - unsigned internalformat) override; - void DestroyImage(int32_t id) override; - int32_t CreateGpuMemoryBufferImage(size_t width, - size_t height, - unsigned internalformat, - unsigned usage) override; - void SignalQuery(uint32_t query, const base::Closure& callback) override; - void SetLock(base::Lock*) override; - void EnsureWorkVisible() override; - gpu::CommandBufferNamespace GetNamespaceID() const override; - gpu::CommandBufferId GetCommandBufferID() const override; - int32_t GetExtraCommandBufferData() const override; - uint64_t GenerateFenceSyncRelease() override; - bool IsFenceSyncRelease(uint64_t release) override; - bool IsFenceSyncFlushed(uint64_t release) override; - bool IsFenceSyncFlushReceived(uint64_t release) override; - void SignalSyncToken(const gpu::SyncToken& sync_token, - const base::Closure& callback) override; - bool CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) override; - - private: - // ui::mojom::CommandBufferClient implementation: - void Destroyed(int32_t lost_reason, int32_t error) override; - void SignalAck(uint32_t id) override; - void SwapBuffersCompleted(int32_t result) override; - void UpdateState(const gpu::CommandBuffer::State& state) override; - void UpdateVSyncParameters(int64_t timebase, int64_t interval) override; - - void TryUpdateState(); - void MakeProgressAndUpdateState(); - - gpu::CommandBufferSharedState* shared_state() const { - return reinterpret_cast<gpu::CommandBufferSharedState*>( - shared_state_.get()); - } - - gpu::GpuControlClient* gpu_control_client_; - bool destroyed_; - std::vector<int32_t> attribs_; - mojo::Binding<ui::mojom::CommandBufferClient> client_binding_; - ui::mojom::CommandBufferPtr command_buffer_; - - gpu::CommandBufferId command_buffer_id_; - gpu::Capabilities capabilities_; - State last_state_; - mojo::ScopedSharedBufferMapping shared_state_; - int32_t last_put_offset_; - int32_t next_transfer_buffer_id_; - - // Image IDs are allocated in sequence. - int next_image_id_; - - uint64_t next_fence_sync_release_; - uint64_t flushed_fence_sync_release_; -}; - -} // mus - -#endif // SERVICES_UI_PUBLIC_CPP_COMMAND_BUFFER_CLIENT_IMPL_H_
diff --git a/services/ui/public/cpp/context_provider.h b/services/ui/public/cpp/context_provider.h index 35c3151..d7488ce1 100644 --- a/services/ui/public/cpp/context_provider.h +++ b/services/ui/public/cpp/context_provider.h
@@ -12,7 +12,6 @@ #include "base/macros.h" #include "cc/output/context_provider.h" #include "mojo/public/cpp/system/core.h" -#include "services/ui/public/interfaces/command_buffer.mojom.h" namespace shell { class Connector;
diff --git a/services/ui/public/cpp/gles2_context.cc b/services/ui/public/cpp/gles2_context.cc index 42fd611..4d4dec8 100644 --- a/services/ui/public/cpp/gles2_context.cc +++ b/services/ui/public/cpp/gles2_context.cc
@@ -15,9 +15,7 @@ #include "gpu/ipc/client/command_buffer_proxy_impl.h" #include "gpu/ipc/client/gpu_channel_host.h" #include "mojo/public/cpp/system/core.h" -#include "services/ui/public/cpp/command_buffer_client_impl.h" #include "services/ui/public/cpp/gpu_service.h" -#include "services/ui/public/interfaces/command_buffer.mojom.h" #include "services/ui/public/interfaces/gpu_service.mojom.h" #include "url/gurl.h"
diff --git a/services/ui/public/cpp/gles2_context.h b/services/ui/public/cpp/gles2_context.h index a4e5603..c32e392c 100644 --- a/services/ui/public/cpp/gles2_context.h +++ b/services/ui/public/cpp/gles2_context.h
@@ -12,7 +12,6 @@ #include "base/macros.h" #include "gpu/command_buffer/client/gles2_implementation.h" -#include "services/ui/public/interfaces/command_buffer.mojom.h" namespace gpu { class CommandBufferProxyImpl; @@ -24,7 +23,6 @@ namespace ui { -class CommandBufferClientImpl; class GpuService; class GLES2Context { @@ -42,7 +40,6 @@ GLES2Context(); bool Initialize(GpuService* gpu_service); - std::unique_ptr<CommandBufferClientImpl> command_buffer_client_impl_; std::unique_ptr<gpu::CommandBufferProxyImpl> command_buffer_proxy_impl_; std::unique_ptr<gpu::gles2::GLES2CmdHelper> gles2_helper_; std::unique_ptr<gpu::TransferBuffer> transfer_buffer_;
diff --git a/services/ui/public/cpp/gpu_service.cc b/services/ui/public/cpp/gpu_service.cc index 5951e69..37be4d7 100644 --- a/services/ui/public/cpp/gpu_service.cc +++ b/services/ui/public/cpp/gpu_service.cc
@@ -148,7 +148,7 @@ int client_id = 0; mojom::ChannelHandlePtr channel_handle; - mojom::GpuInfoPtr gpu_info; + gpu::GPUInfo gpu_info; connector_->ConnectToInterface("mojo:ui", &gpu_service_); { base::AutoUnlock auto_unlock(lock_); @@ -161,15 +161,15 @@ } } const bool locked = true; - EstablishGpuChannelOnMainThreadDone( - locked, client_id, std::move(channel_handle), std::move(gpu_info)); + EstablishGpuChannelOnMainThreadDone(locked, client_id, + std::move(channel_handle), gpu_info); } void GpuService::EstablishGpuChannelOnMainThreadDone( bool locked, int client_id, mojom::ChannelHandlePtr channel_handle, - mojom::GpuInfoPtr gpu_info) { + const gpu::GPUInfo& gpu_info) { DCHECK(IsMainThread()); scoped_refptr<gpu::GpuChannelHost> gpu_channel; if (client_id) {
diff --git a/services/ui/public/cpp/gpu_service.h b/services/ui/public/cpp/gpu_service.h index ad208913..69bb5fe7 100644 --- a/services/ui/public/cpp/gpu_service.h +++ b/services/ui/public/cpp/gpu_service.h
@@ -15,6 +15,7 @@ #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" #include "gpu/ipc/client/gpu_channel_host.h" +#include "gpu/ipc/common/gpu_info.mojom.h" #include "services/ui/public/cpp/mojo_gpu_memory_buffer_manager.h" #include "services/ui/public/interfaces/gpu_service.mojom.h" @@ -54,7 +55,7 @@ bool locked, int client_id, mojom::ChannelHandlePtr channel_handle, - mojom::GpuInfoPtr gpu_info); + const gpu::GPUInfo& gpu_info); // gpu::GpuChannelHostFactory overrides: bool IsMainThread() override;
diff --git a/services/ui/public/interfaces/BUILD.gn b/services/ui/public/interfaces/BUILD.gn index 8197797..bdef05c 100644 --- a/services/ui/public/interfaces/BUILD.gn +++ b/services/ui/public/interfaces/BUILD.gn
@@ -12,11 +12,9 @@ "animations.mojom", "channel_handle.mojom", "clipboard.mojom", - "command_buffer.mojom", "cursor.mojom", "display.mojom", "event_matcher.mojom", - "gpu.mojom", "gpu_memory_buffer.mojom", "gpu_service.mojom", "ime.mojom",
diff --git a/services/ui/public/interfaces/command_buffer.mojom b/services/ui/public/interfaces/command_buffer.mojom deleted file mode 100644 index b38bcb8..0000000 --- a/services/ui/public/interfaces/command_buffer.mojom +++ /dev/null
@@ -1,64 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module ui.mojom; - -import "gpu/ipc/common/capabilities.mojom"; -import "gpu/ipc/common/command_buffer.mojom"; -import "gpu/ipc/common/mailbox.mojom"; -import "gpu/ipc/common/sync_token.mojom"; -import "ui/gfx/geometry/mojo/geometry.mojom"; - -struct CommandBufferInitializeResult { - int32 command_buffer_namespace; - uint64 command_buffer_id; - gpu.mojom.Capabilities capabilities; -}; - -interface CommandBufferClient { - Destroyed(int32 context_lost_reason, - int32 error); - SignalAck(uint32 id); - // TODO(penghuang): support latency_info and use gfx::SwapResult for result. - SwapBuffersCompleted(/* array<ui.mojom.LatencyInfo> latency_info, */ - int32 result); - UpdateState(gpu.mojom.CommandBufferState state); - // TODO(penghuang): use base::TimeTicks & base::TimeDelta. - UpdateVSyncParameters(int64 timebase, int64 interval); -}; - -interface CommandBuffer { - // Initialize attempts to initialize the command buffer. - // If the context is lost after creation the LostContext method on the - // CommandBufferClient's will be called then this pipe will be - // closed. - [Sync] - Initialize(CommandBufferClient client, - handle<shared_buffer> shared_state, - array<int32> attribs) => (CommandBufferInitializeResult? result); - SetGetBuffer(int32 buffer); - Flush(int32 put_offset); - [Sync] - MakeProgress(int32 last_get_offset) => (gpu.mojom.CommandBufferState state); - RegisterTransferBuffer( - int32 id, handle<shared_buffer> transfer_buffer, uint32 size); - DestroyTransferBuffer(int32 id); - CreateImage(int32 id, - handle memory_handle, - int32 type, - gfx.mojom.Size size, - int32 format, - int32 internal_format); - DestroyImage(int32 id); - CreateStreamTexture(uint32 client_texture_id) - => (int32 stream_id, bool succeeded); - TakeFrontBuffer(gpu.mojom.Mailbox mailbox); - ReturnFrontBuffer(gpu.mojom.Mailbox mailbox, bool is_lost); - SignalQuery(uint32 query, uint32 signal_id); - SignalSyncToken(gpu.mojom.SyncToken sync_token, uint32 signal_id); - WaitForGetOffsetInRange(int32 start, int32 end) - => (gpu.mojom.CommandBufferState state); - WaitForTokenInRange(int32 start, int32 end) - => (gpu.mojom.CommandBufferState state); -};
diff --git a/services/ui/public/interfaces/gpu.mojom b/services/ui/public/interfaces/gpu.mojom deleted file mode 100644 index 5c910227..0000000 --- a/services/ui/public/interfaces/gpu.mojom +++ /dev/null
@@ -1,23 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -module ui.mojom; - -import "services/ui/public/interfaces/command_buffer.mojom"; - -struct GpuInfo { - uint32 vendor_id; - uint32 device_id; - string vendor_info; - string renderer_info; - string driver_version; -}; - -interface Gpu { - // Creates a new offscreen OpenGL ES 2.0 context. - CreateOffscreenGLES2Context(CommandBuffer& gles2_client); - - // Query Gpu information - GetGpuInfo() => (GpuInfo gpu_info); -};
diff --git a/services/ui/public/interfaces/gpu_service.mojom b/services/ui/public/interfaces/gpu_service.mojom index ee869ee1..54bbd9f 100644 --- a/services/ui/public/interfaces/gpu_service.mojom +++ b/services/ui/public/interfaces/gpu_service.mojom
@@ -4,9 +4,9 @@ module ui.mojom; +import "gpu/ipc/common/gpu_info.mojom"; import "gpu/ipc/common/sync_token.mojom"; import "services/ui/public/interfaces/channel_handle.mojom"; -import "services/ui/public/interfaces/gpu.mojom"; import "services/ui/public/interfaces/gpu_memory_buffer.mojom"; import "ui/gfx/geometry/mojo/geometry.mojom"; @@ -15,8 +15,9 @@ // client. The GPU service responds with client ID, IPC handle and // GPUInfo. [Sync] - EstablishGpuChannel() - => (int32 client_id, ChannelHandle channel_handle, GpuInfo gpu_info); + EstablishGpuChannel() => (int32 client_id, + ChannelHandle channel_handle, + gpu.mojom.GpuInfo gpu_info); // Tells the GPU service to create a new GPU memory buffer. CreateGpuMemoryBuffer(GpuMemoryBufferId id,
diff --git a/services/ui/service.h b/services/ui/service.h index 9006748..b26e4b52 100644 --- a/services/ui/service.h +++ b/services/ui/service.h
@@ -24,7 +24,6 @@ #include "services/ui/public/interfaces/accessibility_manager.mojom.h" #include "services/ui/public/interfaces/clipboard.mojom.h" #include "services/ui/public/interfaces/display.mojom.h" -#include "services/ui/public/interfaces/gpu.mojom.h" #include "services/ui/public/interfaces/gpu_service.mojom.h" #include "services/ui/public/interfaces/ime.mojom.h" #include "services/ui/public/interfaces/user_access_manager.mojom.h"
diff --git a/services/ui/ws/platform_display.cc b/services/ui/ws/platform_display.cc index 4fe70ee..88d84359 100644 --- a/services/ui/ws/platform_display.cc +++ b/services/ui/ws/platform_display.cc
@@ -11,7 +11,6 @@ #include "cc/output/delegated_frame_data.h" #include "services/shell/public/cpp/connection.h" #include "services/shell/public/cpp/connector.h" -#include "services/ui/public/interfaces/gpu.mojom.h" #include "services/ui/surfaces/display_compositor.h" #include "services/ui/surfaces/surfaces_state.h" #include "services/ui/ws/platform_display_factory.h"
diff --git a/services/video_capture/BUILD.gn b/services/video_capture/BUILD.gn new file mode 100644 index 0000000..6c8dcfe --- /dev/null +++ b/services/video_capture/BUILD.gn
@@ -0,0 +1,76 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//services/shell/public/cpp/service.gni") +import("//services/shell/public/service_manifest.gni") +import("//testing/test.gni") + +service("video_capture") { + sources = [ + "service_main.cc", + "video_capture_service.cc", + "video_capture_service.h", + ] + + deps = [ + ":lib", + "//mojo/public/cpp/system", + "//services/shell/public/cpp", + "//services/video_capture/public/interfaces", + ] + + data_deps = [ + ":manifest", + ] +} + +service_manifest("manifest") { + name = "video_capture" + source = "service_manifest.json" +} + +source_set("lib") { + sources = [ + "video_capture_device_client_impl.cc", + "video_capture_device_client_impl.h", + "video_capture_device_factory_impl.cc", + "video_capture_device_factory_impl.h", + "video_capture_device_impl.cc", + "video_capture_device_impl.h", + ] + + deps = [ + "//base", + "//mojo/common:common_base", + "//services/shell/public/cpp", + "//services/video_capture/public/interfaces", + ] +} + +test("video_capture_unittests") { + sources = [ + "service_unittest.cc", + ] + + deps = [ + ":video_capture", + "//base", + "//base/test:test_support", + "//services/shell/public/cpp", + "//services/shell/public/cpp:service_test_support", + "//services/shell/public/cpp/test:run_all_shelltests", + "//services/video_capture/public/interfaces", + "//testing/gmock", + "//testing/gtest", + ] + + data_deps = [ + ":unittest_manifest", + ] +} + +service_manifest("unittest_manifest") { + name = "video_capture_unittests" + source = "service_unittest_manifest.json" +}
diff --git a/services/video_capture/public/interfaces/video_capture_device.mojom b/services/video_capture/public/interfaces/video_capture_device.mojom index be3b97d7..ab6ff33 100644 --- a/services/video_capture/public/interfaces/video_capture_device.mojom +++ b/services/video_capture/public/interfaces/video_capture_device.mojom
@@ -19,8 +19,9 @@ HZ_60 }; -// Note: The VideoCaptureDevice is stopped when the corresponding message pipe -// is closed. +// Represents access to a video capture device available on the machine. +// Note: Instead of offering an explicit Stop() method, the VideoCaptureDevice +// is stopped automatically when the corresponding message pipe is closed. interface VideoCaptureDevice { Start(VideoCaptureFormat requested_format, ResolutionChangePolicy resolution_change_policy,
diff --git a/services/video_capture/public/interfaces/video_capture_device_client.mojom b/services/video_capture/public/interfaces/video_capture_device_client.mojom index 7c7f210c..810d8aa7 100644 --- a/services/video_capture/public/interfaces/video_capture_device_client.mojom +++ b/services/video_capture/public/interfaces/video_capture_device_client.mojom
@@ -6,6 +6,8 @@ import "media/mojo/interfaces/media_types.mojom"; +// Callback interface for receiving data and messages from a started +// VideoCaptureDevice. interface VideoCaptureDeviceClient { OnFrameAvailable(media.mojom.VideoFrame frame); OnError(string error);
diff --git a/services/video_capture/public/interfaces/video_capture_device_factory.mojom b/services/video_capture/public/interfaces/video_capture_device_factory.mojom index 37bd6fc..e637142 100644 --- a/services/video_capture/public/interfaces/video_capture_device_factory.mojom +++ b/services/video_capture/public/interfaces/video_capture_device_factory.mojom
@@ -22,7 +22,7 @@ }; enum VideoCaptureTransportType { - // For AVFoundation Api, identify devices that are built-in or USB. + // For MACOSX_AVFOUNDATION Api, identifies devices that are built-in or USB. MACOSX_USB_OR_BUILT_IN, OTHER_TRANSPORT }; @@ -35,6 +35,15 @@ VideoCaptureTransportType transport_type; }; +// Entry point for accessing video capture devices available on the machine. +// Typical operation is to first call EnumerateDeviceDescriptors() to obtain +// information about available devices. The obtained descriptors can then be +// used to either obtain the supported formats of a device using +// GetSupportedFormats(), or to create an instance of VideoCaptureDevice for +// the device using CreateDevice(). +// TODO(chfremer): Consider using a simple string identifier instead of a +// VideoCaptureDeviceDescriptor. +// https://crbug.com/637439 interface VideoCaptureDeviceFactory { EnumerateDeviceDescriptors() => (array<VideoCaptureDeviceDescriptor> descriptors);
diff --git a/services/video_capture/service_main.cc b/services/video_capture/service_main.cc new file mode 100644 index 0000000..c8e53c1f --- /dev/null +++ b/services/video_capture/service_main.cc
@@ -0,0 +1,12 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "services/shell/public/c/main.h" +#include "services/shell/public/cpp/service_runner.h" +#include "services/video_capture/video_capture_service.h" + +MojoResult ServiceMain(MojoHandle service_request_handle) { + return shell::ServiceRunner(new video_capture::VideoCaptureService) + .Run(service_request_handle); +}
diff --git a/services/video_capture/service_manifest.json b/services/video_capture/service_manifest.json new file mode 100644 index 0000000..6e00b2a --- /dev/null +++ b/services/video_capture/service_manifest.json
@@ -0,0 +1,13 @@ +{ + "manifest_version": 1, + "name": "mojo:video_capture", + "display_name": "Video Capture", + "capabilities": { + "provided": { + "tests": ["*"] + }, + "required": { + "mojo:shell": { "classes": [ "shell:all_users" ] } + } + } +}
diff --git a/services/video_capture/service_unittest.cc b/services/video_capture/service_unittest.cc new file mode 100644 index 0000000..76d299c --- /dev/null +++ b/services/video_capture/service_unittest.cc
@@ -0,0 +1,63 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/memory/ref_counted.h" +#include "base/run_loop.h" +#include "services/shell/public/cpp/service_test.h" +#include "services/video_capture/public/interfaces/video_capture_device_factory.mojom.h" +#include "testing/gmock/include/gmock/gmock.h" + +using testing::Exactly; +using testing::_; + +namespace video_capture { + +ACTION_P(RunClosure, closure) { + closure.Run(); +} + +class MockClient { + public: + // Use forwarding method to work around gmock not supporting move-only types. + void HandleEnumerateDeviceDescriptorsCallback( + std::vector<mojom::VideoCaptureDeviceDescriptorPtr> descriptors) { + OnEnumerateDeviceDescriptorsCallback(descriptors); + } + + MOCK_METHOD1( + OnEnumerateDeviceDescriptorsCallback, + void(const std::vector<mojom::VideoCaptureDeviceDescriptorPtr>&)); +}; + +class VideoCaptureServiceTest : public shell::test::ServiceTest { + public: + VideoCaptureServiceTest() + : shell::test::ServiceTest("exe:video_capture_unittests") {} + ~VideoCaptureServiceTest() override {} + + void SetUp() override { + ServiceTest::SetUp(); + connector()->ConnectToInterface("mojo:video_capture", &factory_); + } + + protected: + mojom::VideoCaptureDeviceFactoryPtr factory_; + MockClient client_; +}; + +// Tests that an answer arrives from the service when calling +// EnumerateDeviceDescriptors(). +TEST_F(VideoCaptureServiceTest, EnumerateDeviceDescriptorsCallbackArrives) { + base::RunLoop wait_loop; + EXPECT_CALL(client_, OnEnumerateDeviceDescriptorsCallback(_)) + .Times(Exactly(1)) + .WillOnce(RunClosure(wait_loop.QuitClosure())); + + factory_->EnumerateDeviceDescriptors( + base::Bind(&MockClient::HandleEnumerateDeviceDescriptorsCallback, + base::Unretained(&client_))); + wait_loop.Run(); +} + +} // namespace video_capture
diff --git a/services/video_capture/service_unittest_manifest.json b/services/video_capture/service_unittest_manifest.json new file mode 100644 index 0000000..2dcfb3a --- /dev/null +++ b/services/video_capture/service_unittest_manifest.json
@@ -0,0 +1,11 @@ +{ + "manifest_version": 1, + "name": "exe:video_capture_unittests", + "display_name": "Video Capture Unittests", + "capabilities": { + "required": { + "mojo:video_capture": { + "classes": [ "tests" ] } + } + } +}
diff --git a/services/video_capture/video_capture_device_factory_impl.cc b/services/video_capture/video_capture_device_factory_impl.cc index 3bfcfbcf..0454415 100644 --- a/services/video_capture/video_capture_device_factory_impl.cc +++ b/services/video_capture/video_capture_device_factory_impl.cc
@@ -9,7 +9,8 @@ void VideoCaptureDeviceFactoryImpl::EnumerateDeviceDescriptors( const EnumerateDeviceDescriptorsCallback& callback) { - NOTIMPLEMENTED(); + std::vector<mojom::VideoCaptureDeviceDescriptorPtr> empty_descriptors; + callback.Run(std::move(empty_descriptors)); } void VideoCaptureDeviceFactoryImpl::GetSupportedFormats(
diff --git a/services/video_capture/video_capture_service.cc b/services/video_capture/video_capture_service.cc new file mode 100644 index 0000000..e025b6b --- /dev/null +++ b/services/video_capture/video_capture_service.cc
@@ -0,0 +1,25 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "services/video_capture/video_capture_service.h" + +namespace video_capture { + +VideoCaptureService::VideoCaptureService() = default; + +VideoCaptureService::~VideoCaptureService() = default; + +bool VideoCaptureService::OnConnect(const shell::Identity& remote_identity, + shell::InterfaceRegistry* registry) { + registry->AddInterface<mojom::VideoCaptureDeviceFactory>(this); + return true; +} + +void VideoCaptureService::Create( + const shell::Identity& remote_identity, + mojom::VideoCaptureDeviceFactoryRequest request) { + bindings_.AddBinding(&device_factory_, std::move(request)); +} + +} // namespace video_capture
diff --git a/services/video_capture/video_capture_service.h b/services/video_capture/video_capture_service.h new file mode 100644 index 0000000..4d85457 --- /dev/null +++ b/services/video_capture/video_capture_service.h
@@ -0,0 +1,41 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SERVICES_VIDEO_CAPTURE_VIDEO_CAPTURE_SERVICE_H_ +#define SERVICES_VIDEO_CAPTURE_VIDEO_CAPTURE_SERVICE_H_ + +#include <memory> + +#include "mojo/public/cpp/bindings/binding_set.h" +#include "services/shell/public/cpp/service.h" +#include "services/video_capture/public/interfaces/video_capture_device_factory.mojom.h" +#include "services/video_capture/video_capture_device_factory_impl.h" + +namespace video_capture { + +// Exposes a single internal instance of VideoCaptureDeviceFactoryImpl +// through a Mojo Shell Service. +class VideoCaptureService + : public shell::Service, + public shell::InterfaceFactory<mojom::VideoCaptureDeviceFactory> { + public: + VideoCaptureService(); + ~VideoCaptureService() override; + + // shell::Service: + bool OnConnect(const shell::Identity& remote_identity, + shell::InterfaceRegistry* registry) override; + + // shell::InterfaceFactory<mojom::VideoCaptureDeviceFactory>: + void Create(const shell::Identity& remote_identity, + mojom::VideoCaptureDeviceFactoryRequest request) override; + + private: + mojo::BindingSet<mojom::VideoCaptureDeviceFactory> bindings_; + VideoCaptureDeviceFactoryImpl device_factory_; +}; + +} // namespace video_capture + +#endif // SERVICES_VIDEO_CAPTURE_VIDEO_CAPTURE_SERVICE_H_
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index d528804..0a4d0c6 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -9002,6 +9002,7 @@ "Headless Linux (dbg)": { "additional_compile_targets": [ "headless_lib", + "headless_shell", "headless_tests" ], "gtest_tests": [
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index e9e2f89..5030982 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -791,6 +791,8 @@ crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollable-area-frame.html [ Failure ] crbug.com/417782 virtual/rootlayerscrolls/fast/scrolling/scrollbar-tickmarks-styled.html [ Failure ] +crbug.com/638152 fast/inline-block/14498-positionForCoordinates.html [ Pass Failure ] + crbug.com/385014 crbug.com/410145 accessibility/canvas-fallback-content-2.html [ Pass Failure Timeout ] crbug.com/574283 [ Mac ] virtual/threaded/fast/scroll-behavior/smooth-scroll/fixed-background-in-iframe.html [ Skip ] @@ -1272,10 +1274,6 @@ crbug.com/399507 [ Mac Linux Win10 ] virtual/threaded/inspector/tracing/timeline-paint/layer-tree.html [ Skip ] -# Skia exact gradients change -crbug.com/637879 virtual/gpu-rasterization/fast/images/color-profile-reflection.html [ NeedsManualRebaseline ] -crbug.com/637879 virtual/gpu/fast/canvas/fillrect_gradient.html [ NeedsManualRebaseline ] - crbug.com/631039 [ Win7 ] virtual/threaded/fast/scroll-behavior/subframe-scrollBy.html [ Pass Failure ] crbug.com/631039 [ Win7 ] virtual/threaded/fast/scroll-behavior/main-frame-element-scroll.html [ Pass Failure ] crbug.com/631039 [ Win7 ] virtual/threaded/fast/scroll-behavior/main-frame-element-scrollBy.html [ Pass Failure ]
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/range-spanning-elements-bounding-client-rect.html b/third_party/WebKit/LayoutTests/fast/dom/Range/range-spanning-elements-bounding-client-rect.html new file mode 100644 index 0000000..dd89f18a --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/range-spanning-elements-bounding-client-rect.html
@@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + <head> + <title>Tests getBoundingClientRect for ranges spanning multiple elements</title> + <script src="../../../resources/testharness.js"></script> + <script src="../../../resources/testharnessreport.js"></script> + </head> + <style> + p { visibility: hidden; } + p > span { text-decoration: underline; } + </style> + <body> + <p id="test">Test that getBoundingClientRect <span>returns the correct + results for ranges spanning multiple</span> elements.</p> + <p id="reference">Test that getBoundingClientRect <span>returns</span> + the correct results for ranges spanning multiple elements.</p> + <script> + test(function() { + var element = document.getElementById('test'); + var span = element.getElementsByTagName('span')[0]; + var range = document.createRange(); + range.setStart(element.firstChild, 10); + range.setEnd(element.firstElementChild.firstChild, 7); + + element = document.getElementById('reference'); + var reference = document.createRange(); + reference.setStart(element.firstChild, 10); + reference.setEnd(element.firstElementChild.firstChild, 7); + + assert_equals( + Math.round(range.getBoundingClientRect().width), + Math.round(reference.getBoundingClientRect().width), + 'Width of range should match reference range.'); + assert_less_than( + Math.round(range.getBoundingClientRect().width), + Math.round(span.getBoundingClientRect().width), + 'Width of range should be less than inner span.'); + }, 'Check reported width of range.'); + </script> + </body> +</html>
diff --git a/third_party/WebKit/LayoutTests/fast/images/border.html b/third_party/WebKit/LayoutTests/fast/images/border.html index 999bc36b..9a8f5c2 100644 --- a/third_party/WebKit/LayoutTests/fast/images/border.html +++ b/third_party/WebKit/LayoutTests/fast/images/border.html
@@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<!DOCTYPE html> <title>This tests the HTMLImageElement border property.</title> <body> <script src="../../resources/testharness.js"></script>
diff --git a/third_party/WebKit/LayoutTests/fast/images/cmyk-jpeg-with-color-profile.html b/third_party/WebKit/LayoutTests/fast/images/cmyk-jpeg-with-color-profile.html index 28fae6d..3602943a 100644 --- a/third_party/WebKit/LayoutTests/fast/images/cmyk-jpeg-with-color-profile.html +++ b/third_party/WebKit/LayoutTests/fast/images/cmyk-jpeg-with-color-profile.html
@@ -1,4 +1,4 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> +<!DOCTYPE html> <title>Test that we can render a CMYK JPEG without color corruption.</title> <script src="../../resources/testharness.js"></script> <script src="../../resources/testharnessreport.js"></script>
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout-expected.txt b/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout-expected.txt deleted file mode 100644 index 7f22e68..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -This test ensures that when an image changes, but doesn't change size (like in an Animated GIF), we don't force a Layout. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -PASS successfullyParsed is true - -TEST COMPLETE -PASS window.internals.needsLayoutCount() is 0 -
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout.html b/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout.html index 015cae4..8327ff68 100644 --- a/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout.html +++ b/third_party/WebKit/LayoutTests/fast/images/image-change-without-resize-shouldnt-layout.html
@@ -1,22 +1,16 @@ <!DOCTYPE html> -<script src="../../resources/js-test.js"></script> -<script> -description("This test ensures that when an image changes, but doesn't change size (like in an Animated GIF), we don't force a Layout.") - -if (window.testRunner) - testRunner.waitUntilDone(); - -function runTest() { - document.documentElement.offsetTop; - var imageElement = document.getElementById("image"); - imageElement.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURf8AAAAAAEGjEgMAAAAMSURBVHjaYmAACDAAAAIAAU9tWeEAAAAASUVORK5CYII=" - if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0"); - if (window.testRunner) - testRunner.notifyDone(); -}; -</script> -<body onload="runTest();"> +<title>This test ensures that when an image changes, but doesn't change size (like in an Animated GIF), we don't force a Layout.</title> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <div style="float: left;"> - <img id="image" style="max-width: 100%" src="../replaced/resources/1x1-blue.png"> +<img style="max-width: 100%" src="../replaced/resources/1x1-blue.png"> </div> +<script> +//TODO(siva.gunturi): Use async_test and use asserts on image.onload and window.onload. +test(function() { + document.documentElement.offsetTop; + var img = document.querySelector("img"); + img.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAGUExURf8AAAAAAEGjEgMAAAAMSURBVHjaYmAACDAAAAIAAU9tWeEAAAAASUVORK5CYII="; + assert_equals(internals.needsLayoutCount(), 0); +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener-expected.txt b/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener-expected.txt deleted file mode 100644 index 521780e..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -Test that removing invalid event listeners from image documents doesn't crash. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -PASS No crash. -PASS successfullyParsed is true - -TEST COMPLETE -
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener.html b/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener.html index ea833ef7..8b953f3 100644 --- a/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener.html +++ b/third_party/WebKit/LayoutTests/fast/images/image-document-remove-listener.html
@@ -1,29 +1,16 @@ <!DOCTYPE html> -<html> -<script src="../../resources/js-test.js"></script> -<body> +<title>Test that removing invalid event listeners from image documents doesn't crash.</title> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <script> -description("Test that removing invalid event listeners from image documents doesn't crash."); - -window.jsTestIsAsync = true; - -if (window.testRunner) { - testRunner.dumpAsText(); - testRunner.setCanOpenWindows(); - testRunner.waitUntilDone(); -} - -function runTest() -{ +async_test(function(t) { + if (window.testRunner) { + testRunner.setCanOpenWindows(); + } var newWindow = window.open("resources/dice.png"); - newWindow.onload = function() { + newWindow.onload = t.step_func_done(function() { newWindow.addEventListener("resize", function () {;}); newWindow.removeEventListener("resize", 2); - testPassed("No crash."); - finishJSTest(); - }; -} -runTest(); + }); +}); </script> -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing-expected.txt b/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing-expected.txt deleted file mode 100644 index 5e2572c3..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing-expected.txt +++ /dev/null
@@ -1,12 +0,0 @@ -CONSOLE ERROR: Refused to load the image 'http://www.myfakesiteabc.com/image.png' because it violates the following Content Security Policy directive: "img-src 'self'". - -This tests onerror event is fired if we change image src to a url blocked by content-security-policy. - -On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". - - -PASS error event fired. -PASS successfullyParsed is true - -TEST COMPLETE -
diff --git a/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing.html b/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing.html deleted file mode 100644 index 0bfcdec..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/image-error-event-not-firing.html +++ /dev/null
@@ -1,35 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<html> -<head> -<meta http-equiv="Content-Security-Policy" content="img-src 'self'"> -<script src="../../resources/js-test.js"></script> -<script> -description( - "This tests onerror event is fired if we change image src to a url blocked by content-security-policy." -) - -jsTestIsAsync = true; - -function load() -{ - var image = document.getElementById('test'); - image.onerror = function() { - testPassed("error event fired."); - finishJSTest(); - }; - image.src = 'http://www.myfakesiteabc.com/image.png'; - - setTimeout(function() { - testFailed("error event is not fired.") - finishJSTest(); - }, 200); -} -</script> - -</head> -<body onload='load()'> - -<img src="./color-jpeg-with-color-profile-expected.png" id="test"></img> - -</body> -</html>
diff --git a/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset-expected.txt b/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset-expected.txt deleted file mode 100644 index d6b4aef..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ - - crbug.com/468915: Resetting or removing the src attribute should reset the image immediately, rather than waiting for an asynchronous load to do it. - -PASS successfullyParsed is true - -TEST COMPLETE -PASS
diff --git a/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset.html b/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset.html index f9c2246..5ba8dc98 100644 --- a/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset.html +++ b/third_party/WebKit/LayoutTests/fast/images/natural-dimensions-correct-after-image-reset.html
@@ -1,30 +1,15 @@ <!DOCTYPE html> -<script src="../../resources/js-test.js"></script> +<title>crbug.com/468915: Resetting or removing the src attribute should reset the image immediately, rather than waiting for an asynchronous load to do it.</title> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <script> - if (window.testRunner) { - testRunner.waitUntilDone(); - testRunner.dumpAsText(); - } - img = new Image(); - var testImage = 'resources/green.jpg'; - img.onload = function(){ +async_test(function(t) { + var img = new Image(); + img.onload = t.step_func_done(function() { + assert_equals(img.naturalWidth, 16); img.removeAttribute('src'); - if (img.naturalWidth > 0) { - debug("Natural width is : " + img.naturalWidth + " and should be 0."); - if (window.testRunner) - testRunner.notifyDone(); - return; - } - document.getElementById('result').textContent = "PASS"; - if (window.testRunner) - testRunner.notifyDone(); - }; - setTimeout(function() { - img.src = testImage; - }, 0); + assert_equals(img.naturalWidth, 0); + }); + img.src = 'resources/green.jpg'; +}); </script> -<div id="console"> - crbug.com/468915: Resetting or removing the src attribute should reset the image immediately, rather than waiting for an asynchronous load to do it.<br> -</div> -<div id="result">FAIL</div> -
diff --git a/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load-expected.txt b/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load-expected.txt deleted file mode 100644 index 11af700..0000000 --- a/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ - -crbug.com/469678: We should fire an image load event even if the image is the last one we loaded successfully. - -In this test we load an image. Then we make a request for a broken image which doesn't get the chance to complete before we attempt to load the same image again. - -PASS successfullyParsed is true - -TEST COMPLETE -Image onload event fired for green.jpg -Image onload event fired for green.jpg -PASS
diff --git a/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load.html b/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load.html index 537c6efb..5f07093 100644 --- a/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load.html +++ b/third_party/WebKit/LayoutTests/fast/images/onload-event-when-reloading-image-after-interrupted-broken-image-load.html
@@ -1,39 +1,21 @@ <!DOCTYPE html> -<script src="../../resources/js-test.js"></script> +<title>crbug.com/469678: We should fire an image load event even if the image is the last one we loaded successfully.</title> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> <script> - if (window.testRunner) { - testRunner.waitUntilDone(); - testRunner.dumpAsText(); - } - img = new Image(); - var onloadCounter = 0; +async_test(function(t) { + var img = new Image(); var testImage = 'resources/green.jpg'; var resetImage = 'resources/bad-png.png'; - img.onload = function(){ - onloadCounter++; - debug("Image onload event fired for " + img.src.substring(img.src.lastIndexOf('/') + 1)); - if (onloadCounter == 2) { - document.getElementById('result').textContent = "PASS"; - if (window.testRunner) - testRunner.notifyDone(); - return; - } - if (onloadCounter == 1) { - setTimeout(function() { - img.src= resetImage; - img.src = testImage; - }, 0); - return; - } - document.getElementById('result').textContent = "FAIL"; - }; - setTimeout(function() { - img.src= resetImage; + // Load an image. + img.src = resetImage; + img.src = testImage; + // Make a request for a broken image which doesn't get the chance to + // complete before we attempt to load the same image again. + img.onload = t.step_func(function() { + img.src = resetImage; img.src = testImage; - }, 0); + img.onload = t.step_func_done(); + }); +}); </script> -<div id="console"> -crbug.com/469678: We should fire an image load event even if the image is the last one we loaded successfully.<br> -In this test we load an image. Then we make a request for a broken image which doesn't get the chance to complete before we attempt to load the same image again.<br> -</div> -<div id="result">FAIL</div>
diff --git a/third_party/WebKit/LayoutTests/fast/multicol/span/offset-properties.html b/third_party/WebKit/LayoutTests/fast/multicol/span/offset-properties.html new file mode 100644 index 0000000..1171ee0e --- /dev/null +++ b/third_party/WebKit/LayoutTests/fast/multicol/span/offset-properties.html
@@ -0,0 +1,13 @@ +<!DOCTYPE html> +<script src="../../../resources/testharness.js"></script> +<script src="../../../resources/testharnessreport.js"></script> +<div style="position:relative; border:10px solid; columns:3; column-gap:0; column-fill:auto; width:300px;"> + <div style="height:450px;"></div> + <div id="elm" style="column-span:all; margin:1px; border:10px solid; height:50px;"></div> +</div> +<script> + test(function() { + assert_equals(document.getElementById('elm').offsetLeft, 1); + assert_equals(document.getElementById('elm').offsetTop, 151); + }, "offsetLeft and offsetTop on column-span:all"); +</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/images/image-error-event-not-firing.html b/third_party/WebKit/LayoutTests/http/tests/images/image-error-event-not-firing.html new file mode 100644 index 0000000..2db2bf5 --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/images/image-error-event-not-firing.html
@@ -0,0 +1,14 @@ +<!DOCTYPE html> +<title>This tests onerror event is fired if we change image src to a url blocked by content-security-policy.</title> +<meta http-equiv="Content-Security-Policy" content="img-src 'self'"> +<script src="../../../resources/testharness.js"></script> +<script src="../../../resources/testharnessreport.js"></script> +<img src="../resources/square.png"></img> +<script> +//TODO(siva.gunturi): Verify that the initial reference loads ok. +async_test(function(t) { + var img = document.querySelector("img"); + img.onerror = t.step_func_done(); + img.src = "http://127.0.0.1:8080/resources/square.png"; +}); +</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js index 5a8a109..fb92cabb 100644 --- a/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js +++ b/third_party/WebKit/LayoutTests/http/tests/inspector/debugger-test.js
@@ -174,18 +174,15 @@ InspectorTest.waitUntilPausedAndDumpStackAndResume = function(callback, options) { InspectorTest.waitUntilPaused(paused); - InspectorTest.addSniffer(WebInspector.CallStackSidebarPane.prototype, "setStatus", setStatus); + InspectorTest.addSniffer(WebInspector.CallStackSidebarPane.prototype, "_updateStatusMessage", setStatus); var caption; var callFrames; var asyncStackTrace; - function setStatus(status) + function setStatus() { - if (typeof status === "string") - caption = status; - else - caption = status.deepTextContent(); + caption = this.contentElement.lastChild.deepTextContent(); if (callFrames) step1(); } @@ -355,7 +352,7 @@ if (InspectorTest._waitUntilPausedCallback) { var callback = InspectorTest._waitUntilPausedCallback; delete InspectorTest._waitUntilPausedCallback; - callback.apply(callback, InspectorTest._pausedScriptArguments); + setTimeout(() => callback.apply(callback, InspectorTest._pausedScriptArguments)); } }; @@ -421,7 +418,7 @@ InspectorTest.dumpBreakpointSidebarPane = function(title) { - var paneElement = WebInspector.panels.sources.sidebarPanes.jsBreakpoints.listElement; + var paneElement = self.runtime.sharedInstance(WebInspector.JavaScriptBreakpointsSidebarPane).element; InspectorTest.addResult("Breakpoint sidebar pane " + (title || "")); InspectorTest.addResult(InspectorTest.textContentWithLineBreaks(paneElement)); }; @@ -442,7 +439,7 @@ InspectorTest.scopeChainSections = function() { - var children = WebInspector.panels.sources.sidebarPanes.scopechain.contentElement.children; + var children = self.runtime.sharedInstance(WebInspector.ScopeChainSidebarPane).contentElement.children; var sections = []; for (var i = 0; i < children.length; ++i) sections.push(children[i]._section); @@ -586,7 +583,7 @@ InspectorTest.selectThread = function(target) { - var threadsPane = WebInspector.panels.sources.sidebarPanes.threads; + var threadsPane = self.runtime.sharedInstance(WebInspector.ThreadsSidebarPane); var listItem = threadsPane._debuggerModelToListItems.get(WebInspector.DebuggerModel.fromTarget(target)); threadsPane._onListItemClick(listItem); }
diff --git a/third_party/WebKit/LayoutTests/inspector-enabled/sources/debugger/script-formatter-breakpoints-1-expected.txt b/third_party/WebKit/LayoutTests/inspector-enabled/sources/debugger/script-formatter-breakpoints-1-expected.txt index 7d24697..51c8d9ce 100644 --- a/third_party/WebKit/LayoutTests/inspector-enabled/sources/debugger/script-formatter-breakpoints-1-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector-enabled/sources/debugger/script-formatter-breakpoints-1-expected.txt
@@ -7,14 +7,14 @@ Script execution paused. Breakpoint sidebar pane while paused in raw -script-formatter-breakpoints-1.html:12 var f=0; + script-formatter-breakpoints-1.html:12 var f=0; Script execution resumed. Script execution paused. Breakpoint sidebar pane while paused in pretty printed -script-formatter-breakpoints-1.html:formatted:13 var f = 0; + script-formatter-breakpoints-1.html:formatted:13 var f = 0; Breakpoint sidebar pane while paused in raw -script-formatter-breakpoints-1.html:12 var f=0; + script-formatter-breakpoints-1.html:12 var f=0; Script execution resumed.
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps-expected.txt index d510d97..8e73fec 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps-expected.txt
@@ -3,11 +3,11 @@ Breakpoint sidebar pane Breakpoints before reload: -source1.js:15 var handler = new ClickHandler(); -source1.js:17} + source1.js:15 var handler = new ClickHandler(); + source1.js:17} Page reloaded. Breakpoint sidebar pane Breakpoints after reload: -source1.js:15 var handler = new ClickHandler(); -source1.js:17} + source1.js:15 var handler = new ClickHandler(); + source1.js:17}
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps.html index 5a804d3..b53c64b2 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/debugger-reload-breakpoints-with-source-maps.html
@@ -42,7 +42,7 @@ function waitForBreakpoints() { var breakpointAddCounter = 4; // Before source map loaded and after. - var jsBreakpoints = WebInspector.panels.sources.sidebarPanes.jsBreakpoints; + var jsBreakpoints = self.runtime.sharedInstance(WebInspector.JavaScriptBreakpointsSidebarPane); jsBreakpoints.didReceiveBreakpointLineForTest = function(uiSourceCode) { if (WebInspector.CompilerScriptMapping.StubProjectID === uiSourceCode.project().id())
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-breakpoint-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-breakpoint-expected.txt index 4e484bc..e2bafaf 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-breakpoint-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-breakpoint-expected.txt
@@ -9,9 +9,9 @@ 0) testFunction (set-breakpoint.html:17) Breakpoint sidebar pane -set-breakpoint.html:17 var x = Math.sqrt(10); + set-breakpoint.html:17 var x = Math.sqrt(10); Breakpoint sidebar pane - +No Breakpoints Script execution resumed. Running: testSetBreakpointOnTheLastLine
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-conditional-breakpoint-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-conditional-breakpoint-expected.txt index 4480410..3c3a1b4d 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-conditional-breakpoint-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-breakpoints/set-conditional-breakpoint-expected.txt
@@ -11,9 +11,9 @@ 0) testFunction (set-conditional-breakpoint.html:17) Breakpoint sidebar pane -set-conditional-breakpoint.html:17 var x = Math.sqrt(10); + set-conditional-breakpoint.html:17 var x = Math.sqrt(10); Breakpoint sidebar pane - +No Breakpoints Script execution resumed. Running: testSetConditionalBreakpointThatDoesNotBreak @@ -22,8 +22,8 @@ Test function finished. Breakpoint sidebar pane -set-conditional-breakpoint.html:17 var x = Math.sqrt(10); + set-conditional-breakpoint.html:17 var x = Math.sqrt(10); Breakpoints removed. Breakpoint sidebar pane - +No Breakpoints
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-change-variable.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-change-variable.html index c182071..34165231 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-change-variable.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-change-variable.html
@@ -44,7 +44,7 @@ function step2(callFrames) { - var pane = WebInspector.panels.sources.sidebarPanes.callstack; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); pane._callFrameSelected(pane.callFrames[1]); InspectorTest.deprecatedRunAfterPendingDispatches(step3); }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-on-call-frame-inside-iframe.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-on-call-frame-inside-iframe.html index 9577eff..2648113d 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-on-call-frame-inside-iframe.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-on-call-frame-inside-iframe.html
@@ -76,7 +76,7 @@ function step3() { - var pane = WebInspector.panels.sources.sidebarPanes.callstack; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); pane._callFrameSelected(pane.callFrames[1]); InspectorTest.deprecatedRunAfterPendingDispatches(step4); }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-while-paused.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-while-paused.html index c8cb2c1..cf76f74 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-while-paused.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-pause/debugger-eval-while-paused.html
@@ -36,7 +36,7 @@ function step3(callFrames, result) { InspectorTest.addResult("Evaluated script on the top frame: " + result); - var pane = WebInspector.panels.sources.sidebarPanes.callstack; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); pane._callFrameSelected(pane.callFrames[1]); InspectorTest.deprecatedRunAfterPendingDispatches(step4); }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/async-call-stack-url.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/async-call-stack-url.html index 41acf28..5f3f753 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/async-call-stack-url.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/async-call-stack-url.html
@@ -30,7 +30,7 @@ function step3() { - var callFrameList = WebInspector.panels.sources.sidebarPanes.callstack.callFrameList; + var callFrameList = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane).callFrameList; for (var item of callFrameList._items) InspectorTest.addResult(item.element.textContent.replace(/VM\d+/g, "VM")); InspectorTest.completeDebuggerTest();
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html index feac2f5..89e39915 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/break-on-set-timeout-with-syntax-error.html
@@ -21,7 +21,7 @@ function step1() { - WebInspector.panels.sources.sidebarPanes.eventListenerBreakpoints._setBreakpoint("instrumentation:timerFired"); + self.runtime.sharedInstance(WebInspector.EventListenerBreakpointsSidebarPane)._setBreakpoint("instrumentation:timerFired"); InspectorTest.evaluateInPage("runSetTimeoutWithSyntaxError()", InspectorTest.waitUntilMessageReceived.bind(this, step2)); } @@ -34,7 +34,7 @@ function step3() { - WebInspector.panels.sources.sidebarPanes.eventListenerBreakpoints._removeBreakpoint("instrumentation:timerFired"); + self.runtime.sharedInstance(WebInspector.EventListenerBreakpointsSidebarPane)._removeBreakpoint("instrumentation:timerFired"); InspectorTest.completeDebuggerTest(); } }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/copy-stack-trace.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/copy-stack-trace.html index af779e6..3b0bcd8 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/copy-stack-trace.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/copy-stack-trace.html
@@ -31,7 +31,7 @@ function step2() { InspectorFrontendHost.copyText = InspectorTest.addResult.bind(InspectorTest); - WebInspector.panels.sources.sidebarPanes.callstack._copyStackTrace(); + self.runtime.sharedInstance(WebInspector.CallStackSidebarPane)._copyStackTrace(); InspectorTest.completeDebuggerTest(); } }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/debugger-expand-scope.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/debugger-expand-scope.html index 5c49899..e31a5e6 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/debugger-expand-scope.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/debugger-expand-scope.html
@@ -34,12 +34,8 @@ function onTestStarted() { - InspectorTest.runTestFunctionAndWaitUntilPaused(onDebuggerPaused); - } - - function onDebuggerPaused() - { InspectorTest.addSniffer(WebInspector.ScopeChainSidebarPane.prototype, "_sidebarPaneUpdatedForTest", onSidebarRendered, true); + InspectorTest.runTestFunctionAndWaitUntilPaused(() => {}); } function onSidebarRendered()
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/error-in-watch-expressions.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/error-in-watch-expressions.html index 1b48d8b0..2c33e118 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/error-in-watch-expressions.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/error-in-watch-expressions.html
@@ -7,11 +7,14 @@ var test = function() { - var watchExpressionsPane = WebInspector.panels.sources.sidebarPanes.watchExpressions; - watchExpressionsPane.revealView(); - watchExpressionsPane.addExpression("#$%"); + var watchExpressionsPane = self.runtime.sharedInstance(WebInspector.WatchExpressionsSidebarPane); + WebInspector.panels.sources._sidebarPaneStack.showView(WebInspector.panels.sources._watchSidebarPane).then(() => { + watchExpressionsPane.doUpdate(); + watchExpressionsPane._createWatchExpression("#$%"); + watchExpressionsPane._saveExpressions(); + InspectorTest.deprecatedRunAfterPendingDispatches(step1); + }); - InspectorTest.deprecatedRunAfterPendingDispatches(step1); function step1() {
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/reveal-not-skipped-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/reveal-not-skipped-expected.txt index b3a128b..b81d3ae 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/reveal-not-skipped-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/reveal-not-skipped-expected.txt
@@ -7,19 +7,19 @@ Showing script1 source... Script source was shown for 'script1.js'. Throwing exception... +Script execution paused. Script source was shown for 'reveal-not-skipped.html'. Reloading page... -Script execution paused. Script execution resumed. Page reloaded. Showing script1 source... Script source was shown for 'script1.js'. Throwing exception... +Script execution paused. Script source was shown for 'reveal-not-skipped.html'. Running: testRevealAfterPrettyPrintWhenPaused Throwing exception... -Script execution paused. Showing script1 source... Script source was shown for 'script1.js'. Formatting...
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-2-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-2-expected.txt index 1bbd1f3f..3544367 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-2-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-2-expected.txt
@@ -7,8 +7,8 @@ Script execution paused. Breakpoint sidebar pane while paused in pretty printed -unformatted2.js:formatted:4 var c = 3; + unformatted2.js:formatted:4 var c = 3; Breakpoint sidebar pane while paused in raw - +No Breakpoints Script execution resumed.
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-3-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-3-expected.txt index 28d0f94..b8313f7 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-3-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/script-formatter-breakpoints-3-expected.txt
@@ -7,8 +7,8 @@ Script execution paused. Breakpoint sidebar pane while paused in pretty printed -unformatted3.js:formatted:4 var c = 3; + unformatted3.js:formatted:4 var c = 3; Breakpoint sidebar pane while paused in raw - +No Breakpoints Script execution resumed.
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/selected-call-frame-after-formatting-source.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/selected-call-frame-after-formatting-source.html index acdb318a..1f76ba0 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/selected-call-frame-after-formatting-source.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/selected-call-frame-after-formatting-source.html
@@ -44,7 +44,7 @@ function step4() { - InspectorTest.assertEquals("testFunction", InspectorTest.debuggerModel.selectedCallFrame().functionName); + InspectorTest.assertEquals("testFunction", WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame).functionName); sourceFrame._toggleFormatSource(step5); }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch-expected.txt index f202241..140b9dc 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch-expected.txt
@@ -1,9 +1,12 @@ Tests debugger does not fail when stopped while a panel other than scripts was opened. Both valid and invalid expressions are added to watch expressions. Bug 70718 -Script source was shown. -Set timer for test function. -Watch expressions updated. -'window.document' => 'document' -'windowa.document' => '<not available>' +x: <not available> +y.foo: <not available> +x: <not available> +y.foo: <not available> +x: <not available> +y.foo: <not available> +x: 4 +y.foo: <not available>
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch.html index b286431..0401924 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-panel-switch.html
@@ -5,66 +5,36 @@ <script src="../../../http/tests/inspector/network-test.js"></script> <script src="../../../http/tests/inspector/debugger-test.js"></script> <script> + function testFunction() { - var x = Math.sqrt(10); + var x = Math.sqrt(16); + debugger; return x; } -var test = function() +function test() { InspectorTest.setQuiet(true); InspectorTest.startDebuggerTest(step1); + var updateCount = 8; - var currentSourceFrame; - var watchExpressionsPane; - //callback per each watchExpression called twice: in constructor and when actual evaluation result is available - var updateCount = 4; + WebInspector.settings.createLocalSetting("watchExpressions", []).set(["x", "y.foo"]); function step1() { - watchExpressionsPane = WebInspector.panels.sources.sidebarPanes.watchExpressions; - watchExpressionsPane.revealView().then(() => { - watchExpressionsPane.addExpression("window.document"); - watchExpressionsPane.addExpression("windowa.document"); - var testName = InspectorTest.mainTarget.inspectedURL(); - testName = testName.substring(testName.lastIndexOf('/') + 1); - InspectorTest.showScriptSource(testName, didShowScriptSource); + watchExpressionsPane = self.runtime.sharedInstance(WebInspector.WatchExpressionsSidebarPane); + WebInspector.panels.sources._sidebarPaneStack.showView(WebInspector.panels.sources._watchSidebarPane).then(() => { + InspectorTest.addSniffer(WebInspector.WatchExpression.prototype, "_createWatchExpression", watchExpressionsUpdated, true); + InspectorTest.evaluateInPage("testFunction()"); }); } - function didShowScriptSource(sourceFrame) + function watchExpressionsUpdated(result, wasThrown) { - currentSourceFrame = sourceFrame; - InspectorTest.addResult("Script source was shown."); - InspectorTest.setBreakpoint(currentSourceFrame, 9, "", true); - InspectorTest.addSniffer(WebInspector.WatchExpression.prototype, "_createWatchExpression", watchExpressionsUpdated, true); - // Switch to another panel to test how watch expressions evaluation together with panel switching. - WebInspector.NetworkPanel.show(); - InspectorTest.runTestFunctionAndWaitUntilPaused(didPause); - } - - function didPause(callFrames) - { - } - - function watchExpressionsUpdated() - { - updateCount--; - if (updateCount) - return; - - InspectorTest.addResult("Watch expressions updated."); - - for (var i = 0; i < watchExpressionsPane._watchExpressions.length; i++) { - var watch = watchExpressionsPane._watchExpressions[i]; - var nameElement = watch._objectPresentationElement.querySelector(".name"); - var valueElement = watch._objectPresentationElement.querySelector(".value"); - InspectorTest.addResult("'" + nameElement.textContent + "'" + " => " + "'" + valueElement.textContent + "'"); - } - - watchExpressionsPane._deleteAllButtonClicked(); - InspectorTest.completeDebuggerTest(); + InspectorTest.addResult(this._element.deepTextContent()); + if (--updateCount === 0) + InspectorTest.completeDebuggerTest(); } }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-preserve-expansion.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-preserve-expansion.html index ffaf000..424444e 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-preserve-expansion.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-ui/watch-expressions-preserve-expansion.html
@@ -26,13 +26,16 @@ var test = function() { - var watchExpressionsPane = WebInspector.panels.sources.sidebarPanes.watchExpressions; - watchExpressionsPane.revealView(); - watchExpressionsPane.addExpression("globalObject"); - watchExpressionsPane.addExpression("windowAlias"); - watchExpressionsPane.addExpression("array"); - watchExpressionsPane.addExpression("func"); - InspectorTest.deprecatedRunAfterPendingDispatches(step2); + var watchExpressionsPane = self.runtime.sharedInstance(WebInspector.WatchExpressionsSidebarPane); + WebInspector.panels.sources._sidebarPaneStack.showView(WebInspector.panels.sources._watchSidebarPane).then(() => { + watchExpressionsPane.doUpdate(); + watchExpressionsPane._createWatchExpression("globalObject"); + watchExpressionsPane._createWatchExpression("windowAlias"); + watchExpressionsPane._createWatchExpression("array"); + watchExpressionsPane._createWatchExpression("func"); + watchExpressionsPane._saveExpressions(); + InspectorTest.deprecatedRunAfterPendingDispatches(step2); + }); function step2() { @@ -58,7 +61,7 @@ function dumpWatchExpressions() { - var pane = WebInspector.panels.sources.sidebarPanes.watchExpressions; + var pane = self.runtime.sharedInstance(WebInspector.WatchExpressionsSidebarPane); for (var i = 0; i < pane._watchExpressions.length; i++) { var watch = pane._watchExpressions[i]; @@ -105,7 +108,7 @@ function expandWatchExpression(path, callback) { - var pane = WebInspector.panels.sources.sidebarPanes.watchExpressions; + var pane = self.runtime.sharedInstance(WebInspector.WatchExpressionsSidebarPane); var expression = path.shift(); for (var i = 0; i < pane._watchExpressions.length; i++) { var watch = pane._watchExpressions[i];
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts-expected.txt index 9bd1633..9217d27f 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts-expected.txt
@@ -32,7 +32,8 @@ function callstackStatus() { - var statusElement = panel.sidebarPanes.callstack._statusMessageElement; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); + var statusElement = pane.contentElement; return statusElement ? statusElement.textContent : ""; } @@ -133,7 +134,8 @@ function callstackStatus() { - var statusElement = panel.sidebarPanes.callstack._statusMessageElement; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); + var statusElement = pane.contentElement; return statusElement ? statusElement.textContent : ""; }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts.html index 10dc3cc2..1d921ed 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debug-inlined-scripts.html
@@ -24,7 +24,8 @@ function callstackStatus() { - var statusElement = panel.sidebarPanes.callstack._statusMessageElement; + var pane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); + var statusElement = pane.contentElement; return statusElement ? statusElement.textContent : ""; }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-es6-harmony-scopes.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-es6-harmony-scopes.html index ffcbfb39..19ebd62 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-es6-harmony-scopes.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-es6-harmony-scopes.html
@@ -51,12 +51,8 @@ function onTestStarted() { - InspectorTest.runTestFunctionAndWaitUntilPaused(onDebuggerPaused); - } - - function onDebuggerPaused() - { InspectorTest.addSniffer(WebInspector.ScopeChainSidebarPane.prototype, "_sidebarPaneUpdatedForTest", onSidebarRendered, true); + InspectorTest.runTestFunctionAndWaitUntilPaused(() => {}); } function onSidebarRendered()
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-minified-variables-evalution.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-minified-variables-evalution.html index 4cc9cd2b..f14ceca 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-minified-variables-evalution.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-minified-variables-evalution.html
@@ -44,7 +44,7 @@ function testAtPosition(uiSourceCode, position) { - return WebInspector.SourceMapNamesResolver.resolveExpression(InspectorTest.debuggerModel.selectedCallFrame(), position.originText, uiSourceCode, position.line, position.startColumn, position.endColumn) + return WebInspector.SourceMapNamesResolver.resolveExpression(WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame), position.originText, uiSourceCode, position.line, position.startColumn, position.endColumn) .then(InspectorTest.evaluateOnCurrentCallFrame) .then(remoteObject => InspectorTest.addResult(remoteObject.description)); }
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-proto-property.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-proto-property.html index 5d26d13..ef6e98b 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-proto-property.html +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/debugger-proto-property.html
@@ -25,12 +25,8 @@ function step1() { - InspectorTest.runTestFunctionAndWaitUntilPaused(step2); - } - - function step2(callFrames) - { InspectorTest.addSniffer(WebInspector.ScopeChainSidebarPane.prototype, "_sidebarPaneUpdatedForTest", onSidebarRendered, true); + InspectorTest.runTestFunctionAndWaitUntilPaused(() => {}); } function onSidebarRendered()
diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger/js-with-inline-stylesheets-expected.txt b/third_party/WebKit/LayoutTests/inspector/sources/debugger/js-with-inline-stylesheets-expected.txt index 0ff6466..9f14a368 100644 --- a/third_party/WebKit/LayoutTests/inspector/sources/debugger/js-with-inline-stylesheets-expected.txt +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger/js-with-inline-stylesheets-expected.txt
@@ -9,8 +9,8 @@ 0) testFunction (js-with-inline-stylesheets.html:10) Breakpoint sidebar pane -js-with-inline-stylesheets.html:10 var x = Math.sqrt(10); + js-with-inline-stylesheets.html:10 var x = Math.sqrt(10); Breakpoint sidebar pane - +No Breakpoints Script execution resumed.
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html b/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html new file mode 100644 index 0000000..e9a53ea --- /dev/null +++ b/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html
@@ -0,0 +1,34 @@ +<!DOCTYPE html> +<title>Test behaviour of autoplay muted videos with regards to visibility</title> +<script src="../resources/testharness.js"></script> +<script src="../resources/testharnessreport.js"></script> +<script src="media-file.js"></script> +<body> +<script> + window.internals.settings.setMediaPlaybackRequiresUserGesture(true); + window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + + async_test(function(t) { + // Create a video off screen. + { + var video = document.createElement('video'); + video.id = 'offscreen'; + video.src = findMediaFile('video', 'content/test'); + video.muted = true; + video.autoplay = true; + video.loop = true; + video.style.position = 'absolute'; + video.style.top = '-10000px'; + document.body.appendChild(video); + } + + var offscreen = document.querySelector('#offscreen'); + + offscreen.addEventListener('canplay', t.step_func_done(function() { + // The offscreen videos shouldn't play. + assert_true(offscreen.paused); + assert_greater_than_equal(offscreen.readyState, HTMLMediaElement.HAVE_ENOUGH_DATA); + })); + }, "Test that muted video with an autoplay attribute does not leak if it's never visible"); +</script> +</body>
diff --git a/third_party/WebKit/LayoutTests/media/video-autoplay-experiment-modes-expected.txt b/third_party/WebKit/LayoutTests/media/video-autoplay-experiment-modes-expected.txt index 1b8a007..1f71dc7 100644 --- a/third_party/WebKit/LayoutTests/media/video-autoplay-experiment-modes-expected.txt +++ b/third_party/WebKit/LayoutTests/media/video-autoplay-experiment-modes-expected.txt
@@ -2,6 +2,8 @@ CONSOLE ERROR: line 71: Uncaught (in promise) NotAllowedError: play() can only be initiated by a user gesture. CONSOLE WARNING: line 71: Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture. CONSOLE ERROR: line 71: Uncaught (in promise) NotAllowedError: play() can only be initiated by a user gesture. +CONSOLE WARNING: IntersectionObserver.observe(target): target element is not a descendant of root. +CONSOLE WARNING: IntersectionObserver.observe(target): target element is not a descendant of root. CONSOLE WARNING: line 71: Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture. CONSOLE ERROR: line 71: Uncaught (in promise) NotAllowedError: play() can only be initiated by a user gesture. CONSOLE WARNING: line 71: Failed to execute 'play' on 'HTMLMediaElement': API can only be initiated by a user gesture.
diff --git a/third_party/WebKit/LayoutTests/platform/android/virtual/gpu/fast/canvas/fillrect_gradient-expected.png b/third_party/WebKit/LayoutTests/platform/android/virtual/gpu/fast/canvas/fillrect_gradient-expected.png new file mode 100644 index 0000000..ff1a51c --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/android/virtual/gpu/fast/canvas/fillrect_gradient-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux-precise/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux-precise/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png new file mode 100644 index 0000000..dab1f264 --- /dev/null +++ b/third_party/WebKit/LayoutTests/platform/linux-precise/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png index d743608..b5daa85 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu/fast/canvas/fillrect_gradient-expected.png b/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu/fast/canvas/fillrect_gradient-expected.png index ff1a51c..0e3fadbb 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu/fast/canvas/fillrect_gradient-expected.png +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu/fast/canvas/fillrect_gradient-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png index 7c40cb7..dfe6a5a 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/fillrect_gradient-expected.png b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/fillrect_gradient-expected.png index 516f9e9..85ad1689 100644 --- a/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/fillrect_gradient-expected.png +++ b/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu/fast/canvas/fillrect_gradient-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png index 8d89e59a..47878b5a 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/fast/images/color-profile-reflection-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/fillrect_gradient-expected.png b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/fillrect_gradient-expected.png index d7a0858c..3e2303a5 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/fillrect_gradient-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/gpu/fast/canvas/fillrect_gradient-expected.png Binary files differ
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp index 512fa57..d4d32c6 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
@@ -310,45 +310,54 @@ ASSERT(isMainThread()); MutexLocker locker(m_mutex); // For m_cancelled + m_queueTailPosition. - // Get as much data from the ResourceBuffer as we can. - const char* data = 0; - Vector<const char*> chunks; - Vector<size_t> chunkLengths; - size_t dataLength = 0; - - if (!m_cancelled) { - while (size_t length = m_resourceBuffer->getSomeData(data, m_queueTailPosition)) { - // FIXME: Here we can limit based on the total length, if it turns - // out that we don't want to give all the data we have (memory - // vs. speed). - chunks.append(data); - chunkLengths.append(length); - dataLength += length; - m_queueTailPosition += length; - } - } - if (lengthOfBOM > 0) { ASSERT(!m_lengthOfBOM); // There should be only one BOM. m_lengthOfBOM = lengthOfBOM; } - // Copy the data chunks into a new buffer, since we're going to give the - // data to a background thread. - if (dataLength > lengthOfBOM) { - dataLength -= lengthOfBOM; - uint8_t* copiedData = new uint8_t[dataLength]; - size_t offset = 0; - for (size_t i = 0; i < chunks.size(); ++i) { - memcpy(copiedData + offset, chunks[i] + lengthOfBOM, chunkLengths[i] - lengthOfBOM); - offset += chunkLengths[i] - lengthOfBOM; - // BOM is only in the first chunk - lengthOfBOM = 0; - } - m_dataQueue.produce(copiedData, dataLength); + if (m_cancelled) { + m_dataQueue.finish(); + return; } - if (m_finished || m_cancelled) + // Get as much data from the ResourceBuffer as we can. + const char* data = nullptr; + Vector<const char*> chunks; + Vector<size_t> chunkLengths; + size_t bufferLength = 0; + while (size_t length = m_resourceBuffer->getSomeData(data, m_queueTailPosition)) { + // FIXME: Here we can limit based on the total length, if it turns + // out that we don't want to give all the data we have (memory + // vs. speed). + chunks.append(data); + chunkLengths.append(length); + bufferLength += length; + m_queueTailPosition += length; + } + + // Copy the data chunks into a new buffer, since we're going to give the + // data to a background thread. + if (bufferLength > lengthOfBOM) { + size_t totalLength = bufferLength - lengthOfBOM; + uint8_t* copiedData = new uint8_t[totalLength]; + size_t offset = 0; + size_t offsetInChunk = lengthOfBOM; + for (size_t i = 0; i < chunks.size(); ++i) { + if (offsetInChunk >= chunkLengths[i]) { + offsetInChunk -= chunkLengths[i]; + continue; + } + + size_t dataLength = chunkLengths[i] - offsetInChunk; + memcpy(copiedData + offset, chunks[i] + offsetInChunk, dataLength); + offset += dataLength; + // BOM is in the beginning of the buffer. + offsetInChunk = 0; + } + m_dataQueue.produce(copiedData, totalLength); + } + + if (m_finished) m_dataQueue.finish(); } @@ -498,11 +507,15 @@ // here, because it might contain incomplete UTF-8 characters. Also note // that have at least s_smallScriptThreshold worth of data, which is more // than enough for detecting a BOM. - const char* data = 0; - size_t length = resource->resourceBuffer()->getSomeData(data, static_cast<size_t>(0)); + constexpr size_t maximumLengthOfBOM = 4; + char maybeBOM[maximumLengthOfBOM] = {}; + if (!resource->resourceBuffer()->getPartAsBytes(maybeBOM, static_cast<size_t>(0), maximumLengthOfBOM)) { + NOTREACHED(); + return; + } std::unique_ptr<TextResourceDecoder> decoder(TextResourceDecoder::create("application/javascript", resource->encoding())); - lengthOfBOM = decoder->checkForBOM(data, length); + lengthOfBOM = decoder->checkForBOM(maybeBOM, maximumLengthOfBOM); // Maybe the encoding changed because we saw the BOM; get the encoding // from the decoder.
diff --git a/third_party/WebKit/Source/bindings/scripts/code_generator_v8.py b/third_party/WebKit/Source/bindings/scripts/code_generator_v8.py index 5104eeb6..49d6c05b 100644 --- a/third_party/WebKit/Source/bindings/scripts/code_generator_v8.py +++ b/third_party/WebKit/Source/bindings/scripts/code_generator_v8.py
@@ -84,7 +84,9 @@ import v8_types import v8_union from v8_utilities import capitalize, cpp_name, for_origin_trial_feature, unique_by -from utilities import idl_filename_to_component, is_valid_component_dependency, is_testing_target, shorten_union_name +from utilities import ( + idl_filename_to_component, is_valid_component_dependency, is_testing_target, + shorten_union_name, format_blink_cpp_source_code) def normalize_and_sort_includes(include_paths): @@ -427,8 +429,9 @@ 'blink_capitalize': capitalize, 'exposed': exposed_if, 'for_origin_trial_feature': for_origin_trial_feature, - 'secure_context': secure_context_if, + 'format_blink_cpp_source_code': format_blink_cpp_source_code, 'runtime_enabled': runtime_enabled_if, + 'secure_context': secure_context_if, 'unique_by': unique_by, }) jinja_env.filters.update(attribute_filters())
diff --git a/third_party/WebKit/Source/bindings/scripts/utilities.py b/third_party/WebKit/Source/bindings/scripts/utilities.py index 92e808506..2d81243 100644 --- a/third_party/WebKit/Source/bindings/scripts/utilities.py +++ b/third_party/WebKit/Source/bindings/scripts/utilities.py
@@ -405,3 +405,58 @@ if alias: return alias return name + + +def format_blink_cpp_source_code(text): + """Formats C++ source code. + + Supported modifications are: + - Reduces successive empty lines into a single empty line. + - Removes empty lines just after an open brace or before closing brace. + This rule does not apply to namespaces. + + Designed to be used as a filter function for Jinja2. + + Args: + text: A str of C++ source code. + + Returns: + A formatted str of the source code. + """ + re_first_brace = re.compile(r'(?P<first>[{}])') + re_last_brace = re.compile(r'.*(?P<last>[{}]).*?$') + was_open_brace = True # Trick to remove the empty lines at the beginning. + was_empty_line = False + output = [] + for line in text.split('\n'): + # Skip empty lines. + if not line: # empty line + was_empty_line = True + continue + + # Emit a single empty line if needed. + if was_empty_line: + was_empty_line = False + match = re_first_brace.search(line) + if was_open_brace: + # No empty line just after an open brace. + pass + elif match and match.group('first') == '}' and 'namespace' not in line: + # No empty line just before a closing brace. + pass + else: + # Preserve a single empty line. + output.append('') + + # Emit the line itself. + output.append(line) + + # Remember an open brace. + match = re_last_brace.search(line) + was_open_brace = (match and match.group('last') == '{' and 'namespace' not in line) + + # Let |'\n'.join| emit the last newline. + if output: + output.append('') + + return '\n'.join(output)
diff --git a/third_party/WebKit/Source/bindings/templates/callback_interface.cpp b/third_party/WebKit/Source/bindings/templates/callback_interface.cpp index e3bb988..cf055a9 100644 --- a/third_party/WebKit/Source/bindings/templates/callback_interface.cpp +++ b/third_party/WebKit/Source/bindings/templates/callback_interface.cpp
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #include "{{v8_class}}.h" @@ -55,7 +57,7 @@ {% if method.arguments %} v8::Local<v8::Value> argv[] = { {{method.arguments | join(', ', 'handle')}} }; {% else %} - {# Empty array initializers are illegal, and don't compile in MSVC. #} + {# Empty array initializers are illegal, and don\'t compile in MSVC. #} v8::Local<v8::Value> *argv = 0; {% endif %} @@ -72,3 +74,5 @@ {% endfor %} } // namespace blink + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/callback_interface.h b/third_party/WebKit/Source/bindings/templates/callback_interface.h index d665579..b94d2e920 100644 --- a/third_party/WebKit/Source/bindings/templates/callback_interface.h +++ b/third_party/WebKit/Source/bindings/templates/callback_interface.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{v8_class}}_h #define {{v8_class}}_h @@ -32,3 +34,5 @@ } #endif // {{v8_class}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/dictionary_impl.cpp b/third_party/WebKit/Source/bindings/templates/dictionary_impl.cpp index 7f73cd5f..bec58df 100644 --- a/third_party/WebKit/Source/bindings/templates/dictionary_impl.cpp +++ b/third_party/WebKit/Source/bindings/templates/dictionary_impl.cpp
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #include "{{cpp_class}}.h" @@ -30,3 +32,5 @@ } } // namespace blink + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/dictionary_impl.h b/third_party/WebKit/Source/bindings/templates/dictionary_impl.h index 78f54dc9..472f6e7 100644 --- a/third_party/WebKit/Source/bindings/templates/dictionary_impl.h +++ b/third_party/WebKit/Source/bindings/templates/dictionary_impl.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{cpp_class}}_h #define {{cpp_class}}_h @@ -8,7 +10,7 @@ namespace blink { -{# FIXME: Add "final" if this class doesn't have subclasses #} +{# FIXME: Add "final" if this class doesn\'t have subclasses #} class {{exported}}{{cpp_class}}{% if parent_cpp_class %} : public {{parent_cpp_class}}{% endif %} { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public: @@ -38,3 +40,5 @@ } // namespace blink #endif // {{cpp_class}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/dictionary_v8.cpp b/third_party/WebKit/Source/bindings/templates/dictionary_v8.cpp index 8211b90..8c67c67 100644 --- a/third_party/WebKit/Source/bindings/templates/dictionary_v8.cpp +++ b/third_party/WebKit/Source/bindings/templates/dictionary_v8.cpp
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% from 'utilities.cpp' import declare_enum_validation_variable %} {% include 'copyright_block.txt' %} #include "{{v8_original_class}}.h" @@ -136,3 +138,5 @@ } } // namespace blink + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/dictionary_v8.h b/third_party/WebKit/Source/bindings/templates/dictionary_v8.h index 225aef2..8de11ff 100644 --- a/third_party/WebKit/Source/bindings/templates/dictionary_v8.h +++ b/third_party/WebKit/Source/bindings/templates/dictionary_v8.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{v8_original_class}}_h #define {{v8_original_class}}_h @@ -36,3 +38,5 @@ } // namespace blink #endif // {{v8_original_class}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/interface.h b/third_party/WebKit/Source/bindings/templates/interface.h index 5e85103..4e0d45e 100644 --- a/third_party/WebKit/Source/bindings/templates/interface.h +++ b/third_party/WebKit/Source/bindings/templates/interface.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{v8_class}}_h #define {{v8_class}}_h @@ -193,3 +195,5 @@ } // namespace blink #endif // {{v8_class}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/interface_base.cpp b/third_party/WebKit/Source/bindings/templates/interface_base.cpp index e4fe0cd..f0356cdf 100644 --- a/third_party/WebKit/Source/bindings/templates/interface_base.cpp +++ b/third_party/WebKit/Source/bindings/templates/interface_base.cpp
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #include "{{v8_class_or_partial}}.h" @@ -28,15 +30,23 @@ #if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG) #pragma clang diagnostic pop #endif +{% if not is_typed_array_type %} // This static member must be declared by DEFINE_WRAPPERTYPEINFO in {{cpp_class}}.h. // For details, see the comment of DEFINE_WRAPPERTYPEINFO in // bindings/core/v8/ScriptWrappable.h. -{% if not is_typed_array_type %} const WrapperTypeInfo& {{cpp_class}}::s_wrapperTypeInfo = {{v8_class}}::wrapperTypeInfo; {% endif %} +{% if not active_scriptwrappable %} +static_assert( + !std::is_base_of<ActiveScriptWrappable, {{cpp_class}}>::value, + "{{cpp_class}} inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); {% endif %} + +{% endif %}{# not is_partial #} {% if not is_array_buffer_or_view %} namespace {{cpp_class_or_partial}}V8Internal { {% if has_partial_interface %} @@ -425,3 +435,5 @@ {% endfor %} {% block partial_interface %}{% endblock %} } // namespace blink + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/partial_interface.h b/third_party/WebKit/Source/bindings/templates/partial_interface.h index 420328e0..300ef28d 100644 --- a/third_party/WebKit/Source/bindings/templates/partial_interface.h +++ b/third_party/WebKit/Source/bindings/templates/partial_interface.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{v8_class_or_partial}}_h #define {{v8_class_or_partial}}_h @@ -39,3 +41,5 @@ }; } #endif // {{v8_class_or_partial}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/union_container.cpp b/third_party/WebKit/Source/bindings/templates/union_container.cpp index 76475be..cb757d8 100644 --- a/third_party/WebKit/Source/bindings/templates/union_container.cpp +++ b/third_party/WebKit/Source/bindings/templates/union_container.cpp
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% from 'utilities.cpp' import declare_enum_validation_variable %} {% include 'copyright_block.txt' %} #include "{{this_include_header_name}}.h" @@ -97,7 +99,7 @@ {% endif %} {# 9., 10. ArrayBufferView #} - {# FIXME: Individual typed arrays (e.g. Uint8Array) aren't supported yet. #} + {# FIXME: Individual typed arrays (e.g. Uint8Array) aren\'t supported yet. #} {% if array_buffer_view_type %} {{assign_and_return_if_hasinstance(array_buffer_view_type) | indent}} @@ -210,3 +212,5 @@ } } // namespace blink + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/templates/union_container.h b/third_party/WebKit/Source/bindings/templates/union_container.h index 773c7ca7..5ad7911 100644 --- a/third_party/WebKit/Source/bindings/templates/union_container.h +++ b/third_party/WebKit/Source/bindings/templates/union_container.h
@@ -1,3 +1,5 @@ +{% filter format_blink_cpp_source_code %} + {% include 'copyright_block.txt' %} #ifndef {{cpp_class}}_h #define {{cpp_class}}_h @@ -73,3 +75,5 @@ WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::{{cpp_class}}); #endif // {{cpp_class}}_h + +{% endfilter %}{# format_blink_cpp_source_code #}
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.cpp b/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.cpp index c760904..50bd527 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.cpp
@@ -111,7 +111,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const BooleanOrStringOrUnrestrictedDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.h b/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.h index 554827e..8d378fe 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/BooleanOrStringOrUnrestrictedDouble.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT BooleanOrStringOrUnrestrictedDouble final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.cpp b/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.cpp index ef48b5b..c78fd1d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.cpp
@@ -86,7 +86,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const DoubleOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.h b/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.h index 5412c36f..38da41d0 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/DoubleOrString.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT DoubleOrString final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.cpp index 54664fd..b7fd153 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.cpp
@@ -107,7 +107,6 @@ impl.setLong(cppValue); return; } - } v8::Local<v8::Value> toV8(const LongOrTestDictionary& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.h b/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.h index d645529f..6ec9eda 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/LongOrTestDictionary.h
@@ -16,7 +16,6 @@ namespace blink { - class CORE_EXPORT LongOrTestDictionary final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/StringOrArrayBufferOrArrayBufferView.cpp b/third_party/WebKit/Source/bindings/tests/results/core/StringOrArrayBufferOrArrayBufferView.cpp index ae47a7d..a5c3466 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/StringOrArrayBufferOrArrayBufferView.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/StringOrArrayBufferOrArrayBufferView.cpp
@@ -115,7 +115,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const StringOrArrayBufferOrArrayBufferView& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.cpp b/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.cpp index f18d89f..4a57fb2 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.cpp
@@ -86,7 +86,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const StringOrDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.h b/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.h index 130ab13..f931169b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/StringOrDouble.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT StringOrDouble final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.cpp b/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.cpp index 45ac157..87f421e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.cpp
@@ -86,7 +86,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const StringOrStringSequence& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.h b/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.h index f9a7298..65cd05b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/StringOrStringSequence.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT StringOrStringSequence final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionaryDerivedImplementedAs.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionaryDerivedImplementedAs.cpp index ff8ded0a4..03985c8 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestDictionaryDerivedImplementedAs.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestDictionaryDerivedImplementedAs.cpp
@@ -6,7 +6,6 @@ #include "TestDictionaryDerivedImplementedAs.h" - namespace blink { TestDictionaryDerivedImplementedAs::TestDictionaryDerivedImplementedAs()
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.cpp index 71948d7..4d7bd8a 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.cpp
@@ -105,7 +105,6 @@ impl.setTestEnum(cppValue); return; } - } v8::Local<v8::Value> toV8(const TestEnumOrDouble& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.h b/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.h index 0f2133e..bfe9e3d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestEnumOrDouble.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT TestEnumOrDouble final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceEventInit.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceEventInit.cpp index 16376de..ede0062 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceEventInit.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceEventInit.cpp
@@ -6,7 +6,6 @@ #include "TestInterfaceEventInit.h" - namespace blink { TestInterfaceEventInit::TestInterfaceEventInit()
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceGarbageCollectedOrString.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceGarbageCollectedOrString.cpp index cacb428b..69339f6 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceGarbageCollectedOrString.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceGarbageCollectedOrString.cpp
@@ -86,7 +86,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const TestInterfaceGarbageCollectedOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceOrLong.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceOrLong.cpp index f1e4042..2871bae 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceOrLong.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestInterfaceOrLong.cpp
@@ -99,7 +99,6 @@ impl.setLong(cppValue); return; } - } v8::Local<v8::Value> toV8(const TestInterfaceOrLong& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/TestPermissiveDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/TestPermissiveDictionary.cpp index 6db0e4c..806d137 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/TestPermissiveDictionary.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/TestPermissiveDictionary.cpp
@@ -6,7 +6,6 @@ #include "TestPermissiveDictionary.h" - namespace blink { TestPermissiveDictionary::TestPermissiveDictionary()
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.cpp b/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.cpp index fa4a24d..1547595 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.cpp
@@ -86,7 +86,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const UnrestrictedDoubleOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.h b/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.h index d12b9b0..b2f2d5c6 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/UnrestrictedDoubleOrString.h
@@ -15,7 +15,6 @@ namespace blink { - class CORE_EXPORT UnrestrictedDoubleOrString final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp index 16d78fc..f955992 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBuffer.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestArrayBuffer::s_wrapperTypeInfo = V8ArrayBuffer::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestArrayBuffer>::value, + "TestArrayBuffer inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + TestArrayBuffer* V8ArrayBuffer::toImpl(v8::Local<v8::Object> object) { ASSERT(object->IsArrayBuffer());
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp index 448e292..f16316d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8ArrayBufferView.cpp
@@ -44,6 +44,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestArrayBufferView::s_wrapperTypeInfo = V8ArrayBufferView::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestArrayBufferView>::value, + "TestArrayBufferView inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + TestArrayBufferView* V8ArrayBufferView::toImpl(v8::Local<v8::Object> object) { ASSERT(object->IsArrayBufferView());
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp index 3d93ffe..98a330e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8DataView.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestDataView::s_wrapperTypeInfo = V8DataView::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestDataView>::value, + "TestDataView inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + TestDataView* V8DataView::toImpl(v8::Local<v8::Object> object) { ASSERT(object->IsDataView());
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp index 2ecebf18..e298d6fb 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8SVGTestInterface.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& SVGTestInterface::s_wrapperTypeInfo = V8SVGTestInterface::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, SVGTestInterface>::value, + "SVGTestInterface inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace SVGTestInterfaceV8Internal { static void typeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -90,7 +96,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8SVGTestInterfaceTemplate); } - bool V8SVGTestInterface::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h index 54c99b7..e3581d1 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestCallbackInterface.h
@@ -42,6 +42,5 @@ ScopedPersistent<v8::Function> m_callback; RefPtr<ScriptState> m_scriptState; }; - } #endif // V8TestCallbackInterface_h
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp index 25285e04..47a54c9e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionary.cpp
@@ -542,7 +542,6 @@ return; impl.setUnrestrictedDoubleMember(unrestrictedDoubleMember); } - } v8::Local<v8::Value> TestDictionary::toV8Impl(v8::Local<v8::Object> creationContext, v8::Isolate* isolate) const
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionaryDerived.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionaryDerived.cpp index ac27b33b..8d19e85a 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionaryDerived.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestDictionaryDerived.cpp
@@ -88,7 +88,6 @@ return; impl.setStringOrDoubleSequenceMember(stringOrDoubleSequenceMember); } - } v8::Local<v8::Value> TestDictionaryDerivedImplementedAs::toV8Impl(v8::Local<v8::Object> creationContext, v8::Isolate* isolate) const
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp index 934fd9a..2413b7d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestException.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestException::s_wrapperTypeInfo = V8TestException::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestException>::value, + "TestException inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestExceptionV8Internal { static void readonlyUnsignedShortAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -141,7 +147,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestExceptionTemplate); } - bool V8TestException::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp index fd0f00d..58382cd9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexed.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestIntegerIndexed::s_wrapperTypeInfo = V8TestIntegerIndexed::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestIntegerIndexed>::value, + "TestIntegerIndexed inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestIntegerIndexedV8Internal { static void lengthAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -175,7 +181,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestIntegerIndexedTemplate); } - bool V8TestIntegerIndexed::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp index 6d2b067..e68cb2c 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedGlobal.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestIntegerIndexedGlobal::s_wrapperTypeInfo = V8TestIntegerIndexedGlobal::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestIntegerIndexedGlobal>::value, + "TestIntegerIndexedGlobal inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestIntegerIndexedGlobalV8Internal { static void lengthAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -186,7 +192,6 @@ return namedPropertiesObjectFunctionTemplate; } - bool V8TestIntegerIndexedGlobal::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp index 28399b2..f5bbb22 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestIntegerIndexedPrimaryGlobal.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestIntegerIndexedPrimaryGlobal::s_wrapperTypeInfo = V8TestIntegerIndexedPrimaryGlobal::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestIntegerIndexedPrimaryGlobal>::value, + "TestIntegerIndexedPrimaryGlobal inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestIntegerIndexedPrimaryGlobalV8Internal { static void lengthAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -186,7 +192,6 @@ return namedPropertiesObjectFunctionTemplate; } - bool V8TestIntegerIndexedPrimaryGlobal::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp index e21e857..8e099c6 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface.cpp
@@ -2735,7 +2735,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), V8TestInterface::installV8TestInterfaceTemplateFunction); } - bool V8TestInterface::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value); @@ -3018,7 +3017,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "stringAttribute", "TestInterfaceImplementation", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestInterfaceImplementation", "stringAttribute", holder); if (v8Value.IsEmpty())
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp index ec234407..be3ae0b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface2.cpp
@@ -641,7 +641,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), V8TestInterface2::installV8TestInterface2TemplateFunction); } - bool V8TestInterface2::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp index 80e82356..f2c61c2e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterface3.cpp
@@ -37,6 +37,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterface3::s_wrapperTypeInfo = V8TestInterface3::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterface3>::value, + "TestInterface3 inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterface3V8Internal { static void readonlyStringifierAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -299,7 +305,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterface3Template); } - bool V8TestInterface3::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp index 71883ba..ced1365 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCheckSecurity.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceCheckSecurity::s_wrapperTypeInfo = V8TestInterfaceCheckSecurity::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceCheckSecurity>::value, + "TestInterfaceCheckSecurity inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceCheckSecurityV8Internal { static void readonlyLongAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -439,7 +445,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceCheckSecurityTemplate); } - bool V8TestInterfaceCheckSecurity::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp index e51fc20..54af84f5 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor.cpp
@@ -37,6 +37,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceConstructor::s_wrapperTypeInfo = V8TestInterfaceConstructor::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceConstructor>::value, + "TestInterfaceConstructor inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceConstructorV8Internal { static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -387,7 +393,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructorTemplate); } - bool V8TestInterfaceConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp index 9d1582a..3e94bae 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor2.cpp
@@ -34,6 +34,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceConstructor2::s_wrapperTypeInfo = V8TestInterfaceConstructor2::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceConstructor2>::value, + "TestInterfaceConstructor2 inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceConstructor2V8Internal { static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -239,7 +245,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor2Template); } - bool V8TestInterfaceConstructor2::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp index 966f956..c1e01d9 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor3.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceConstructor3::s_wrapperTypeInfo = V8TestInterfaceConstructor3::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceConstructor3>::value, + "TestInterfaceConstructor3 inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceConstructor3V8Internal { static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -89,7 +95,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor3Template); } - bool V8TestInterfaceConstructor3::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp index 3432866..cc4d0409 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceConstructor4.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceConstructor4::s_wrapperTypeInfo = V8TestInterfaceConstructor4::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceConstructor4>::value, + "TestInterfaceConstructor4 inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceConstructor4V8Internal { static void constructor1(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -126,7 +132,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceConstructor4Template); } - bool V8TestInterfaceConstructor4::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp index 7bf4e33..72b126e 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceCustomConstructor.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceCustomConstructor::s_wrapperTypeInfo = V8TestInterfaceCustomConstructor::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceCustomConstructor>::value, + "TestInterfaceCustomConstructor inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceCustomConstructorV8Internal { } // namespace TestInterfaceCustomConstructorV8Internal @@ -71,7 +77,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceCustomConstructorTemplate); } - bool V8TestInterfaceCustomConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp index fae5529..4303ad7 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceDocument.cpp
@@ -37,6 +37,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceDocument::s_wrapperTypeInfo = V8TestInterfaceDocument::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceDocument>::value, + "TestInterfaceDocument inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceDocumentV8Internal { static void locationAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -95,7 +101,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceDocumentTemplate); } - bool V8TestInterfaceDocument::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp index b1f5cee..444e244 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEmpty.cpp
@@ -31,6 +31,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceEmpty::s_wrapperTypeInfo = V8TestInterfaceEmpty::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceEmpty>::value, + "TestInterfaceEmpty inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceEmptyV8Internal { } // namespace TestInterfaceEmptyV8Internal @@ -53,7 +59,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEmptyTemplate); } - bool V8TestInterfaceEmpty::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInit.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInit.cpp index 8494ddde..9020aec 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInit.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInit.cpp
@@ -44,7 +44,6 @@ return; impl.setStringMember(stringMember); } - } v8::Local<v8::Value> TestInterfaceEventInit::toV8Impl(v8::Local<v8::Object> creationContext, v8::Isolate* isolate) const
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp index 1fa87b9..23adc82 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventInitConstructor.cpp
@@ -33,6 +33,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceEventInitConstructor::s_wrapperTypeInfo = V8TestInterfaceEventInitConstructor::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceEventInitConstructor>::value, + "TestInterfaceEventInitConstructor inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceEventInitConstructorV8Internal { static void readonlyStringAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -131,7 +137,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEventInitConstructorTemplate); } - bool V8TestInterfaceEventInitConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp index 8407df8..3693e8a 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceEventTarget.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceEventTarget::s_wrapperTypeInfo = V8TestInterfaceEventTarget::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceEventTarget>::value, + "TestInterfaceEventTarget inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceEventTargetV8Internal { } // namespace TestInterfaceEventTargetV8Internal @@ -100,7 +106,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceEventTargetTemplate); } - bool V8TestInterfaceEventTarget::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp index 1a4bff5e..c467294b 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceGarbageCollected.cpp
@@ -36,6 +36,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceGarbageCollected::s_wrapperTypeInfo = V8TestInterfaceGarbageCollected::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceGarbageCollected>::value, + "TestInterfaceGarbageCollected inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceGarbageCollectedV8Internal { static void attr1AttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -379,7 +385,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceGarbageCollectedTemplate); } - bool V8TestInterfaceGarbageCollected::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp index 6db34446..c4a1950 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor.cpp
@@ -172,7 +172,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNamedConstructorTemplate); } - bool V8TestInterfaceNamedConstructor::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp index c3af817..f60ff7ef 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNamedConstructor2.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceNamedConstructor2::s_wrapperTypeInfo = V8TestInterfaceNamedConstructor2::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceNamedConstructor2>::value, + "TestInterfaceNamedConstructor2 inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceNamedConstructor2V8Internal { } // namespace TestInterfaceNamedConstructor2V8Internal @@ -109,7 +115,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNamedConstructor2Template); } - bool V8TestInterfaceNamedConstructor2::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp index 17120c0f..cb114a5 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceNode.cpp
@@ -36,6 +36,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceNode::s_wrapperTypeInfo = V8TestInterfaceNode::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceNode>::value, + "TestInterfaceNode inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceNodeV8Internal { static void nodeNameAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -341,7 +347,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceNodeTemplate); } - bool V8TestInterfaceNode::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp index d8e9fcb..99c55391 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceOriginTrialEnabled.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceOriginTrialEnabled::s_wrapperTypeInfo = V8TestInterfaceOriginTrialEnabled::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceOriginTrialEnabled>::value, + "TestInterfaceOriginTrialEnabled inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceOriginTrialEnabledV8Internal { static void doubleAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -264,7 +270,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceOriginTrialEnabledTemplate); } - bool V8TestInterfaceOriginTrialEnabled::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp index 358381f2..f487b47 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestInterfaceSecureContext.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestInterfaceSecureContext::s_wrapperTypeInfo = V8TestInterfaceSecureContext::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestInterfaceSecureContext>::value, + "TestInterfaceSecureContext inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestInterfaceSecureContextV8Internal { static void secureContextAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -312,7 +318,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterfaceSecureContextTemplate); } - bool V8TestInterfaceSecureContext::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp index a5f1d6f..cc56c70c 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestNode.cpp
@@ -32,6 +32,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestNode::s_wrapperTypeInfo = V8TestNode::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestNode>::value, + "TestNode inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestNodeV8Internal { static void hrefAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -203,7 +209,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestNodeTemplate); } - bool V8TestNode::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp index bb843143..aa92879 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestObject.cpp
@@ -99,6 +99,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestObject::s_wrapperTypeInfo = V8TestObject::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestObject>::value, + "TestObject inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestObjectV8Internal { static void DEPRECATED_CONSTANTConstantGetterCallback(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>& info) @@ -11793,7 +11799,6 @@ V8DOMConfiguration::installMethod(isolate, world, instanceTemplate, prototypeTemplate, interfaceTemplate, signature, partiallyRuntimeEnabledOverloadedVoidMethodMethodConfiguration); } - void V8TestObject::installFeatureName(ScriptState* scriptState, v8::Local<v8::Object> instance) { v8::Local<v8::FunctionTemplate> interfaceTemplate = V8TestObject::wrapperTypeInfo.domTemplate(scriptState->isolate(), scriptState->world()); @@ -11873,7 +11878,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestObjectTemplate); } - bool V8TestObject::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value); @@ -12147,7 +12151,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "readonlyShortAttribute", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "readonlyShortAttribute", holder); if (v8Value.IsEmpty()) @@ -12178,7 +12181,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "shortAttribute", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "shortAttribute", holder); if (v8Value.IsEmpty()) @@ -12231,7 +12233,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "stringAttribute", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "stringAttribute", holder); if (v8Value.IsEmpty()) @@ -12284,7 +12285,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "nodeAttribute", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "nodeAttribute", holder); if (v8Value.IsEmpty()) @@ -12335,7 +12335,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "attributeForPrivateScriptOnly", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "attributeForPrivateScriptOnly", holder); if (v8Value.IsEmpty()) @@ -12388,7 +12387,6 @@ if (holder.IsEmpty()) return false; - ExceptionState exceptionState(ExceptionState::GetterContext, "enumForPrivateScript", "TestObject", scriptState->context()->Global(), scriptState->isolate()); v8::Local<v8::Value> v8Value = PrivateScriptRunner::runDOMAttributeGetter(scriptState, scriptStateInUserScript, "TestObject", "enumForPrivateScript", holder); if (v8Value.IsEmpty())
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestPermissiveDictionary.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestPermissiveDictionary.cpp index e48c5fc6..a92c3a2 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestPermissiveDictionary.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestPermissiveDictionary.cpp
@@ -39,7 +39,6 @@ return; impl.setBooleanMember(booleanMember); } - } v8::Local<v8::Value> TestPermissiveDictionary::toV8Impl(v8::Local<v8::Object> creationContext, v8::Isolate* isolate) const
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp index 95cea91..454cfdf0 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperations.cpp
@@ -38,6 +38,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestSpecialOperations::s_wrapperTypeInfo = V8TestSpecialOperations::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestSpecialOperations>::value, + "TestSpecialOperations inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestSpecialOperationsV8Internal { static void namedItemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -178,7 +184,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestSpecialOperationsTemplate); } - bool V8TestSpecialOperations::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp index dd21c664..c27a718 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestSpecialOperationsNotEnumerable.cpp
@@ -31,6 +31,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestSpecialOperationsNotEnumerable::s_wrapperTypeInfo = V8TestSpecialOperationsNotEnumerable::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestSpecialOperationsNotEnumerable>::value, + "TestSpecialOperationsNotEnumerable inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestSpecialOperationsNotEnumerableV8Internal { static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info) @@ -92,7 +98,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestSpecialOperationsNotEnumerableTemplate); } - bool V8TestSpecialOperationsNotEnumerable::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp index 6f65152a..6eaa5d8 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8TestTypedefs.cpp
@@ -37,6 +37,12 @@ // bindings/core/v8/ScriptWrappable.h. const WrapperTypeInfo& TestTypedefs::s_wrapperTypeInfo = V8TestTypedefs::wrapperTypeInfo; +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestTypedefs>::value, + "TestTypedefs inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); + namespace TestTypedefsV8Internal { static void uLongLongAttributeAttributeGetter(const v8::FunctionCallbackInfo<v8::Value>& info) @@ -360,7 +366,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestTypedefsTemplate); } - bool V8TestTypedefs::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp b/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp index f671654..9ea40065 100644 --- a/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/core/V8Uint8ClampedArray.cpp
@@ -28,9 +28,11 @@ #pragma clang diagnostic pop #endif -// This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestUint8ClampedArray.h. -// For details, see the comment of DEFINE_WRAPPERTYPEINFO in -// bindings/core/v8/ScriptWrappable.h. +static_assert( + !std::is_base_of<ActiveScriptWrappable, TestUint8ClampedArray>::value, + "TestUint8ClampedArray inherits from ActiveScriptWrappable, but does not specify " + "[ActiveScriptWrappable] extended attribute in the IDL file. " + "Be consistent."); TestUint8ClampedArray* V8Uint8ClampedArray::toImpl(v8::Local<v8::Object> object) {
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.cpp index 81b25c4..de74b9d 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.cpp
@@ -83,7 +83,6 @@ impl.setString(cppValue); return; } - } v8::Local<v8::Value> toV8(const BooleanOrString& impl, v8::Local<v8::Object> creationContext, v8::Isolate* isolate)
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.h b/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.h index 4076f2e7..70b8571 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.h +++ b/third_party/WebKit/Source/bindings/tests/results/modules/BooleanOrString.h
@@ -15,7 +15,6 @@ namespace blink { - class MODULES_EXPORT BooleanOrString final { DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); public:
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp index b64d49e..0b7e4b7 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterface5.cpp
@@ -869,7 +869,6 @@ return V8DOMConfiguration::domClassTemplate(isolate, world, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestInterface5Template); } - bool V8TestInterface5::hasInstance(v8::Local<v8::Value> v8Value, v8::Isolate* isolate) { return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value);
diff --git a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp index 812fd6a9..07ab2fa 100644 --- a/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp +++ b/third_party/WebKit/Source/bindings/tests/results/modules/V8TestInterfacePartial.cpp
@@ -391,7 +391,6 @@ } } - void V8TestInterfacePartial::installOriginTrialPartialFeature(ScriptState* scriptState, v8::Local<v8::Object> instance) { v8::Local<v8::FunctionTemplate> interfaceTemplate = V8TestInterface::wrapperTypeInfo.domTemplate(scriptState->isolate(), scriptState->world());
diff --git a/third_party/WebKit/Source/core/core.gypi b/third_party/WebKit/Source/core/core.gypi index cd300d0..10c873e 100644 --- a/third_party/WebKit/Source/core/core.gypi +++ b/third_party/WebKit/Source/core/core.gypi
@@ -2560,6 +2560,8 @@ 'dom/LiveNodeListBase.h', 'dom/MainThreadTaskRunner.cpp', 'dom/MainThreadTaskRunner.h', + 'dom/MemoryCoordinator.cpp', + 'dom/MemoryCoordinator.h', 'dom/MessageChannel.cpp', 'dom/MessageChannel.h', 'dom/MessagePort.cpp', @@ -2896,6 +2898,8 @@ 'webcore_html_files': [ 'html/AutoplayExperimentHelper.cpp', 'html/AutoplayExperimentHelper.h', + 'html/AutoplayUmaHelper.cpp', + 'html/AutoplayUmaHelper.h', 'html/ClassList.cpp', 'html/ClassList.h', 'html/CrossOriginAttribute.cpp',
diff --git a/third_party/WebKit/Source/core/dom/MemoryCoordinator.cpp b/third_party/WebKit/Source/core/dom/MemoryCoordinator.cpp new file mode 100644 index 0000000..745d979 --- /dev/null +++ b/third_party/WebKit/Source/core/dom/MemoryCoordinator.cpp
@@ -0,0 +1,43 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/dom/MemoryCoordinator.h" + +#include "core/fetch/MemoryCache.h" +#include "platform/TraceEvent.h" +#include "platform/fonts/FontCache.h" +#include "platform/graphics/ImageDecodingStore.h" +#include "platform/heap/Heap.h" +#include "wtf/allocator/Partitions.h" + +namespace blink { + +MemoryCoordinator& MemoryCoordinator::instance() +{ + DEFINE_STATIC_LOCAL(MemoryCoordinator, instance, ()); + return instance; +} + +MemoryCoordinator::MemoryCoordinator() +{ +} + +MemoryCoordinator::~MemoryCoordinator() +{ +} + +void MemoryCoordinator::onMemoryPressure(WebMemoryPressureLevel level) +{ + TRACE_EVENT0("blink", "MemoryCoordinator::onMemoryPressure"); + if (level == WebMemoryPressureLevelCritical) { + // Clear the image cache. + ImageDecodingStore::instance().clear(); + FontCache::fontCache()->invalidate(); + } + if (ProcessHeap::isLowEndDevice()) + memoryCache()->pruneAll(); + WTF::Partitions::decommitFreeableMemory(); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/MemoryCoordinator.h b/third_party/WebKit/Source/core/dom/MemoryCoordinator.h new file mode 100644 index 0000000..104a54c --- /dev/null +++ b/third_party/WebKit/Source/core/dom/MemoryCoordinator.h
@@ -0,0 +1,30 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MemoryCoordinator_h +#define MemoryCoordinator_h + +#include "core/CoreExport.h" +#include "public/platform/WebMemoryPressureLevel.h" +#include "wtf/Noncopyable.h" + +namespace blink { + +// MemoryCoordinator listens to some events which could be opportunities +// for reducing memory consumption and notifies its clients. +class CORE_EXPORT MemoryCoordinator final { + WTF_MAKE_NONCOPYABLE(MemoryCoordinator); +public: + static MemoryCoordinator& instance(); + + void onMemoryPressure(WebMemoryPressureLevel); + +private: + MemoryCoordinator(); + ~MemoryCoordinator(); +}; + +} // namespace blink + +#endif // MemoryCoordinator_h
diff --git a/third_party/WebKit/Source/core/dom/Range.cpp b/third_party/WebKit/Source/core/dom/Range.cpp index 024fdf9a..c2b287b 100644 --- a/third_party/WebKit/Source/core/dom/Range.cpp +++ b/third_party/WebKit/Source/core/dom/Range.cpp
@@ -1530,7 +1530,11 @@ for (Node* node = firstNode(); node != stopNode; node = NodeTraversal::next(*node)) { if (node->isElementNode()) { - if (!nodeSet.contains(node->parentNode())) { + // Exclude start & end container unless the entire corresponding + // node is included in the range. + if (!nodeSet.contains(node->parentNode()) + && (startContainer == endContainer + || (!node->contains(startContainer) && !node->contains(endContainer)))) { if (LayoutObject* layoutObject = toElement(node)->layoutObject()) { Vector<FloatQuad> elementQuads; layoutObject->absoluteQuads(elementQuads);
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp index 79df214..a35790f 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/SpellChecker.cpp
@@ -47,6 +47,7 @@ #include "core/loader/EmptyClients.h" #include "core/page/Page.h" #include "core/page/SpellCheckerClient.h" +#include "platform/text/TextBreakIterator.h" #include "platform/text/TextCheckerClient.h" namespace blink { @@ -786,4 +787,112 @@ m_spellCheckRequester->prepareForLeakDetection(); } +void SpellChecker::findMisspellings(const String& text, Vector<TextCheckingResult>& results) +{ + Vector<UChar> characters; + text.appendTo(characters); + unsigned length = text.length(); + + TextBreakIterator* iterator = wordBreakIterator(characters.data(), length); + if (!iterator) + return; + + int wordStart = iterator->current(); + while (0 <= wordStart) { + int wordEnd = iterator->next(); + if (wordEnd < 0) + break; + int wordLength = wordEnd - wordStart; + int misspellingLocation = -1; + int misspellingLength = 0; + textChecker().checkSpellingOfString(String(characters.data() + wordStart, wordLength), &misspellingLocation, &misspellingLength); + if (0 < misspellingLength) { + DCHECK_LE(0, misspellingLocation); + DCHECK_LE(misspellingLocation, wordLength); + DCHECK_LT(0, misspellingLength); + DCHECK_LE(misspellingLocation + misspellingLength, wordLength); + TextCheckingResult misspelling; + misspelling.decoration = TextDecorationTypeSpelling; + misspelling.location = wordStart + misspellingLocation; + misspelling.length = misspellingLength; + results.append(misspelling); + } + + wordStart = wordEnd; + } +} + +String SpellChecker::findFirstMisspellingOrBadGrammar(const Position& start, const Position& end, int& outFirstFoundOffset) +{ + String firstFoundItem; + String misspelledWord; + + // Initialize out parameter; it will be updated if we find something to return. + outFirstFoundOffset = 0; + + // Expand the search range to encompass entire paragraphs, since text checking needs that much context. + // Determine the character offset from the start of the paragraph to the start of the original search range, + // since we will want to ignore results in this area. + Position paragraphStart = startOfParagraph(createVisiblePosition(start)).toParentAnchoredPosition(); + Position paragraphEnd = end; + int totalRangeLength = TextIterator::rangeLength(paragraphStart, paragraphEnd); + paragraphEnd = endOfParagraph(createVisiblePosition(start)).toParentAnchoredPosition(); + + int rangeStartOffset = TextIterator::rangeLength(paragraphStart, start); + int totalLengthProcessed = 0; + + bool firstIteration = true; + bool lastIteration = false; + while (totalLengthProcessed < totalRangeLength) { + // Iterate through the search range by paragraphs, checking each one for spelling. + int currentLength = TextIterator::rangeLength(paragraphStart, paragraphEnd); + int currentStartOffset = firstIteration ? rangeStartOffset : 0; + int currentEndOffset = currentLength; + if (inSameParagraph(createVisiblePosition(paragraphStart), createVisiblePosition(end))) { + // Determine the character offset from the end of the original search range to the end of the paragraph, + // since we will want to ignore results in this area. + currentEndOffset = TextIterator::rangeLength(paragraphStart, end); + lastIteration = true; + } + if (currentStartOffset < currentEndOffset) { + String paragraphString = plainText(EphemeralRange(paragraphStart, paragraphEnd)); + if (paragraphString.length() > 0) { + int spellingLocation = 0; + + Vector<TextCheckingResult> results; + findMisspellings(paragraphString, results); + + for (unsigned i = 0; i < results.size(); i++) { + const TextCheckingResult* result = &results[i]; + if (result->decoration == TextDecorationTypeSpelling && result->location >= currentStartOffset && result->location + result->length <= currentEndOffset) { + DCHECK_GT(result->length, 0); + DCHECK_GE(result->location, 0); + spellingLocation = result->location; + misspelledWord = paragraphString.substring(result->location, result->length); + DCHECK(misspelledWord.length()); + break; + } + } + + if (!misspelledWord.isEmpty()) { + int spellingOffset = spellingLocation - currentStartOffset; + if (!firstIteration) + spellingOffset += TextIterator::rangeLength(start, paragraphStart); + outFirstFoundOffset = spellingOffset; + firstFoundItem = misspelledWord; + break; + } + } + } + if (lastIteration || totalLengthProcessed + currentLength >= totalRangeLength) + break; + VisiblePosition newParagraphStart = startOfNextParagraph(createVisiblePosition(paragraphEnd)); + paragraphStart = newParagraphStart.toParentAnchoredPosition(); + paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); + firstIteration = false; + totalLengthProcessed += currentLength; + } + return firstFoundItem; +} + } // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp b/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp index 924e5f3..c228d8a 100644 --- a/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp +++ b/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp
@@ -42,42 +42,6 @@ namespace blink { -// TODO(xiaochengh): Move this function to SpellChecker.cpp -void SpellChecker::findMisspellings(const String& text, Vector<TextCheckingResult>& results) -{ - Vector<UChar> characters; - text.appendTo(characters); - unsigned length = text.length(); - - TextBreakIterator* iterator = wordBreakIterator(characters.data(), length); - if (!iterator) - return; - - int wordStart = iterator->current(); - while (0 <= wordStart) { - int wordEnd = iterator->next(); - if (wordEnd < 0) - break; - int wordLength = wordEnd - wordStart; - int misspellingLocation = -1; - int misspellingLength = 0; - textChecker().checkSpellingOfString(String(characters.data() + wordStart, wordLength), &misspellingLocation, &misspellingLength); - if (0 < misspellingLength) { - DCHECK_LE(0, misspellingLocation); - DCHECK_LE(misspellingLocation, wordLength); - DCHECK_LT(0, misspellingLength); - DCHECK_LE(misspellingLocation + misspellingLength, wordLength); - TextCheckingResult misspelling; - misspelling.decoration = TextDecorationTypeSpelling; - misspelling.location = wordStart + misspellingLocation; - misspelling.length = misspellingLength; - results.append(misspelling); - } - - wordStart = wordEnd; - } -} - static EphemeralRange expandToParagraphBoundary(const EphemeralRange& range) { const VisiblePosition& start = createVisiblePosition(range.startPosition()); @@ -223,78 +187,4 @@ return m_checkingLength; } -// TODO(xiaochengh): Move this function to SpellChecker.cpp -String SpellChecker::findFirstMisspellingOrBadGrammar(const Position& start, const Position& end, int& outFirstFoundOffset) -{ - String firstFoundItem; - String misspelledWord; - - // Initialize out parameter; it will be updated if we find something to return. - outFirstFoundOffset = 0; - - // Expand the search range to encompass entire paragraphs, since text checking needs that much context. - // Determine the character offset from the start of the paragraph to the start of the original search range, - // since we will want to ignore results in this area. - Position paragraphStart = startOfParagraph(createVisiblePosition(start)).toParentAnchoredPosition(); - Position paragraphEnd = end; - int totalRangeLength = TextIterator::rangeLength(paragraphStart, paragraphEnd); - paragraphEnd = endOfParagraph(createVisiblePosition(start)).toParentAnchoredPosition(); - - int rangeStartOffset = TextIterator::rangeLength(paragraphStart, start); - int totalLengthProcessed = 0; - - bool firstIteration = true; - bool lastIteration = false; - while (totalLengthProcessed < totalRangeLength) { - // Iterate through the search range by paragraphs, checking each one for spelling. - int currentLength = TextIterator::rangeLength(paragraphStart, paragraphEnd); - int currentStartOffset = firstIteration ? rangeStartOffset : 0; - int currentEndOffset = currentLength; - if (inSameParagraph(createVisiblePosition(paragraphStart), createVisiblePosition(end))) { - // Determine the character offset from the end of the original search range to the end of the paragraph, - // since we will want to ignore results in this area. - currentEndOffset = TextIterator::rangeLength(paragraphStart, end); - lastIteration = true; - } - if (currentStartOffset < currentEndOffset) { - String paragraphString = plainText(EphemeralRange(paragraphStart, paragraphEnd)); - if (paragraphString.length() > 0) { - int spellingLocation = 0; - - Vector<TextCheckingResult> results; - findMisspellings(paragraphString, results); - - for (unsigned i = 0; i < results.size(); i++) { - const TextCheckingResult* result = &results[i]; - if (result->decoration == TextDecorationTypeSpelling && result->location >= currentStartOffset && result->location + result->length <= currentEndOffset) { - DCHECK_GT(result->length, 0); - DCHECK_GE(result->location, 0); - spellingLocation = result->location; - misspelledWord = paragraphString.substring(result->location, result->length); - DCHECK(misspelledWord.length()); - break; - } - } - - if (!misspelledWord.isEmpty()) { - int spellingOffset = spellingLocation - currentStartOffset; - if (!firstIteration) - spellingOffset += TextIterator::rangeLength(start, paragraphStart); - outFirstFoundOffset = spellingOffset; - firstFoundItem = misspelledWord; - break; - } - } - } - if (lastIteration || totalLengthProcessed + currentLength >= totalRangeLength) - break; - VisiblePosition newParagraphStart = startOfNextParagraph(createVisiblePosition(paragraphEnd)); - paragraphStart = newParagraphStart.toParentAnchoredPosition(); - paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); - firstIteration = false; - totalLengthProcessed += currentLength; - } - return firstFoundItem; -} - } // namespace blink
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.cpp b/third_party/WebKit/Source/core/fetch/ImageResource.cpp index de3909e..c2ae4de 100644 --- a/third_party/WebKit/Source/core/fetch/ImageResource.cpp +++ b/third_party/WebKit/Source/core/fetch/ImageResource.cpp
@@ -40,6 +40,7 @@ #include "wtf/CurrentTime.h" #include "wtf/StdLibExtras.h" #include <memory> +#include <v8.h> namespace blink { @@ -247,6 +248,7 @@ void ImageResource::appendData(const char* data, size_t length) { + v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(length); if (m_multipartParser) { m_multipartParser->appendData(data, length); } else { @@ -369,6 +371,8 @@ { if (!m_image) return; + int64_t length = m_image->data() ? m_image->data()->size() : 0; + v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(-length); // If our Image has an observer, it's always us so we need to clear the back pointer // before dropping our reference.
diff --git a/third_party/WebKit/Source/core/fetch/MemoryCache.cpp b/third_party/WebKit/Source/core/fetch/MemoryCache.cpp index a0e32b7..d6957b6 100644 --- a/third_party/WebKit/Source/core/fetch/MemoryCache.cpp +++ b/third_party/WebKit/Source/core/fetch/MemoryCache.cpp
@@ -104,8 +104,6 @@ #endif { MemoryCacheDumpProvider::instance()->setMemoryCache(this); - if (ProcessHeap::isLowEndDevice()) - MemoryCoordinator::instance().registerClient(this); #ifdef MEMORY_CACHE_STATS const double statsIntervalInSeconds = 15; m_statsTimer.startRepeating(statsIntervalInSeconds, BLINK_FROM_HERE); @@ -129,7 +127,6 @@ visitor->trace(m_liveDecodedResources); visitor->trace(m_resourceMaps); MemoryCacheDumpClient::trace(visitor); - MemoryCoordinatorClient::trace(visitor); } KURL MemoryCache::removeFragmentIdentifierIfNeeded(const KURL& originalURL) @@ -738,11 +735,6 @@ return true; } -void MemoryCache::onMemoryPressure(WebMemoryPressureLevel level) -{ - pruneAll(); -} - bool MemoryCache::isInSameLRUListForTest(const Resource* x, const Resource* y) { MemoryCacheEntry* ex = getEntryForResource(x);
diff --git a/third_party/WebKit/Source/core/fetch/MemoryCache.h b/third_party/WebKit/Source/core/fetch/MemoryCache.h index 8e562bd..a2522aa 100644 --- a/third_party/WebKit/Source/core/fetch/MemoryCache.h +++ b/third_party/WebKit/Source/core/fetch/MemoryCache.h
@@ -28,7 +28,6 @@ #include "core/CoreExport.h" #include "core/fetch/Resource.h" #include "platform/MemoryCacheDumpProvider.h" -#include "platform/MemoryCoordinator.h" #include "public/platform/WebThread.h" #include "wtf/Allocator.h" #include "wtf/HashMap.h" @@ -123,7 +122,7 @@ namespace blink { -class CORE_EXPORT MemoryCache final : public GarbageCollectedFinalized<MemoryCache>, public WebThread::TaskObserver, public MemoryCacheDumpClient, public MemoryCoordinatorClient { +class CORE_EXPORT MemoryCache final : public GarbageCollectedFinalized<MemoryCache>, public WebThread::TaskObserver, public MemoryCacheDumpClient { USING_GARBAGE_COLLECTED_MIXIN(MemoryCache); WTF_MAKE_NONCOPYABLE(MemoryCache); public: @@ -221,8 +220,6 @@ // Take memory usage snapshot for tracing. bool onMemoryDump(WebMemoryDumpLevelOfDetail, WebProcessMemoryDump*) override; - void onMemoryPressure(WebMemoryPressureLevel) override; - bool isInSameLRUListForTest(const Resource*, const Resource*); private: enum PruneStrategy {
diff --git a/third_party/WebKit/Source/core/html/AutoplayUmaHelper.cpp b/third_party/WebKit/Source/core/html/AutoplayUmaHelper.cpp new file mode 100644 index 0000000..0951ad1 --- /dev/null +++ b/third_party/WebKit/Source/core/html/AutoplayUmaHelper.cpp
@@ -0,0 +1,130 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/html/AutoplayUmaHelper.h" + +#include "core/dom/Document.h" +#include "core/dom/ElementVisibilityObserver.h" +#include "core/events/Event.h" +#include "core/frame/LocalDOMWindow.h" +#include "core/html/HTMLMediaElement.h" +#include "platform/Histogram.h" + +namespace blink { + +namespace { + +void recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(bool visible) +{ + DEFINE_STATIC_LOCAL(BooleanHistogram, histogram, ("Media.Video.Autoplay.Muted.PlayMethod.BecomesVisible")); + histogram.count(visible); +} + +} // namespace + +AutoplayUmaHelper* AutoplayUmaHelper::create(HTMLMediaElement* element) +{ + return new AutoplayUmaHelper(element); +} + +AutoplayUmaHelper::AutoplayUmaHelper(HTMLMediaElement* element) + : EventListener(CPPEventListenerType) + , m_source(AutoplaySource::NumberOfSources) + , m_element(element) + , m_videoMutedPlayMethodVisibilityObserver(nullptr) { } + +AutoplayUmaHelper::~AutoplayUmaHelper() = default; + +bool AutoplayUmaHelper::operator==(const EventListener& other) const +{ + return this == &other; +} + +void AutoplayUmaHelper::onAutoplayInitiated(AutoplaySource source) +{ + DEFINE_STATIC_LOCAL(EnumerationHistogram, videoHistogram, ("Media.Video.Autoplay", static_cast<int>(AutoplaySource::NumberOfSources))); + DEFINE_STATIC_LOCAL(EnumerationHistogram, mutedVideoHistogram, ("Media.Video.Autoplay.Muted", static_cast<int>(AutoplaySource::NumberOfSources))); + DEFINE_STATIC_LOCAL(EnumerationHistogram, audioHistogram, ("Media.Audio.Autoplay", static_cast<int>(AutoplaySource::NumberOfSources))); + + m_source = source; + + if (m_element->isHTMLVideoElement()) { + videoHistogram.count(static_cast<int>(m_source)); + if (m_element->muted()) + mutedVideoHistogram.count(static_cast<int>(m_source)); + } else { + audioHistogram.count(static_cast<int>(m_source)); + } + + if (m_source == AutoplaySource::Method && m_element->isHTMLVideoElement() && m_element->muted()) + m_element->addEventListener(EventTypeNames::playing, this, false); +} + +void AutoplayUmaHelper::recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus status) +{ + DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayUnmuteHistogram, ("Media.Video.Autoplay.Muted.UnmuteAction", static_cast<int>(AutoplayUnmuteActionStatus::NumberOfStatus))); + + autoplayUnmuteHistogram.count(static_cast<int>(status)); +} + +void AutoplayUmaHelper::didMoveToNewDocument(Document& oldDocument) +{ + if (!m_videoMutedPlayMethodVisibilityObserver) + return; + + oldDocument.domWindow()->removeEventListener(EventTypeNames::unload, this, false); + m_element->document().domWindow()->addEventListener(EventTypeNames::unload, this, false); +} + +void AutoplayUmaHelper::onVisibilityChangedForVideoMutedPlayMethod(bool isVisible) +{ + if (!isVisible) + return; + + recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(true); + m_videoMutedPlayMethodVisibilityObserver->stop(); + m_videoMutedPlayMethodVisibilityObserver = nullptr; + m_element->document().domWindow()->removeEventListener(EventTypeNames::unload, this, false); +} + +void AutoplayUmaHelper::handleEvent(ExecutionContext* executionContext, Event* event) +{ + if (event->type() == EventTypeNames::playing) + handlePlayingEvent(); + else if (event->type() == EventTypeNames::unload) + handleUnloadEvent(); + else + NOTREACHED(); +} + +void AutoplayUmaHelper::handleUnloadEvent() +{ + if (m_videoMutedPlayMethodVisibilityObserver) { + recordVideoAutoplayMutedPlayMethodBecomesVisibleUma(false); + m_videoMutedPlayMethodVisibilityObserver->stop(); + m_videoMutedPlayMethodVisibilityObserver = nullptr; + m_element->document().domWindow()->removeEventListener(EventTypeNames::unload, this, false); + } +} + +void AutoplayUmaHelper::handlePlayingEvent() +{ + if (m_source == AutoplaySource::Method && m_element->isHTMLVideoElement() && m_element->muted()) { + if (!m_videoMutedPlayMethodVisibilityObserver) { + m_videoMutedPlayMethodVisibilityObserver = new ElementVisibilityObserver(m_element, WTF::bind(&AutoplayUmaHelper::onVisibilityChangedForVideoMutedPlayMethod, wrapPersistent(this))); + m_videoMutedPlayMethodVisibilityObserver->start(); + m_element->document().domWindow()->addEventListener(EventTypeNames::unload, this, false); + } + } + m_element->removeEventListener(EventTypeNames::playing, this, false); +} + +DEFINE_TRACE(AutoplayUmaHelper) +{ + EventListener::trace(visitor); + visitor->trace(m_element); + visitor->trace(m_videoMutedPlayMethodVisibilityObserver); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/html/AutoplayUmaHelper.h b/third_party/WebKit/Source/core/html/AutoplayUmaHelper.h new file mode 100644 index 0000000..edfca0b --- /dev/null +++ b/third_party/WebKit/Source/core/html/AutoplayUmaHelper.h
@@ -0,0 +1,70 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef AutoplayUmaHelper_h +#define AutoplayUmaHelper_h + +#include "core/events/EventListener.h" +#include "platform/heap/Handle.h" + +namespace blink { + +// These values are used for histograms. Do not reorder. +enum class AutoplaySource { + // Autoplay comes from HTMLMediaElement `autoplay` attribute. + Attribute = 0, + // Autoplay comes from `play()` method. + Method = 1, + // This enum value must be last. + NumberOfSources = 2, +}; + +// These values are used for histograms. Do not reorder. +enum class AutoplayUnmuteActionStatus { + Failure = 0, + Success = 1, + NumberOfStatus = 2, +}; + +class Document; +class ElementVisibilityObserver; +class HTMLMediaElement; + +class AutoplayUmaHelper final : public EventListener { +public: + static AutoplayUmaHelper* create(HTMLMediaElement*); + + ~AutoplayUmaHelper(); + + bool operator==(const EventListener&) const override; + + void onAutoplayInitiated(AutoplaySource); + + void recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus); + + void onVisibilityChangedForVideoMutedPlayMethod(bool isVisible); + + void didMoveToNewDocument(Document& oldDocument); + + DECLARE_VIRTUAL_TRACE(); + +private: + explicit AutoplayUmaHelper(HTMLMediaElement*); + + void handleEvent(ExecutionContext*, Event*) override; + + void handlePlayingEvent(); + void handleUnloadEvent(); + + // The autoplay source. Use AutoplaySource::NumberOfSources for invalid source. + AutoplaySource m_source; + // The media element this UMA helper is attached to. |m_element| owns |this|. + WeakMember<HTMLMediaElement> m_element; + // The observer is used to observe whether a muted video autoplaying by play() method become visible at some point. + Member<ElementVisibilityObserver> m_videoMutedPlayMethodVisibilityObserver; +}; + +} // namespace blink + +#endif // AutoplayUmaHelper_h
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp index ace56247..58f83cf7 100644 --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp
@@ -44,6 +44,7 @@ #include "core/frame/Settings.h" #include "core/frame/UseCounter.h" #include "core/frame/csp/ContentSecurityPolicy.h" +#include "core/html/AutoplayUmaHelper.h" #include "core/html/HTMLMediaSource.h" #include "core/html/HTMLSourceElement.h" #include "core/html/HTMLTrackElement.h" @@ -281,16 +282,6 @@ return String(); } -// These values are used for histograms. Do not reorder. -enum AutoplaySource { - // Autoplay comes from HTMLMediaElement `autoplay` attribute. - AutoplaySourceAttribute = 0, - // Autoplay comes from `play()` method. - AutoplaySourceMethod = 1, - // This enum value must be last. - NumberOfAutoplaySources = 2, -}; - } // anonymous namespace class HTMLMediaElement::AutoplayHelperClientImpl : @@ -448,6 +439,7 @@ , m_audioSourceNode(nullptr) , m_autoplayHelperClient(AutoplayHelperClientImpl::create(this)) , m_autoplayHelper(AutoplayExperimentHelper::create(m_autoplayHelperClient.get())) + , m_autoplayUmaHelper(AutoplayUmaHelper::create(this)) , m_remotePlaybackClient(nullptr) , m_autoplayVisibilityObserver(nullptr) { @@ -497,6 +489,7 @@ { BLINK_MEDIA_LOG << "didMoveToNewDocument(" << (void*)this << ")"; + m_autoplayUmaHelper->didMoveToNewDocument(oldDocument); // If any experiment is enabled, then we want to enable a user gesture by // default, otherwise the experiment does nothing. bool oldDocumentRequiresUserGesture = (oldDocument.settings() && oldDocument.settings()->mediaPlaybackRequiresUserGesture()) @@ -1647,7 +1640,7 @@ // Check for autoplay, and record metrics about it if needed. if (shouldAutoplay(RecordMetricsBehavior::DoRecord)) { - recordAutoplaySourceMetric(AutoplaySourceAttribute); + m_autoplayUmaHelper->onAutoplayInitiated(AutoplaySource::Attribute); // If the autoplay experiment says that it's okay to play now, // then don't require a user gesture. @@ -2100,7 +2093,7 @@ m_autoplayHelper->playMethodCalled(); if (!UserGestureIndicator::processingUserGesture()) { - recordAutoplaySourceMetric(AutoplaySourceMethod); + m_autoplayUmaHelper->onAutoplayInitiated(AutoplaySource::Method); if (isGestureNeededForPlayback()) { // If playback is deferred, then don't start playback but don't // fail yet either. @@ -2315,9 +2308,9 @@ if (wasAutoplayingMuted) { if (isGestureNeededForPlayback()) { pause(); - recordAutoplayUnmuteStatus(AutoplayUnmuteActionFailure); + m_autoplayUmaHelper->recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus::Failure); } else { - recordAutoplayUnmuteStatus(AutoplayUnmuteActionSuccess); + m_autoplayUmaHelper->recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus::Success); } } } @@ -3671,6 +3664,7 @@ visitor->trace(m_audioSourceProvider); visitor->trace(m_autoplayHelperClient); visitor->trace(m_autoplayHelper); + visitor->trace(m_autoplayUmaHelper); visitor->trace(m_srcObject); visitor->trace(m_autoplayVisibilityObserver); visitor->template registerWeakMembers<HTMLMediaElement, &HTMLMediaElement::clearWeakMembers>(this); @@ -3891,28 +3885,6 @@ return histogram; } -void HTMLMediaElement::recordAutoplaySourceMetric(int source) -{ - DEFINE_STATIC_LOCAL(EnumerationHistogram, videoHistogram, ("Media.Video.Autoplay", NumberOfAutoplaySources)); - DEFINE_STATIC_LOCAL(EnumerationHistogram, mutedVideoHistogram, ("Media.Video.Autoplay.Muted", NumberOfAutoplaySources)); - DEFINE_STATIC_LOCAL(EnumerationHistogram, audioHistogram, ("Media.Audio.Autoplay", NumberOfAutoplaySources)); - - if (isHTMLVideoElement()) { - videoHistogram.count(source); - if (muted()) - mutedVideoHistogram.count(source); - } else { - audioHistogram.count(source); - } -} - -void HTMLMediaElement::recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus status) -{ - DEFINE_STATIC_LOCAL(EnumerationHistogram, autoplayUnmuteHistogram, ("Media.Video.Autoplay.Muted.UnmuteAction", AutoplayUnmuteActionMax)); - - autoplayUnmuteHistogram.count(status); -} - void HTMLMediaElement::onVisibilityChangedForAutoplay(bool isVisible) { if (!isVisible)
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.h b/third_party/WebKit/Source/core/html/HTMLMediaElement.h index b880685..ebcf044d 100644 --- a/third_party/WebKit/Source/core/html/HTMLMediaElement.h +++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.h
@@ -46,6 +46,7 @@ class AudioSourceProviderClient; class AudioTrackList; +class AutoplayUmaHelper; class ContentType; class CueTimeline; class ElementVisibilityObserver; @@ -298,13 +299,6 @@ void recordAutoplayMetric(AutoplayMetrics); private: - // These values are used for histograms. Do not reorder. - enum AutoplayUnmuteActionStatus { - AutoplayUnmuteActionFailure = 0, - AutoplayUnmuteActionSuccess = 1, - AutoplayUnmuteActionMax - }; - void resetMediaPlayerAndMediaSource(); bool alwaysCreateUserAgentShadowRoot() const final { return true; } @@ -499,9 +493,6 @@ EnumerationHistogram& showControlsHistogram() const; - void recordAutoplaySourceMetric(int source); - void recordAutoplayUnmuteStatus(AutoplayUnmuteActionStatus); - void onVisibilityChangedForAutoplay(bool isVisible); UnthrottledThreadTimer<HTMLMediaElement> m_loadTimer; @@ -678,6 +669,7 @@ Member<AutoplayExperimentHelper::Client> m_autoplayHelperClient; Member<AutoplayExperimentHelper> m_autoplayHelper; + Member<AutoplayUmaHelper> m_autoplayUmaHelper; WebRemotePlaybackClient* m_remotePlaybackClient;
diff --git a/third_party/WebKit/Source/core/html/OWNERS b/third_party/WebKit/Source/core/html/OWNERS index c877bae..ab32e99 100644 --- a/third_party/WebKit/Source/core/html/OWNERS +++ b/third_party/WebKit/Source/core/html/OWNERS
@@ -1,3 +1,4 @@ per-file Autoplay*=mlamouri@chromium.org +per-file AutoplayUmaHelper=zqzhang@chromium.org per-file Media*=mlamouri@chromium.org per-file HTMLMedia*=mlamouri@chromium.org
diff --git a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp index 560fe89..a6f8459 100644 --- a/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutBoxModelObject.cpp
@@ -777,7 +777,6 @@ return LayoutPoint(); LayoutPoint referencePoint = startPoint; - referencePoint.move(parent()->columnOffset(referencePoint)); // If the base element is null, return the distance between the canvas origin and // the left border edge of the element and stop this algorithm. @@ -785,25 +784,27 @@ return referencePoint; if (const LayoutBoxModelObject* offsetParent = element->layoutBoxModelObject()) { - if (offsetParent->isBox() && !offsetParent->isBody()) - referencePoint.move(-toLayoutBox(offsetParent)->borderLeft(), -toLayoutBox(offsetParent)->borderTop()); - if (!isOutOfFlowPositioned() || flowThreadContainingBlock()) { + if (!isOutOfFlowPositioned()) { if (isInFlowPositioned()) referencePoint.move(offsetForInFlowPosition()); - LayoutObject* current; - for (current = parent(); current != offsetParent && current->parent(); current = current->parent()) { + // Note that we may fail to find |offsetParent| while walking the container chain, if + // |offsetParent| is an inline split into continuations. + // <body style="display:inline;" id="offsetParent"><div></div><span id="this"> + // This is why we have to do a nullptr check here. + // offset(Left|Top) is generally broken when offsetParent is inline. + for (const LayoutObject* current = container(); current && current != offsetParent; current = current->container()) { // FIXME: What are we supposed to do inside SVG content? - if (!isOutOfFlowPositioned()) { - if (current->isBox() && !current->isTableRow()) - referencePoint.moveBy(toLayoutBox(current)->topLeftLocation()); - referencePoint.move(current->parent()->columnOffset(referencePoint)); - } + referencePoint.move(current->columnOffset(referencePoint)); + if (current->isBox() && !current->isTableRow()) + referencePoint.moveBy(toLayoutBox(current)->topLeftLocation()); } if (offsetParent->isBox() && offsetParent->isBody() && !offsetParent->isPositioned()) referencePoint.moveBy(toLayoutBox(offsetParent)->topLeftLocation()); } + if (offsetParent->isBox() && !offsetParent->isBody()) + referencePoint.move(-toLayoutBox(offsetParent)->borderLeft(), -toLayoutBox(offsetParent)->borderTop()); } return referencePoint;
diff --git a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp index 5ded4519..fe3148aac 100644 --- a/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp +++ b/third_party/WebKit/Source/core/layout/ScrollAnchorTest.cpp
@@ -684,20 +684,21 @@ class ScrollAnchorCornerTest : public ScrollAnchorTest { protected: - void checkCorner(const AtomicString& id, Corner corner, DoublePoint startPos, DoubleSize expectedAdjustment) + void checkCorner(Corner corner, DoublePoint startPos, DoubleSize expectedAdjustment) { ScrollableArea* viewport = layoutViewport(); - Element* element = document().getElementById(id); + Element* element = document().getElementById("changer"); viewport->setScrollPosition(startPos, UserScroll); - element->setAttribute(HTMLNames::classAttr, "big"); + element->setAttribute(HTMLNames::classAttr, "change"); update(); DoublePoint endPos = startPos; endPos.move(expectedAdjustment); EXPECT_EQ(endPos, viewport->scrollPositionDouble()); - EXPECT_EQ(element->layoutObject(), scrollAnchor(viewport).anchorObject()); + EXPECT_EQ(document().getElementById("a")->layoutObject(), + scrollAnchor(viewport).anchorObject()); EXPECT_EQ(corner, scrollAnchor(viewport).corner()); element->removeAttribute(HTMLNames::classAttr); @@ -705,129 +706,69 @@ } }; -TEST_F(ScrollAnchorCornerTest, Corners) +// Verify that we anchor to the top left corner of an element for LTR. +TEST_F(ScrollAnchorCornerTest, CornersLTR) { setBodyInnerHTML( "<style>" - " body {" - " position: absolute; border: 10px solid #ccc;" - " width: 1220px; height: 920px;" - " }" - " #a, #b, #c, #d {" - " position: absolute; background-color: #ace;" - " width: 400px; height: 300px;" - " }" - " #a, #b { top: 0; }" - " #a, #c { left: 0; }" - " #b, #d { right: 0; }" - " #c, #d { bottom: 0; }" - " .big { width: 800px !important; height: 600px !important }" + " body { position: relative; width: 1220px; height: 920px; }" + " #a { width: 400px; height: 300px; }" + " .change { height: 100px; }" "</style>" - "<div id=a></div>" - "<div id=b></div>" - "<div id=c></div>" - "<div id=d></div>"); + "<div id='changer'></div>" + "<div id='a'></div>"); - checkCorner("a", Corner::TopLeft, DoublePoint(20, 20), DoubleSize(0, 0)); - checkCorner("b", Corner::TopLeft, DoublePoint(420, 20), DoubleSize(-400, 0)); - checkCorner("c", Corner::TopLeft, DoublePoint(20, 320), DoubleSize(0, -300)); - checkCorner("d", Corner::TopLeft, DoublePoint(420, 320), DoubleSize(-400, -300)); + checkCorner(Corner::TopLeft, DoublePoint(20, 20), DoubleSize(0, 100)); } +// Verify that we anchor to the top left corner of an anchor element for +// vertical-lr writing mode. TEST_F(ScrollAnchorCornerTest, CornersVerticalLR) { setBodyInnerHTML( "<style>" - " html {" - " writing-mode: vertical-lr;" - " }" - " body {" - " position: absolute; border: 10px solid #ccc;" - " width: 1220px; height: 920px;" - " }" - " #a, #b, #c, #d {" - " position: absolute; background-color: #ace;" - " width: 400px; height: 300px;" - " }" - " #a, #b { top: 0; }" - " #a, #c { left: 0; }" - " #b, #d { right: 0; }" - " #c, #d { bottom: 0; }" - " .big { width: 800px !important; height: 600px !important }" + " html { writing-mode: vertical-lr; }" + " body { position: relative; width: 1220px; height: 920px; }" + " #a { width: 400px; height: 300px; }" + " .change { width: 100px; }" "</style>" - "<div id=a></div>" - "<div id=b></div>" - "<div id=c></div>" - "<div id=d></div>"); + "<div id='changer'></div>" + "<div id='a'></div>"); - checkCorner("a", Corner::TopLeft, DoublePoint(20, 20), DoubleSize(0, 0)); - checkCorner("b", Corner::TopLeft, DoublePoint(420, 20), DoubleSize(-400, 0)); - checkCorner("c", Corner::TopLeft, DoublePoint(20, 320), DoubleSize(0, -300)); - checkCorner("d", Corner::TopLeft, DoublePoint(420, 320), DoubleSize(-400, -300)); + checkCorner(Corner::TopLeft, DoublePoint(20, 20), DoubleSize(100, 0)); } +// Verify that we anchor to the top right corner of an anchor element for RTL. TEST_F(ScrollAnchorCornerTest, CornersRTL) { setBodyInnerHTML( "<style>" - " html {" - " direction: rtl;" - " }" - " body {" - " position: absolute; border: 10px solid #ccc;" - " width: 1220px; height: 920px;" - " }" - " #a, #b, #c, #d {" - " position: absolute; background-color: #ace;" - " width: 400px; height: 300px;" - " }" - " #a, #b { top: 0; }" - " #a, #c { left: 0; }" - " #b, #d { right: 0; }" - " #c, #d { bottom: 0; }" - " .big { width: 800px !important; height: 600px !important }" + " html { direction: rtl; }" + " body { position: relative; width: 1220px; height: 920px; }" + " #a { width: 400px; height: 300px; }" + " .change { height: 100px; }" "</style>" - "<div id=a></div>" - "<div id=b></div>" - "<div id=c></div>" - "<div id=d></div>"); + "<div id='changer'></div>" + "<div id='a'></div>"); - checkCorner("b", Corner::TopRight, DoublePoint(-20, 20), DoubleSize(0, 0)); - checkCorner("a", Corner::TopRight, DoublePoint(-420, 20), DoubleSize(400, 0)); - checkCorner("d", Corner::TopRight, DoublePoint(-20, 320), DoubleSize(0, -300)); - checkCorner("c", Corner::TopRight, DoublePoint(-420, 320), DoubleSize(400, -300)); + checkCorner(Corner::TopRight, DoublePoint(-20, 20), DoubleSize(0, 100)); } +// Verify that we anchor to the top right corner of an anchor element for +// vertical-lr writing mode. TEST_F(ScrollAnchorCornerTest, CornersVerticalRL) { setBodyInnerHTML( "<style>" - " html {" - " writing-mode: vertical-rl;" - " }" - " body {" - " position: absolute; border: 10px solid #ccc;" - " width: 1220px; height: 920px;" - " }" - " #a, #b, #c, #d {" - " position: absolute; background-color: #ace;" - " width: 400px; height: 300px;" - " }" - " #a, #b { top: 0; }" - " #a, #c { left: 0; }" - " #b, #d { right: 0; }" - " #c, #d { bottom: 0; }" - " .big { width: 800px !important; height: 600px !important }" + " html { writing-mode: vertical-rl; }" + " body { position: relative; width: 1220px; height: 920px; }" + " #a { width: 400px; height: 300px; }" + " .change { width: 100px; }" "</style>" - "<div id=a></div>" - "<div id=b></div>" - "<div id=c></div>" - "<div id=d></div>"); + "<div id='changer'></div>" + "<div id='a'></div>"); - checkCorner("b", Corner::TopRight, DoublePoint(-20, 20), DoubleSize(0, 0)); - checkCorner("a", Corner::TopRight, DoublePoint(-420, 20), DoubleSize(400, 0)); - checkCorner("d", Corner::TopRight, DoublePoint(-20, 320), DoubleSize(0, -300)); - checkCorner("c", Corner::TopRight, DoublePoint(-420, 320), DoubleSize(400, -300)); + checkCorner(Corner::TopRight, DoublePoint(-20, 20), DoubleSize(-100, 0)); } }
diff --git a/third_party/WebKit/Source/core/layout/line/BreakingContextInlineHeaders.h b/third_party/WebKit/Source/core/layout/line/BreakingContextInlineHeaders.h index 7ebd9ba..c219881 100644 --- a/third_party/WebKit/Source/core/layout/line/BreakingContextInlineHeaders.h +++ b/third_party/WebKit/Source/core/layout/line/BreakingContextInlineHeaders.h
@@ -746,10 +746,6 @@ // See: fast/css3-text/css3-word-break/word-break-all-wrap-with-floats.html float widthMeasurementAtLastBreakOpportunity = 0; -#if OS(ANDROID) - // TODO(kojii): Temporary call getHyphenation() to measure the performance. - style.getFontDescription().localeOrDefault().getHyphenation(); -#endif Hyphenation* hyphenation = style.getHyphenation(); bool disableSoftHyphen = style.getHyphens() == HyphensNone; float hyphenWidth = 0;
diff --git a/third_party/WebKit/Source/devtools/front_end/components/BreakpointsSidebarPaneBase.js b/third_party/WebKit/Source/devtools/front_end/components/BreakpointsSidebarPaneBase.js index 949a68d..5c481cbd 100644 --- a/third_party/WebKit/Source/devtools/front_end/components/BreakpointsSidebarPaneBase.js +++ b/third_party/WebKit/Source/devtools/front_end/components/BreakpointsSidebarPaneBase.js
@@ -45,9 +45,6 @@ this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); this.element.appendChild(this.emptyElement); - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._update, this); - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._update, this); - WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._update, this); } WebInspector.BreakpointsSidebarPaneBase.prototype = { @@ -94,19 +91,5 @@ } }, - _update: function() - { - var target = WebInspector.context.flavor(WebInspector.Target); - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); - var details = debuggerModel ? debuggerModel.debuggerPausedDetails() : null; - this.highlightDetails(details); - }, - - /** - * @param {?WebInspector.DebuggerPausedDetails} details - * @protected - */ - highlightDetails: function(details) { }, - __proto__: WebInspector.VBox.prototype }
diff --git a/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js index 6c38cbe..fe42463 100644 --- a/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/components/DOMBreakpointsSidebarPane.js
@@ -31,6 +31,7 @@ /** * @constructor * @extends {WebInspector.BreakpointsSidebarPaneBase} + * @implements {WebInspector.ContextFlavorListener} */ WebInspector.DOMBreakpointsSidebarPane = function() { @@ -55,21 +56,20 @@ this._contextMenuLabels[this._breakpointTypes.AttributeModified] = WebInspector.UIString.capitalize("Attributes ^modifications"); this._contextMenuLabels[this._breakpointTypes.NodeRemoved] = WebInspector.UIString.capitalize("Node ^removal"); - WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.InspectedURLChanged, this._inspectedURLChanged, this); WebInspector.targetManager.addModelListener(WebInspector.DOMModel, WebInspector.DOMModel.Events.NodeRemoved, this._nodeRemoved, this); + WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.InspectedURLChanged, this._inspectedURLChanged, this); + this._inspectedURL = WebInspector.targetManager.inspectedURL(); + this._update(); } WebInspector.DOMBreakpointsSidebarPane.Marker = "breakpoint-marker"; WebInspector.DOMBreakpointsSidebarPane.prototype = { - _inspectedURLChanged: function(event) + _inspectedURLChanged: function() { - var target = /** @type {!WebInspector.Target} */ (event.data); - if (target !== WebInspector.targetManager.mainTarget()) - return; this._breakpointElements = {}; this.reset(); - this._inspectedURL = target.inspectedURL().removeURLFragment(); + this._inspectedURL = WebInspector.targetManager.inspectedURL(); }, /** @@ -322,10 +322,16 @@ /** * @override - * @param {?WebInspector.DebuggerPausedDetails} details + * @param {?Object} object */ - highlightDetails: function(details) + flavorChanged: function(object) { + this._update(); + }, + + _update: function() + { + var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); if (!details || details.reason !== WebInspector.DebuggerModel.BreakReason.DOM) { if (this._highlightedElement) { this._highlightedElement.classList.remove("breakpoint-hit"); @@ -338,7 +344,7 @@ var element = this._breakpointElements[breakpointId]; if (!element) return; - WebInspector.viewManager.revealViewWithWidget(this); + WebInspector.viewManager.showView("sources.domBreakpoints"); element.classList.add("breakpoint-hit"); this._highlightedElement = element; },
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js index e5f0851..12ef551b 100644 --- a/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js +++ b/third_party/WebKit/Source/devtools/front_end/sdk/TargetManager.js
@@ -78,6 +78,14 @@ }, /** + * @return {string} + */ + inspectedURL: function() + { + return this._targets[0] ? this._targets[0].inspectedURL() : ""; + }, + + /** * @param {!WebInspector.Event} event */ _redispatchEvent: function(event)
diff --git a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js index bd5964b..5a556c9 100644 --- a/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js +++ b/third_party/WebKit/Source/devtools/front_end/settings/SettingsScreen.js
@@ -49,7 +49,9 @@ tabbedPane.insertBeforeTabStrip(settingsLabelElement); tabbedPane.setShrinkableTabs(false); tabbedPane.setVerticalTabLayout(true); - tabbedPane.appendTab("shortcuts", WebInspector.UIString("Shortcuts"), WebInspector.shortcutsScreen.createShortcutsTabView()); + var shortcutsView = new WebInspector.SimpleView(WebInspector.UIString("Shortcuts")); + WebInspector.shortcutsScreen.createShortcutsTabView().show(shortcutsView.element); + this._tabbedLocation.appendView(shortcutsView); tabbedPane.show(this.contentElement); this.element.addEventListener("keydown", this._keyDown.bind(this), false); @@ -68,12 +70,11 @@ var dialog = new WebInspector.Dialog(); dialog.addCloseButton(); settingsScreen.show(dialog.element); - settingsScreen._selectTab(name || "preferences"); dialog.show(); + settingsScreen._selectTab(name || "preferences"); } WebInspector.SettingsScreen.prototype = { - /** * @override * @param {string} locationName @@ -504,7 +505,7 @@ InspectorFrontendHost.openInNewTab("https://developers.google.com/web/tools/chrome-devtools/"); return true; case "settings.shortcuts": - WebInspector.SettingsScreen._showSettingsScreen("shortcuts"); + WebInspector.SettingsScreen._showSettingsScreen(WebInspector.UIString("Shortcuts")); return true; } return false;
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js index 7e9c1d0..50f07d4a 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/CallStackSidebarPane.js
@@ -26,6 +26,7 @@ /** * @constructor * @extends {WebInspector.SimpleView} + * @implements {WebInspector.ContextFlavorListener} */ WebInspector.CallStackSidebarPane = function() { @@ -40,18 +41,22 @@ /** @type {!Array<!WebInspector.CallStackSidebarPane.CallFrame>} */ this.callFrames = []; this._locationPool = new WebInspector.LiveLocationPool(); - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._update, this); - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._update, this); - WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._update, this); - WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this._updateCallFrame, this); + this._update(); } WebInspector.CallStackSidebarPane.prototype = { + /** + * @override + * @param {?Object} object + */ + flavorChanged: function(object) + { + this._update(); + }, + _update: function() { - var target = WebInspector.context.flavor(WebInspector.Target); - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); - var details = debuggerModel ? debuggerModel.debuggerPausedDetails() : null; + var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); this.callFrameList.detach(); this.callFrameList.clear(); @@ -59,21 +64,20 @@ this.element.removeChildren(); this._locationPool.disposeAll(); - if (!details) { - var infoElement = this.element.createChild("div", "callstack-info"); - infoElement.textContent = WebInspector.UIString("Not Paused"); - return; - } - this.callFrameList.show(this.element); - this._debuggerModel = details.debuggerModel; - var asyncStackTrace = details.asyncStackTrace; - - delete this._statusMessageElement; delete this._hiddenCallFramesMessageElement; this.callFrames = []; this._hiddenCallFrames = 0; + this._updateStatusMessage(details); + + if (!details) { + WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, null); + return; + } + this._debuggerModel = details.debuggerModel; + var asyncStackTrace = details.asyncStackTrace; + this._appendSidebarCallFrames(this._callFramesFromDebugger(details.callFrames)); var topStackHidden = (this._hiddenCallFrames === this.callFrames.length); @@ -101,7 +105,54 @@ this.element.insertBefore(element, this.element.firstChild); this._hiddenCallFramesMessageElement = element; } - WebInspector.viewManager.revealViewWithWidget(this); + this._selectNextVisibleCallFrame(0); + this.revealView(); + }, + + /** + * @param {?WebInspector.DebuggerPausedDetails} details + */ + _updateStatusMessage: function(details) + { + var status = this.contentElement.createChild("div", "callstack-info"); + status.removeChildren(); + + if (!details) { + status.textContent = WebInspector.UIString("Not Paused"); + status.classList.toggle("status", false); + return; + } + + if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) { + status.appendChild(WebInspector.domBreakpointsSidebarPane.createBreakpointHitStatusMessage(details)); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) { + var eventName = details.auxData["eventName"]; + var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName, details.auxData); + status.textContent = WebInspector.UIString("Paused on a \"%s\" Event Listener.", eventNameForUI); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) { + status.textContent = WebInspector.UIString("Paused on a XMLHttpRequest."); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) { + var description = details.auxData["description"] || ""; + status.textContent = WebInspector.UIString("Paused on exception: '%s'.", description.split("\n", 1)[0]); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection) { + var description = details.auxData["description"] || ""; + status.textContent = WebInspector.UIString("Paused on promise rejection: '%s'.", description.split("\n", 1)[0]); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert) { + status.textContent = WebInspector.UIString("Paused on assertion."); + } else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand) { + status.textContent = WebInspector.UIString("Paused on a debugged function."); + } else { + if (details.callFrames.length) { + var uiLocation = details && details.callFrames.length ? WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : null; + var breakpoint = uiLocation ? WebInspector.breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null; + if (breakpoint) { + status.textContent = WebInspector.UIString("Paused on a JavaScript breakpoint."); + } + } else { + console.warn("ScriptsPanel paused, but callFrames.length is zero."); // TODO remove this once we understand this case better + } + } + status.classList.toggle("hidden", !status.firstChild); }, /** @@ -276,17 +327,6 @@ this._selectNextVisibleCallFrame(0); }, - _updateCallFrame: function() - { - var selectedCallFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); - for (var i = 0; i < this.callFrames.length; ++i) { - var callFrame = this.callFrames[i]; - callFrame.setSelected(callFrame._debuggerCallFrame === selectedCallFrame); - if (callFrame.isSelected() && callFrame.isHidden()) - this._revealHiddenCallFrames(); - } - }, - /** * @return {boolean} */ @@ -354,14 +394,22 @@ }, /** - * @param {!WebInspector.CallStackSidebarPane.CallFrame} callFrameItem + * @param {!WebInspector.CallStackSidebarPane.CallFrame} selectedCallFrame */ - _callFrameSelected: function(callFrameItem) + _callFrameSelected: function(selectedCallFrame) { - callFrameItem.element.scrollIntoViewIfNeeded(); - var callFrame = callFrameItem._debuggerCallFrame; - if (callFrame) - callFrame.debuggerModel.setSelectedCallFrame(callFrame); + selectedCallFrame.element.scrollIntoViewIfNeeded(); + var callFrame = selectedCallFrame._debuggerCallFrame; + + for (var i = 0; i < this.callFrames.length; ++i) { + var callFrameItem = this.callFrames[i]; + callFrameItem.setSelected(callFrameItem === selectedCallFrame); + if (callFrameItem.isSelected() && callFrameItem.isHidden()) + this._revealHiddenCallFrames(); + } + + WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, callFrame); + callFrame.debuggerModel.setSelectedCallFrame(callFrame); }, _copyStackTrace: function() @@ -389,21 +437,6 @@ registerShortcutDelegate(WebInspector.ShortcutsScreen.SourcesPanelShortcuts.PrevCallFrame, this._selectPreviousCallFrameOnStack.bind(this)); }, - /** - * @param {!Element|string} status - */ - setStatus: function(status) - { - if (!this._statusMessageElement) - this._statusMessageElement = this.element.createChild("div", "callstack-info status"); - if (typeof status === "string") { - this._statusMessageElement.textContent = status; - } else { - this._statusMessageElement.removeChildren(); - this._statusMessageElement.appendChild(status); - } - }, - _keyDown: function(event) { if (event.altKey || event.shiftKey || event.metaKey || event.ctrlKey)
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/EventListenerBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/EventListenerBreakpointsSidebarPane.js index 1323224..ba79568 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/EventListenerBreakpointsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/EventListenerBreakpointsSidebarPane.js
@@ -169,7 +169,7 @@ breakpointItem = this._findBreakpointItem(eventName, WebInspector.EventListenerBreakpointsSidebarPane.eventTargetAny); if (!breakpointItem) return; - WebInspector.viewManager.revealViewWithWidget(this); + WebInspector.viewManager.showView("sources.eventListenerBreakpoints"); breakpointItem.parent.element.expand(); breakpointItem.element.listItemElement.classList.add("breakpoint-hit"); this._highlightedElement = breakpointItem.element.listItemElement;
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js index 25c2186..c020981 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptBreakpointsSidebarPane.js
@@ -4,19 +4,17 @@ /** * @constructor - * @extends {WebInspector.SimpleView} - * @param {!WebInspector.BreakpointManager} breakpointManager - * @param {function(!WebInspector.UISourceCode, number=, number=, boolean=)} showSourceLineDelegate + * @extends {WebInspector.VBox} + * @implements {WebInspector.ContextFlavorListener} */ -WebInspector.JavaScriptBreakpointsSidebarPane = function(breakpointManager, showSourceLineDelegate) +WebInspector.JavaScriptBreakpointsSidebarPane = function() { - WebInspector.SimpleView.call(this, WebInspector.UIString("Breakpoints")); + WebInspector.VBox.call(this); this.registerRequiredCSS("components/breakpointsList.css"); - this._breakpointManager = breakpointManager; - this._showSourceLineDelegate = showSourceLineDelegate; + this._breakpointManager = WebInspector.breakpointManager; - this.listElement = createElementWithClass("ol", "breakpoint-list"); + this._listElement = createElementWithClass("ol", "breakpoint-list"); this.emptyElement = this.element.createChild("div", "gray-info-message"); this.emptyElement.textContent = WebInspector.UIString("No Breakpoints"); @@ -31,6 +29,9 @@ this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointRemoved, this._breakpointRemoved, this); this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), true); + this._breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this); + this._breakpointsActiveStateChanged(); + this._update(); } WebInspector.JavaScriptBreakpointsSidebarPane.prototype = { @@ -102,7 +103,7 @@ uiLocation.uiSourceCode.requestContent().then(didRequestContent.bind(this)); element._data = uiLocation; - var currentElement = this.listElement.firstChild; + var currentElement = this._listElement.firstChild; while (currentElement) { if (currentElement._data && this._compareBreakpoints(currentElement._data, element._data) > 0) break; @@ -135,29 +136,44 @@ }, /** - * @param {!WebInspector.BreakpointManager.Breakpoint} breakpoint + * @override + * @param {?Object} object */ - highlightBreakpoint: function(breakpoint) + flavorChanged: function(object) { + this._update(); + }, + + _update: function() + { + var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); + var uiLocation = details && details.callFrames.length ? WebInspector.debuggerWorkspaceBinding.rawLocationToUILocation(details.callFrames[0].location()) : null; + var breakpoint = uiLocation ? this._breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber) : null; var breakpointItem = this._items.get(breakpoint); - if (!breakpointItem) + if (!breakpointItem) { + if (this._highlightedBreakpointItem) { + this._highlightedBreakpointItem.element.classList.remove("breakpoint-hit"); + delete this._highlightedBreakpointItem; + } return; + } + breakpointItem.element.classList.add("breakpoint-hit"); this._highlightedBreakpointItem = breakpointItem; - this.revealView(); + WebInspector.viewManager.showView("sources.jsBreakpoints"); }, - clearBreakpointHighlight: function() + _breakpointsActiveStateChanged: function() { - if (this._highlightedBreakpointItem) { - this._highlightedBreakpointItem.element.classList.remove("breakpoint-hit"); - delete this._highlightedBreakpointItem; - } + this._listElement.classList.toggle("breakpoints-list-deactivated", !this._breakpointManager.breakpointsActive()); }, - _breakpointClicked: function(uiLocation, event) + /** + * @param {!WebInspector.UILocation} uiLocation + */ + _breakpointClicked: function(uiLocation) { - this._showSourceLineDelegate(uiLocation.uiSourceCode, uiLocation.lineNumber); + WebInspector.Revealer.reveal(uiLocation); }, /** @@ -214,21 +230,21 @@ _addListElement: function(element, beforeElement) { if (beforeElement) - this.listElement.insertBefore(element, beforeElement); + this._listElement.insertBefore(element, beforeElement); else { - if (!this.listElement.firstChild) { + if (!this._listElement.firstChild) { this.element.removeChild(this.emptyElement); - this.element.appendChild(this.listElement); + this.element.appendChild(this._listElement); } - this.listElement.appendChild(element); + this._listElement.appendChild(element); } }, _removeListElement: function(element) { - this.listElement.removeChild(element); - if (!this.listElement.firstChild) { - this.element.removeChild(this.listElement); + this._listElement.removeChild(element); + if (!this._listElement.firstChild) { + this.element.removeChild(this._listElement); this.element.appendChild(this.emptyElement); } }, @@ -247,13 +263,13 @@ reset: function() { - this.listElement.removeChildren(); - if (this.listElement.parentElement) { - this.element.removeChild(this.listElement); + this._listElement.removeChildren(); + if (this._listElement.parentElement) { + this.element.removeChild(this._listElement); this.element.appendChild(this.emptyElement); } this._items.clear(); }, - __proto__: WebInspector.SimpleView.prototype + __proto__: WebInspector.VBox.prototype }
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js index d9f09fbe..7368552 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/JavaScriptSourceFrame.js
@@ -60,7 +60,6 @@ /** @type {!Map.<!WebInspector.Target, !WebInspector.ResourceScriptFile>}*/ this._scriptFileForTarget = new Map(); - this._registerShortcuts(); var targets = WebInspector.targetManager.targets(); for (var i = 0; i < targets.length; ++i) { var scriptFile = WebInspector.debuggerWorkspaceBinding.scriptFile(uiSourceCode, targets[i]); @@ -191,57 +190,6 @@ delete this._blackboxInfobar; }, - _registerShortcuts: function() - { - var shortcutKeys = WebInspector.ShortcutsScreen.SourcesPanelShortcuts; - for (var i = 0; i < shortcutKeys.EvaluateSelectionInConsole.length; ++i) { - var keyDescriptor = shortcutKeys.EvaluateSelectionInConsole[i]; - this.addShortcut(keyDescriptor.key, this._evaluateSelectionInConsole.bind(this)); - } - for (var i = 0; i < shortcutKeys.AddSelectionToWatch.length; ++i) { - var keyDescriptor = shortcutKeys.AddSelectionToWatch[i]; - this.addShortcut(keyDescriptor.key, this._addCurrentSelectionToWatch.bind(this)); - } - }, - - _addCurrentSelectionToWatch: function() - { - var textSelection = this.textEditor.selection(); - if (textSelection && !textSelection.isEmpty()) - this._innerAddToWatch(this.textEditor.copyRange(textSelection)); - return true; - }, - - /** - * @param {string} expression - */ - _innerAddToWatch: function(expression) - { - this._scriptsPanel.addToWatch(expression); - }, - - /** - * @return {boolean} - */ - _evaluateSelectionInConsole: function() - { - var selection = this.textEditor.selection(); - if (!selection || selection.isEmpty()) - return true; - this._evaluateInConsole(this.textEditor.copyRange(selection)); - return true; - }, - - /** - * @param {string} expression - */ - _evaluateInConsole: function(expression) - { - var currentExecutionContext = WebInspector.context.flavor(WebInspector.ExecutionContext); - if (currentExecutionContext) - WebInspector.ConsoleModel.evaluateCommandInConsole(currentExecutionContext, expression); - }, - /** * @override */ @@ -316,16 +264,6 @@ */ populateTextAreaContextMenu: function(contextMenu, lineNumber, columnNumber) { - var textSelection = this.textEditor.selection(); - if (textSelection && !textSelection.isEmpty()) { - var selection = this.textEditor.copyRange(textSelection); - var addToWatchLabel = WebInspector.UIString.capitalize("Add to ^watch"); - contextMenu.appendItem(addToWatchLabel, this._innerAddToWatch.bind(this, selection)); - var evaluateLabel = WebInspector.UIString.capitalize("Evaluate in ^console"); - contextMenu.appendItem(evaluateLabel, this._evaluateInConsole.bind(this, selection)); - contextMenu.appendSeparator(); - } - /** * @param {!WebInspector.ResourceScriptFile} scriptFile */ @@ -548,8 +486,8 @@ _resolveObjectForPopover: function(anchorBox, showCallback, objectGroupName) { var target = WebInspector.context.flavor(WebInspector.Target); - var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); - if (!debuggerModel || !debuggerModel.isPaused()) { + var selectedCallFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); + if (!selectedCallFrame) { this._popoverHelper.hidePopover(); return; } @@ -568,8 +506,6 @@ } } var evaluationText = line.substring(startHighlight, endHighlight + 1); - var selectedCallFrame = /** @type {!WebInspector.DebuggerModel.CallFrame}*/ (debuggerModel.selectedCallFrame()); - WebInspector.SourceMapNamesResolver.resolveExpression(selectedCallFrame, evaluationText, this.uiSourceCode(), lineNumber, startHighlight, endHighlight).then(onResolve.bind(this)); /** @@ -589,7 +525,8 @@ function showObjectPopover(result, exceptionDetails) { var target = WebInspector.context.flavor(WebInspector.Target); - if (selectedCallFrame.target() !== target || !debuggerModel.isPaused() || !result) { + var potentiallyUpdatedCallFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); + if (selectedCallFrame !== potentiallyUpdatedCallFrame || !result) { this._popoverHelper.hidePopover(); return; } @@ -720,7 +657,7 @@ var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext); if (!executionContext) return; - var callFrame = executionContext.debuggerModel.selectedCallFrame(); + var callFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); if (!callFrame) return;
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/ScopeChainSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/ScopeChainSidebarPane.js index bf8f418..aef00c7d 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/ScopeChainSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/ScopeChainSidebarPane.js
@@ -26,36 +26,48 @@ /** * @constructor - * @extends {WebInspector.SimpleView} + * @extends {WebInspector.VBox} + * @implements {WebInspector.ContextFlavorListener} */ WebInspector.ScopeChainSidebarPane = function() { - WebInspector.SimpleView.call(this, WebInspector.UIString("Scope")); + WebInspector.VBox.call(this); this._expandController = new WebInspector.ObjectPropertiesSectionExpandController(); this._linkifier = new WebInspector.Linkifier(); - WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this._update, this); + this._update(); } WebInspector.ScopeChainSidebarPane._pathSymbol = Symbol("path"); WebInspector.ScopeChainSidebarPane.prototype = { + /** + * @override + * @param {?Object} object + */ + flavorChanged: function(object) + { + this._update(); + }, + _update: function() { var callFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); + var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); this._linkifier.reset(); WebInspector.SourceMapNamesResolver.resolveThisObject(callFrame) - .then(this._innerUpdate.bind(this, callFrame)); + .then(this._innerUpdate.bind(this, details, callFrame)); }, /** + * @param {?WebInspector.DebuggerPausedDetails} details * @param {?WebInspector.DebuggerModel.CallFrame} callFrame * @param {?WebInspector.RemoteObject} thisObject */ - _innerUpdate: function(callFrame, thisObject) + _innerUpdate: function(details, callFrame, thisObject) { this.element.removeChildren(); - if (!callFrame) { + if (!details || !callFrame) { var infoElement = createElement("div"); infoElement.className = "gray-info-message"; infoElement.textContent = WebInspector.UIString("Not Paused"); @@ -79,7 +91,6 @@ if (thisObject) extraProperties.push(new WebInspector.RemoteObjectProperty("this", thisObject)); if (i === 0) { - var details = callFrame.debuggerModel.debuggerPausedDetails(); var exception = details.exception(); if (exception) extraProperties.push(new WebInspector.RemoteObjectProperty(WebInspector.UIString.capitalize("Exception"), exception, undefined, undefined, undefined, undefined, undefined, true)); @@ -137,5 +148,5 @@ _sidebarPaneUpdatedForTest: function() { }, - __proto__: WebInspector.SimpleView.prototype + __proto__: WebInspector.VBox.prototype }
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js index aa7a895..5348993 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/SourcesPanel.js
@@ -64,7 +64,7 @@ this._splitWidget.setMainWidget(this.editorView); // Create navigator tabbed pane with toolbar. - this._navigatorTabbedLocation = WebInspector.viewManager.createTabbedLocation(this._setAsCurrentPanel.bind(this), "navigator-view", true); + this._navigatorTabbedLocation = WebInspector.viewManager.createTabbedLocation(this._revealNavigatorSidebar.bind(this), "navigator-view", true); var tabbedPane = this._navigatorTabbedLocation.tabbedPane(); tabbedPane.setMinimumSize(100, 25); tabbedPane.setShrinkableTabs(true); @@ -83,14 +83,12 @@ this.editorView.setMainWidget(this._sourcesView); this._editorChanged(this._sourcesView.currentUISourceCode()); - this.sidebarPanes = {}; - this.sidebarPanes.threads = null; - this.sidebarPanes.watchExpressions = new WebInspector.WatchExpressionsSidebarPane(); - this.sidebarPanes.callstack = new WebInspector.CallStackSidebarPane(); - this.sidebarPanes.callstack.registerShortcuts(this.registerShortcuts.bind(this)); - - this.sidebarPanes.scopechain = new WebInspector.ScopeChainSidebarPane(); - this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(WebInspector.breakpointManager, this.showUISourceCode.bind(this)); + this._threadsSidebarPane = null; + this._watchSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.watch")); + // TODO: Force installing listeners from the model, not the UI. + self.runtime.sharedInstance(WebInspector.XHRBreakpointsSidebarPane); + this._callstackPane = self.runtime.sharedInstance(WebInspector.CallStackSidebarPane); + this._callstackPane.registerShortcuts(this.registerShortcuts.bind(this)); this._installDebuggerSidebarController(); @@ -106,10 +104,10 @@ this._setTarget(WebInspector.context.flavor(WebInspector.Target)); WebInspector.breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.BreakpointsActiveStateChanged, this._breakpointsActiveStateChanged, this); WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._onCurrentTargetChanged, this); + WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this._callFrameChanged, this); WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerWasEnabled, this._debuggerWasEnabled, this); WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this); WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerResumed, this._debuggerResumed, this); - WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.CallFrameSelected, this._callFrameSelectedOnModel, this); WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.GlobalObjectCleared, this._debuggerReset, this); new WebInspector.WorkspaceMappingTip(this, this._workspace); WebInspector.extensionServer.addEventListener(WebInspector.ExtensionServer.Events.SidebarPaneAdded, this._extensionSidebarPaneAdded, this); @@ -137,10 +135,10 @@ targetAdded: function(target) { var hasThreads = WebInspector.targetManager.targets(WebInspector.Target.Capability.JS).length > 1; - if (hasThreads && !this.sidebarPanes.threads) { - this.sidebarPanes.threads = new WebInspector.ThreadsSidebarPane(); + if (hasThreads && !this._threadsSidebarPane) { + this._threadsSidebarPane = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.threads")); if (this._sidebarPaneStack) { - this._sidebarPaneStack.showView(this.sidebarPanes.threads, this._splitWidget.isVertical() ? this.sidebarPanes.watchExpressions : this.sidebarPanes.callstack); + this._sidebarPaneStack.showView(this._threadsSidebarPane, this._splitWidget.isVertical() ? this._watchSidebarPane : this._callstackPane); } } }, @@ -166,9 +164,6 @@ if (debuggerModel.isPaused()) { this._showDebuggerPausedDetails(/** @type {!WebInspector.DebuggerPausedDetails} */ (debuggerModel.debuggerPausedDetails())); - var callFrame = debuggerModel.selectedCallFrame(); - if (callFrame) - this._selectCallFrameInUI(callFrame); } else { this._paused = false; this._clearInterface(); @@ -275,49 +270,7 @@ { this._paused = true; this._updateDebuggerButtons(); - - /** - * @param {!WebInspector.LiveLocation} liveLocation - * @this {WebInspector.SourcesPanel} - */ - function didGetUILocation(liveLocation) - { - var uiLocation = liveLocation.uiLocation(); - if (!uiLocation) - return; - var breakpoint = WebInspector.breakpointManager.findBreakpointOnLine(uiLocation.uiSourceCode, uiLocation.lineNumber); - if (!breakpoint) - return; - this.sidebarPanes.jsBreakpoints.highlightBreakpoint(breakpoint); - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a JavaScript breakpoint.")); - } - - if (details.reason === WebInspector.DebuggerModel.BreakReason.DOM) { - this.sidebarPanes.callstack.setStatus(WebInspector.domBreakpointsSidebarPane.createBreakpointHitStatusMessage(details)); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.EventListener) { - var eventName = details.auxData["eventName"]; - var eventNameForUI = WebInspector.EventListenerBreakpointsSidebarPane.eventNameForUI(eventName, details.auxData); - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a \"%s\" Event Listener.", eventNameForUI)); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.XHR) { - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a XMLHttpRequest.")); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Exception) { - var description = details.auxData["description"] || ""; - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on exception: '%s'.", description.split("\n", 1)[0])); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.PromiseRejection) { - var description = details.auxData["description"] || ""; - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on promise rejection: '%s'.", description.split("\n", 1)[0])); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.Assert) { - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on assertion.")); - } else if (details.reason === WebInspector.DebuggerModel.BreakReason.DebugCommand) { - this.sidebarPanes.callstack.setStatus(WebInspector.UIString("Paused on a debugged function.")); - } else { - if (details.callFrames.length) - WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(details.callFrames[0].location(), didGetUILocation.bind(this), this._liveLocationPool); - else - console.warn("ScriptsPanel paused, but callFrames.length is zero."); // TODO remove this once we understand this case better - } - - this._splitWidget.showBoth(true); + WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, details); this._toggleDebuggerSidebarButton.disabled = true; window.focus(); InspectorFrontendHost.bringToFront(); @@ -472,24 +425,14 @@ WebInspector.SourcesPanel._lastModificationTimeout = Number.MAX_VALUE; }, - /** - * @param {!WebInspector.Event} event - */ - _callFrameSelectedOnModel: function(event) + _callFrameChanged: function() { - var callFrame = /** @type {?WebInspector.DebuggerModel.CallFrame} */ (event.data); - if (!callFrame || callFrame.target() !== WebInspector.context.flavor(WebInspector.Target)) + var callFrame = WebInspector.context.flavor(WebInspector.DebuggerModel.CallFrame); + if (!callFrame) return; - this._selectCallFrameInUI(callFrame); - }, - - /** - * @param {!WebInspector.DebuggerModel.CallFrame} callFrame - */ - _selectCallFrameInUI: function(callFrame) - { - WebInspector.context.setFlavor(WebInspector.DebuggerModel.CallFrame, callFrame); - WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(callFrame.location(), this._executionLineChanged.bind(this), this._liveLocationPool); + if (this._executionLineLocation) + this._executionLineLocation.dispose(); + this._executionLineLocation = WebInspector.debuggerWorkspaceBinding.createCallFrameLiveLocation(callFrame.location(), this._executionLineChanged.bind(this), this._liveLocationPool); }, _pauseOnExceptionEnabledChanged: function() @@ -526,10 +469,9 @@ _clearInterface: function() { - this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight(); - this._sourcesView.clearCurrentExecutionLine(); this._updateDebuggerButtons(); + WebInspector.context.setFlavor(WebInspector.DebuggerPausedDetails, null); if (this._switchToPausedTargetTimeout) clearTimeout(this._switchToPausedTargetTimeout); @@ -727,7 +669,6 @@ { var active = event.data; this._toggleBreakpointsActiveAction.setToggled(!active); - this.sidebarPanes.jsBreakpoints.listElement.classList.toggle("breakpoints-list-deactivated", !active); this._sourcesView.toggleBreakpointsActiveState(active); }, @@ -773,11 +714,6 @@ return debugToolbarDrawer; }, - addToWatch: function(expression) - { - this.sidebarPanes.watchExpressions.addExpression(expression); - }, - _installDebuggerSidebarController: function() { this.editorView.displayShowHideSidebarButton("navigator"); @@ -804,6 +740,7 @@ this.appendUILocationItems(contextMenu, target); this._appendRemoteObjectItems(contextMenu, target); this._appendNetworkRequestItems(contextMenu, target); + contextMenu.appendAction("debugger.evaluate-selection"); }, /** @@ -927,7 +864,7 @@ } if (contentType.hasScripts() && projectType !== WebInspector.projectTypes.Snippets) - this.sidebarPanes.callstack.appendBlackboxURLContextMenuItems(contextMenu, uiSourceCode); + this._callstackPane.appendBlackboxURLContextMenuItems(contextMenu, uiSourceCode); }, /** @@ -1064,6 +1001,18 @@ this._sourcesView.showOpenResourceDialog(); }, + _revealNavigatorSidebar: function() + { + this._setAsCurrentPanel(); + this.editorView.showBoth(true); + }, + + _revealDebuggerSidebar: function() + { + this._setAsCurrentPanel(); + this._splitWidget.showBoth(true); + }, + _updateSidebarPosition: function() { var vertically; @@ -1093,31 +1042,25 @@ var vbox = new WebInspector.VBox(); vbox.element.appendChild(this._debugToolbarDrawer); vbox.setMinimumAndPreferredSizes(25, 25, WebInspector.SourcesPanel.minToolbarWidth, 100); - this._sidebarPaneStack = WebInspector.viewManager.createStackLocation(this._setAsCurrentPanel.bind(this)); + this._sidebarPaneStack = WebInspector.viewManager.createStackLocation(this._revealDebuggerSidebar.bind(this)); this._sidebarPaneStack.widget().element.classList.add("overflow-auto"); this._sidebarPaneStack.widget().show(vbox.element); vbox.element.appendChild(this._debugToolbar.element); - if (this.sidebarPanes.threads) - this._sidebarPaneStack.showView(this.sidebarPanes.threads); + if (this._threadsSidebarPane) + this._sidebarPaneStack.showView(this._threadsSidebarPane); - if (!vertically) { - if (this.sidebarPanes.watchExpressions.hasExpressions()) - this._sidebarPaneStack.showView(this.sidebarPanes.watchExpressions); - else - this._sidebarPaneStack.appendView(this.sidebarPanes.watchExpressions); - } + if (!vertically) + this._sidebarPaneStack.appendView(this._watchSidebarPane); - this._sidebarPaneStack.showView(this.sidebarPanes.callstack); + this._sidebarPaneStack.showView(this._callstackPane); + var jsBreakpoints = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.jsBreakpoints")); + var scopeChainView = /** @type {!WebInspector.View} */ (WebInspector.viewManager.view("sources.scopeChain")); if (!vertically) { // Populate the rest of the stack. - this._sidebarPaneStack.showView(this.sidebarPanes.scopechain); - this._sidebarPaneStack.showView(this.sidebarPanes.jsBreakpoints); - for (var pane in this.sidebarPanes) { - if (this.sidebarPanes[pane]) - this._sidebarPaneStack.appendView(this.sidebarPanes[pane]); - } + this._sidebarPaneStack.showView(scopeChainView); + this._sidebarPaneStack.showView(jsBreakpoints); this._extensionSidebarPanesContainer = this._sidebarPaneStack; this.sidebarPaneView = vbox; } else { @@ -1125,12 +1068,12 @@ splitWidget.setMainWidget(vbox); // Populate the left stack. - this._sidebarPaneStack.showView(this.sidebarPanes.jsBreakpoints); + this._sidebarPaneStack.showView(jsBreakpoints); - var tabbedLocation = WebInspector.viewManager.createTabbedLocation(this._setAsCurrentPanel.bind(this)); + var tabbedLocation = WebInspector.viewManager.createTabbedLocation(this._revealDebuggerSidebar.bind(this)); splitWidget.setSidebarWidget(tabbedLocation.tabbedPane()); - tabbedLocation.appendView(this.sidebarPanes.scopechain); - tabbedLocation.appendView(this.sidebarPanes.watchExpressions); + tabbedLocation.appendView(scopeChainView); + tabbedLocation.appendView(this._watchSidebarPane); this._extensionSidebarPanesContainer = tabbedLocation; this.sidebarPaneView = splitWidget; } @@ -1193,27 +1136,6 @@ /** * @constructor - * @implements {WebInspector.ContextMenu.Provider} - */ -WebInspector.SourcesPanel.ContextMenuProvider = function() -{ -} - -WebInspector.SourcesPanel.ContextMenuProvider.prototype = { - /** - * @override - * @param {!Event} event - * @param {!WebInspector.ContextMenu} contextMenu - * @param {!Object} target - */ - appendApplicableItems: function(event, contextMenu, target) - { - WebInspector.SourcesPanel.instance().appendApplicableItems(event, contextMenu, target); - } -} - -/** - * @constructor * @implements {WebInspector.Revealer} */ WebInspector.SourcesPanel.UILocationRevealer = function() @@ -1369,6 +1291,15 @@ case "debugger.toggle-breakpoints-active": panel._toggleBreakpointsActive(); return true; + case "debugger.evaluate-selection": + var frame = WebInspector.context.flavor(WebInspector.UISourceCodeFrame); + if (frame) { + var text = frame.textEditor.copyRange(frame.textEditor.selection()); + var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext); + if (executionContext) + WebInspector.ConsoleModel.evaluateCommandInConsole(executionContext, text); + } + return true; } return false; }
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/TabbedEditorContainer.js b/third_party/WebKit/Source/devtools/front_end/sources/TabbedEditorContainer.js index 7178c350..fcbe434 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/TabbedEditorContainer.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/TabbedEditorContainer.js
@@ -214,6 +214,7 @@ var previousView = this._currentView; this._currentView = this.visibleView; + WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, this._currentView instanceof WebInspector.UISourceCodeFrame ? this._currentView : null); this._addViewListeners(); var eventData = { @@ -249,9 +250,12 @@ // FIXME: this should be replaced with common Save/Discard/Cancel dialog. if (!shouldPrompt || confirm(WebInspector.UIString("Are you sure you want to close unsaved file: %s?", uiSourceCode.name()))) { uiSourceCode.resetWorkingCopy(); + var previousView = this._currentView; if (nextTabId) this._tabbedPane.selectTab(nextTabId, true); this._tabbedPane.closeTab(id, true); + if (WebInspector.context.flavor(WebInspector.UISourceCodeFrame) === previousView) + WebInspector.context.setFlavor(WebInspector.UISourceCodeFrame, null); return true; } return false;
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/ThreadsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/ThreadsSidebarPane.js index dbd0fc7..cc92481 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/ThreadsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/ThreadsSidebarPane.js
@@ -4,12 +4,12 @@ /** * @constructor - * @extends {WebInspector.SimpleView} + * @extends {WebInspector.VBox} * @implements {WebInspector.TargetManager.Observer} */ WebInspector.ThreadsSidebarPane = function() { - WebInspector.SimpleView.call(this, WebInspector.UIString("Threads")); + WebInspector.VBox.call(this); /** @type {!Map.<!WebInspector.DebuggerModel, !WebInspector.UIList.Item>} */ this._debuggerModelToListItems = new Map(); @@ -137,5 +137,5 @@ }, - __proto__: WebInspector.SimpleView.prototype + __proto__: WebInspector.VBox.prototype }
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js b/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js index 17b212f..2d3f006e 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js
@@ -242,7 +242,6 @@ { contextMenu.appendApplicableItems(this._uiSourceCode); contextMenu.appendApplicableItems(new WebInspector.UILocation(this._uiSourceCode, lineNumber, columnNumber)); - contextMenu.appendSeparator(); } return WebInspector.SourceFrame.prototype.populateTextAreaContextMenu.call(this, contextMenu, lineNumber, columnNumber)
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/WatchExpressionsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/WatchExpressionsSidebarPane.js index 1325380..728b3073 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/WatchExpressionsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/WatchExpressionsSidebarPane.js
@@ -30,58 +30,43 @@ /** * @constructor - * @extends {WebInspector.SimpleView} + * @extends {WebInspector.ThrottledWidget} + * @implements {WebInspector.ActionDelegate} + * @implements {WebInspector.ToolbarItem.ItemsProvider} + * @implements {WebInspector.ContextMenu.Provider} */ WebInspector.WatchExpressionsSidebarPane = function() { - WebInspector.SimpleView.call(this, WebInspector.UIString("Watch")); + WebInspector.ThrottledWidget.call(this); this.registerRequiredCSS("components/objectValue.css"); - this._requiresUpdate = true; /** @type {!Array.<!WebInspector.WatchExpression>} */ this._watchExpressions = []; this._watchExpressionsSetting = WebInspector.settings.createLocalSetting("watchExpressions", []); - var addButton = new WebInspector.ToolbarButton(WebInspector.UIString("Add expression"), "add-toolbar-item"); - addButton.addEventListener("click", this._addButtonClicked.bind(this)); - this.addToolbarItem(addButton); - var refreshButton = new WebInspector.ToolbarButton(WebInspector.UIString("Refresh"), "refresh-toolbar-item"); - refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this)); - this.addToolbarItem(refreshButton); + this._addButton = new WebInspector.ToolbarButton(WebInspector.UIString("Add expression"), "add-toolbar-item"); + this._addButton.addEventListener("click", this._addButtonClicked.bind(this)); + this._refreshButton = new WebInspector.ToolbarButton(WebInspector.UIString("Refresh"), "refresh-toolbar-item"); + this._refreshButton.addEventListener("click", this._refreshButtonClicked.bind(this)); this._bodyElement = this.element.createChild("div", "vbox watch-expressions"); this._bodyElement.addEventListener("contextmenu", this._contextMenu.bind(this), false); this._expandController = new WebInspector.ObjectPropertiesSectionExpandController(); - WebInspector.context.addFlavorChangeListener(WebInspector.ExecutionContext, this._refreshExpressions, this); - WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this._refreshExpressions, this); + WebInspector.context.addFlavorChangeListener(WebInspector.ExecutionContext, this.update, this); + WebInspector.context.addFlavorChangeListener(WebInspector.DebuggerModel.CallFrame, this.update, this); this._linkifier = new WebInspector.Linkifier(); + this.update(); } WebInspector.WatchExpressionsSidebarPane.prototype = { - wasShown: function() - { - this._refreshExpressionsIfNeeded(); - }, - - _refreshExpressions: function() - { - this._requiresUpdate = true; - this._refreshExpressionsIfNeeded(); - }, - /** - * @param {string} expressionString + * @override + * @return {!Array<!WebInspector.ToolbarItem>} */ - addExpression: function(expressionString) + toolbarItems: function() { - this.revealView(); - if (this._requiresUpdate) { - this._rebuildWatchExpressions(); - delete this._requiresUpdate; - } - this._createWatchExpression(expressionString); - this._saveExpressions(); + return [this._addButton, this._refreshButton]; }, /** @@ -102,15 +87,6 @@ this._watchExpressionsSetting.set(toSave); }, - _refreshExpressionsIfNeeded: function() - { - if (this._requiresUpdate && this.isShowing()) { - this._rebuildWatchExpressions(); - delete this._requiresUpdate; - } else - this._requiresUpdate = true; - }, - /** * @param {!WebInspector.Event=} event */ @@ -118,7 +94,7 @@ { if (event) event.consume(true); - this.revealView(); + WebInspector.viewManager.showView("sources.watch"); this._createWatchExpression(null).startEditing(); }, @@ -128,10 +104,14 @@ _refreshButtonClicked: function(event) { event.consume(); - this._refreshExpressions(); + this.update(); }, - _rebuildWatchExpressions: function() + /** + * @override + * @return {!Promise.<?>} + */ + doUpdate: function() { this._linkifier.reset(); this._bodyElement.removeChildren(); @@ -146,6 +126,7 @@ this._createWatchExpression(expression); } + return Promise.resolve(); }, /** @@ -212,10 +193,40 @@ { this._watchExpressions = []; this._saveExpressions(); - this._rebuildWatchExpressions(); + this.update(); }, - __proto__: WebInspector.SimpleView.prototype + /** + * @override + * @param {!WebInspector.Context} context + * @param {string} actionId + * @return {boolean} + */ + handleAction: function(context, actionId) + { + var frame = WebInspector.context.flavor(WebInspector.UISourceCodeFrame); + if (!frame) + return false; + var text = frame.textEditor.copyRange(frame.textEditor.selection()); + WebInspector.viewManager.showView("sources.watch"); + this.doUpdate(); + this._createWatchExpression(text); + this._saveExpressions(); + return true; + }, + + /** + * @override + * @param {!Event} event + * @param {!WebInspector.ContextMenu} contextMenu + * @param {!Object} target + */ + appendApplicableItems: function(event, contextMenu, target) + { + contextMenu.appendAction("sources.add-to-watch"); + }, + + __proto__: WebInspector.ThrottledWidget.prototype } /**
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/XHRBreakpointsSidebarPane.js b/third_party/WebKit/Source/devtools/front_end/sources/XHRBreakpointsSidebarPane.js index 0e228dd5..9acc0a3 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/XHRBreakpointsSidebarPane.js +++ b/third_party/WebKit/Source/devtools/front_end/sources/XHRBreakpointsSidebarPane.js
@@ -5,6 +5,7 @@ /** * @constructor * @extends {WebInspector.BreakpointsSidebarPaneBase} + * @implements {WebInspector.ContextFlavorListener} * @implements {WebInspector.TargetManager.Observer} * @implements {WebInspector.ToolbarItem.ItemsProvider} */ @@ -20,8 +21,8 @@ this._addButton.addEventListener("click", this._addButtonClicked.bind(this)); this.emptyElement.addEventListener("contextmenu", this._emptyElementContextMenu.bind(this), true); - WebInspector.targetManager.observeTargets(this, WebInspector.Target.Capability.Browser); + this._update(); } WebInspector.XHRBreakpointsSidebarPane.prototype = { @@ -61,7 +62,7 @@ if (event) event.consume(); - WebInspector.viewManager.revealViewWithWidget(this); + WebInspector.viewManager.showView("sources.xhrBreakpoints"); var inputElementContainer = createElementWithClass("p", "breakpoint-condition"); inputElementContainer.textContent = WebInspector.UIString("Break when URL contains:"); @@ -223,10 +224,16 @@ /** * @override - * @param {?WebInspector.DebuggerPausedDetails} details + * @param {?Object} object */ - highlightDetails: function(details) + flavorChanged: function(object) { + this._update(); + }, + + _update: function() + { + var details = WebInspector.context.flavor(WebInspector.DebuggerPausedDetails); if (!details || details.reason !== WebInspector.DebuggerModel.BreakReason.XHR) { if (this._highlightedElement) { this._highlightedElement.classList.remove("breakpoint-hit"); @@ -238,7 +245,7 @@ var element = this._breakpointElements.get(url); if (!element) return; - WebInspector.viewManager.revealViewWithWidget(this); + WebInspector.viewManager.showView("sources.xhrBreakpoints"); element.classList.add("breakpoint-hit"); this._highlightedElement = element; },
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/module.json b/third_party/WebKit/Source/devtools/front_end/sources/module.json index ace91f8..afeede4 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/module.json +++ b/third_party/WebKit/Source/devtools/front_end/sources/module.json
@@ -9,8 +9,8 @@ }, { "type": "@WebInspector.ContextMenu.Provider", - "contextTypes": ["WebInspector.UISourceCode", "WebInspector.UILocation", "WebInspector.RemoteObject", "WebInspector.NetworkRequest"], - "className": "WebInspector.SourcesPanel.ContextMenuProvider" + "contextTypes": ["WebInspector.UISourceCode", "WebInspector.UILocation", "WebInspector.RemoteObject", "WebInspector.NetworkRequest", "WebInspector.UISourceCodeFrame"], + "className": "WebInspector.SourcesPanel" }, { "type": "@WebInspector.ActionDelegate", @@ -146,6 +146,35 @@ ] }, { + "type": "@WebInspector.ActionDelegate", + "actionId": "sources.add-to-watch", + "className": "WebInspector.WatchExpressionsSidebarPane", + "title": "Add selected text to watches", + "contextTypes": ["WebInspector.UISourceCodeFrame"], + "bindings": [ + { + "shortcut": "Ctrl+Shift+A'" + } + ] + }, + { + "type": "@WebInspector.ContextMenu.Provider", + "contextTypes": ["WebInspector.CodeMirrorTextEditor"], + "className": "WebInspector.WatchExpressionsSidebarPane" + }, + { + "type": "@WebInspector.ActionDelegate", + "actionId": "debugger.evaluate-selection", + "className": "WebInspector.SourcesPanel.DebuggingActionDelegate", + "title": "Evaluate in console", + "contextTypes": ["WebInspector.UISourceCodeFrame"], + "bindings": [ + { + "shortcut": "Ctrl+E'" + } + ] + }, + { "type": "context-menu-item", "location": "mainMenu/navigate", "actionId": "sources.search.toggle" @@ -408,6 +437,60 @@ "order": 9, "persistence": "permanent", "className": "WebInspector.EventListenerBreakpointsSidebarPane" + }, + { + "type": "view", + "id": "sources.threads", + "title": "Threads", + "persistence": "permanent", + "className": "WebInspector.ThreadsSidebarPane" + }, + { + "type": "view", + "id": "sources.scopeChain", + "title": "Scope", + "persistence": "permanent", + "className": "WebInspector.ScopeChainSidebarPane" + }, + { + "type": "view", + "id": "sources.watch", + "title": "Watch", + "hasToolbar": true, + "persistence": "permanent", + "className": "WebInspector.WatchExpressionsSidebarPane" + }, + { + "type": "view", + "id": "sources.jsBreakpoints", + "title": "Breakpoints", + "persistence": "permanent", + "className": "WebInspector.JavaScriptBreakpointsSidebarPane" + }, + { + "type": "@WebInspector.ContextFlavorListener", + "contextTypes": ["WebInspector.DebuggerPausedDetails"], + "className": "WebInspector.JavaScriptBreakpointsSidebarPane" + }, + { + "type": "@WebInspector.ContextFlavorListener", + "contextTypes": ["WebInspector.DebuggerPausedDetails"], + "className": "WebInspector.XHRBreakpointsSidebarPane" + }, + { + "type": "@WebInspector.ContextFlavorListener", + "contextTypes": ["WebInspector.DebuggerPausedDetails"], + "className": "WebInspector.DOMBreakpointsSidebarPane" + }, + { + "type": "@WebInspector.ContextFlavorListener", + "contextTypes": ["WebInspector.DebuggerPausedDetails"], + "className": "WebInspector.CallStackSidebarPane" + }, + { + "type": "@WebInspector.ContextFlavorListener", + "contextTypes": ["WebInspector.DebuggerModel.CallFrame"], + "className": "WebInspector.ScopeChainSidebarPane" } ], "dependencies": [
diff --git a/third_party/WebKit/Source/devtools/front_end/sources/uiList.css b/third_party/WebKit/Source/devtools/front_end/sources/uiList.css index 0cf14f83..bc149b2 100644 --- a/third_party/WebKit/Source/devtools/front_end/sources/uiList.css +++ b/third_party/WebKit/Source/devtools/front_end/sources/uiList.css
@@ -10,6 +10,9 @@ min-height: 18px; white-space: nowrap; line-height: 20px; +} + +.list-item:not(:last-child) { border-bottom: 1px solid #eee; }
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/Context.js b/third_party/WebKit/Source/devtools/front_end/ui/Context.js index 9ee5fb85..c657cb1 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/Context.js +++ b/third_party/WebKit/Source/devtools/front_end/ui/Context.js
@@ -44,6 +44,10 @@ */ _dispatchFlavorChange: function(flavorType, flavorValue) { + self.runtime.extensions(WebInspector.ContextFlavorListener, flavorValue).map(extension => { + extension.instance().then(instance => /** @type {!WebInspector.ContextFlavorListener} */ (instance).flavorChanged(flavorValue)); + }); + var dispatcher = this._eventDispatchers.get(flavorType); if (!dispatcher) return; @@ -116,4 +120,16 @@ } } +/** + * @interface + */ +WebInspector.ContextFlavorListener = function() { } + +WebInspector.ContextFlavorListener.prototype = { + /** + * @param {?Object} object + */ + flavorChanged: function(object) { } +} + WebInspector.context = new WebInspector.Context();
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/View.js b/third_party/WebKit/Source/devtools/front_end/ui/View.js index 5b866d8..a5f3fe2b 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/View.js +++ b/third_party/WebKit/Source/devtools/front_end/ui/View.js
@@ -302,16 +302,6 @@ WebInspector.ViewManager.prototype = { /** - * @param {!WebInspector.Widget} widget - */ - revealViewWithWidget: function(widget) - { - var view = widget[WebInspector.View._symbol]; - if (view) - this.revealView(view); - }, - - /** * @param {!WebInspector.View} view * @return {!Promise} */ @@ -326,6 +316,15 @@ /** * @param {string} viewId + * @return {?WebInspector.View} + */ + view: function(viewId) + { + return this._views.get(viewId); + }, + + /** + * @param {string} viewId * @return {!Promise} */ showView: function(viewId) @@ -335,13 +334,20 @@ console.error("Could not find view for id: '" + viewId + "' " + new Error().stack); return Promise.resolve(); } + var locationName = this._locationNameByViewId.get(viewId); if (locationName === "drawer-view") WebInspector.userMetrics.drawerShown(viewId); + var location = view[WebInspector.ViewManager._Location.symbol]; + if (location) { + location._reveal(); + return location.showView(view); + } + return this._resolveLocation(locationName).then(location => { if (!location) - return; + throw new Error("Could not resolve location for view: " + viewId); location._reveal(); return location.showView(view); }); @@ -672,6 +678,7 @@ throw new Error("Insert before in tabbed pane is not supported"); if (!this._tabbedPane.hasTab(view.viewId())) { view[WebInspector.ViewManager._Location.symbol] = this; + this._manager._views.set(view.viewId(), view); this._views.set(view.viewId(), view); this._appendTab(view); } @@ -772,6 +779,7 @@ var container = this._expandableContainers.get(view.viewId()); if (!container) { view[WebInspector.ViewManager._Location.symbol] = this; + this._manager._views.set(view.viewId(), view); container = new WebInspector.ViewManager._ExpandableContainerWidget(view); var beforeElement = null; if (insertBefore) {
diff --git a/third_party/WebKit/Source/modules/compositorworker/CompositorWorker.idl b/third_party/WebKit/Source/modules/compositorworker/CompositorWorker.idl index d2396e6..66f30a7 100644 --- a/third_party/WebKit/Source/modules/compositorworker/CompositorWorker.idl +++ b/third_party/WebKit/Source/modules/compositorworker/CompositorWorker.idl
@@ -3,6 +3,7 @@ // found in the LICENSE file. [ + ActiveScriptWrappable, DependentLifetime, Constructor(DOMString scriptUrl), ConstructorCallWith=ExecutionContext,
diff --git a/third_party/WebKit/Source/modules/fetch/Request.idl b/third_party/WebKit/Source/modules/fetch/Request.idl index 6869bb8..907a0fbb 100644 --- a/third_party/WebKit/Source/modules/fetch/Request.idl +++ b/third_party/WebKit/Source/modules/fetch/Request.idl
@@ -26,6 +26,7 @@ }; [ + ActiveScriptWrappable, Constructor(RequestInfo input, optional Dictionary requestInitDict), ConstructorCallWith=ScriptState, Exposed=(Window,Worker),
diff --git a/third_party/WebKit/Source/modules/sensor/Sensor.idl b/third_party/WebKit/Source/modules/sensor/Sensor.idl index f470931c..3b45615 100644 --- a/third_party/WebKit/Source/modules/sensor/Sensor.idl +++ b/third_party/WebKit/Source/modules/sensor/Sensor.idl
@@ -13,6 +13,7 @@ }; [ + ActiveScriptWrappable, RuntimeEnabled=Sensor, ] interface Sensor : EventTarget { readonly attribute SensorState state;
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp b/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp index bbcd5208..c9d4b0f 100644 --- a/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/AudioNode.cpp
@@ -51,7 +51,6 @@ , m_channelCount(2) , m_channelCountMode(Max) , m_channelInterpretation(AudioBus::Speakers) - , m_newChannelCountMode(Max) { setNodeType(nodeType); @@ -96,8 +95,6 @@ ASSERT(isMainThread()); ASSERT(context()->isGraphOwner()); - context()->deferredTaskHandler().removeChangedChannelCountMode(this); - context()->deferredTaskHandler().removeChangedChannelInterpretation(this); context()->deferredTaskHandler().removeAutomaticPullNode(this); for (auto& output : m_outputs) output->dispose(); @@ -213,7 +210,7 @@ if (channelCount > 0 && channelCount <= BaseAudioContext::maxNumberOfChannels()) { if (m_channelCount != channelCount) { m_channelCount = channelCount; - if (m_channelCountMode != Max) + if (internalChannelCountMode() != Max) updateChannelsForInputs(); } } else { @@ -231,7 +228,7 @@ String AudioHandler::channelCountMode() { - switch (m_channelCountMode) { + switch (internalChannelCountMode()) { case Max: return "max"; case ClampedMax: @@ -248,25 +245,24 @@ ASSERT(isMainThread()); BaseAudioContext::AutoLocker locker(context()); - ChannelCountMode oldMode = m_channelCountMode; - if (mode == "max") { - m_newChannelCountMode = Max; + setInternalChannelCountMode(Max); } else if (mode == "clamped-max") { - m_newChannelCountMode = ClampedMax; + setInternalChannelCountMode(ClampedMax); } else if (mode == "explicit") { - m_newChannelCountMode = Explicit; + setInternalChannelCountMode(Explicit); } else { ASSERT_NOT_REACHED(); } - if (m_newChannelCountMode != oldMode) - context()->deferredTaskHandler().addChangedChannelCountMode(this); + // Changing the channel count mode can affect the number of output channels; + // Propagate this change. + updateChannelsForInputs(); } String AudioHandler::channelInterpretation() { - switch (m_channelInterpretation) { + switch (internalChannelInterpretation()) { case AudioBus::Speakers: return "speakers"; case AudioBus::Discrete: @@ -281,18 +277,18 @@ ASSERT(isMainThread()); BaseAudioContext::AutoLocker locker(context()); - AudioBus::ChannelInterpretation oldMode = m_channelInterpretation; - if (interpretation == "speakers") { - m_newChannelInterpretation = AudioBus::Speakers; + setInternalChannelInterpretation(AudioBus::Speakers); } else if (interpretation == "discrete") { - m_newChannelInterpretation = AudioBus::Discrete; + setInternalChannelInterpretation(AudioBus::Discrete); } else { ASSERT_NOT_REACHED(); } - if (m_newChannelInterpretation != oldMode) - context()->deferredTaskHandler().addChangedChannelInterpretation(this); + // Changing the channel interpretation doesn't change the number of output + // channels, so we don't need to do any update here. The contents of each + // channel may change, of course, but that doesn't require updating the + // nodes for a different number of channels. } void AudioHandler::updateChannelsForInputs() @@ -506,17 +502,6 @@ #endif // DEBUG_AUDIONODE_REFERENCES -void AudioHandler::updateChannelCountMode() -{ - m_channelCountMode = m_newChannelCountMode; - updateChannelsForInputs(); -} - -void AudioHandler::updateChannelInterpretation() -{ - m_channelInterpretation = m_newChannelInterpretation; -} - unsigned AudioHandler::numberOfOutputChannels() const { // This should only be called for ScriptProcessorNodes which are the only nodes where you can
diff --git a/third_party/WebKit/Source/modules/webaudio/AudioNode.h b/third_party/WebKit/Source/modules/webaudio/AudioNode.h index 2c12012..28f2cde 100644 --- a/third_party/WebKit/Source/modules/webaudio/AudioNode.h +++ b/third_party/WebKit/Source/modules/webaudio/AudioNode.h
@@ -212,11 +212,27 @@ String channelInterpretation(); void setChannelInterpretation(const String&, ExceptionState&); - ChannelCountMode internalChannelCountMode() const { return m_channelCountMode; } - AudioBus::ChannelInterpretation internalChannelInterpretation() const { return m_channelInterpretation; } + void setInternalChannelCountMode(ChannelCountMode newMode) + { + releaseStore(&m_channelCountMode, newMode); + } - void updateChannelCountMode(); - void updateChannelInterpretation(); + ChannelCountMode internalChannelCountMode() const + { + return static_cast<ChannelCountMode>( + acquireLoad(&m_channelCountMode)); + } + + void setInternalChannelInterpretation(unsigned newValue) + { + releaseStore(&m_channelInterpretation, newValue); + } + + AudioBus::ChannelInterpretation internalChannelInterpretation() const + { + return static_cast<AudioBus::ChannelInterpretation>( + acquireLoad(&m_channelInterpretation)); + } protected: // Inputs and outputs must be created before the AudioHandler is @@ -268,15 +284,13 @@ protected: unsigned m_channelCount; - ChannelCountMode m_channelCountMode; - AudioBus::ChannelInterpretation m_channelInterpretation; - // The new channel count mode that will be used to set the actual mode in the pre or post - // rendering phase. - ChannelCountMode m_newChannelCountMode; - // The new channel interpretation that will be used to set the actual - // intepretation in the pre or post rendering phase. - AudioBus::ChannelInterpretation m_newChannelInterpretation; +private: + // These are private to force use of the setters and getters. + + // The internal representation of the channel count mode and interpretation. + unsigned m_channelCountMode; + unsigned m_channelInterpretation; }; class MODULES_EXPORT AudioNode : public EventTargetWithInlineData {
diff --git a/third_party/WebKit/Source/modules/webaudio/ChannelMergerNode.cpp b/third_party/WebKit/Source/modules/webaudio/ChannelMergerNode.cpp index c19aad8..be7a766 100644 --- a/third_party/WebKit/Source/modules/webaudio/ChannelMergerNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/ChannelMergerNode.cpp
@@ -43,7 +43,7 @@ { // These properties are fixed for the node and cannot be changed by user. m_channelCount = 1; - m_channelCountMode = Explicit; + setInternalChannelCountMode(Explicit); // Create the requested number of inputs. for (unsigned i = 0; i < numberOfInputs; ++i)
diff --git a/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp b/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp index 2f2b30e7d..b85db60f 100644 --- a/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/ConvolverNode.cpp
@@ -51,8 +51,8 @@ // Node-specific default mixing rules. m_channelCount = 2; - m_channelCountMode = ClampedMax; - m_channelInterpretation = AudioBus::Speakers; + setInternalChannelCountMode(ClampedMax); + setInternalChannelInterpretation(AudioBus::Speakers); initialize(); }
diff --git a/third_party/WebKit/Source/modules/webaudio/DefaultAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/DefaultAudioDestinationNode.cpp index 76c0cdaa..4efdff8 100644 --- a/third_party/WebKit/Source/modules/webaudio/DefaultAudioDestinationNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/DefaultAudioDestinationNode.cpp
@@ -36,8 +36,8 @@ { // Node-specific default mixing rules. m_channelCount = 2; - m_channelCountMode = Explicit; - m_channelInterpretation = AudioBus::Speakers; + setInternalChannelCountMode(Explicit); + setInternalChannelInterpretation(AudioBus::Speakers); } PassRefPtr<DefaultAudioDestinationHandler> DefaultAudioDestinationHandler::create(AudioNode& node)
diff --git a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp index f4f79b8..8935818 100644 --- a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp +++ b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp
@@ -179,52 +179,6 @@ m_renderingAutomaticPullNodes[i]->processIfNecessary(framesToProcess); } -void DeferredTaskHandler::addChangedChannelCountMode(AudioHandler* node) -{ - ASSERT(isGraphOwner()); - ASSERT(isMainThread()); - m_deferredCountModeChange.add(node); -} - -void DeferredTaskHandler::removeChangedChannelCountMode(AudioHandler* node) -{ - ASSERT(isGraphOwner()); - - m_deferredCountModeChange.remove(node); -} - -void DeferredTaskHandler::addChangedChannelInterpretation(AudioHandler* node) -{ - ASSERT(isGraphOwner()); - ASSERT(isMainThread()); - m_deferredChannelInterpretationChange.add(node); -} - -void DeferredTaskHandler::removeChangedChannelInterpretation(AudioHandler* node) -{ - ASSERT(isGraphOwner()); - - m_deferredChannelInterpretationChange.remove(node); -} - -void DeferredTaskHandler::updateChangedChannelCountMode() -{ - ASSERT(isGraphOwner()); - - for (AudioHandler* node : m_deferredCountModeChange) - node->updateChannelCountMode(); - m_deferredCountModeChange.clear(); -} - -void DeferredTaskHandler::updateChangedChannelInterpretation() -{ - ASSERT(isGraphOwner()); - - for (AudioHandler* node : m_deferredChannelInterpretationChange) - node->updateChannelInterpretation(); - m_deferredChannelInterpretationChange.clear(); -} - DeferredTaskHandler::DeferredTaskHandler() : m_automaticPullNodesNeedUpdating(false) , m_audioThread(0) @@ -246,8 +200,6 @@ void DeferredTaskHandler::handleDeferredTasks() { - updateChangedChannelCountMode(); - updateChangedChannelInterpretation(); handleDirtyAudioSummingJunctions(); handleDirtyAudioNodeOutputs(); updateAutomaticPullNodes();
diff --git a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.h b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.h index afd32cc..857e088 100644 --- a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.h +++ b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.h
@@ -161,8 +161,6 @@ private: DeferredTaskHandler(); void updateAutomaticPullNodes(); - void updateChangedChannelCountMode(); - void updateChangedChannelInterpretation(); void handleDirtyAudioSummingJunctions(); void handleDirtyAudioNodeOutputs(); void deleteHandlersOnMainThread(); @@ -176,13 +174,6 @@ // m_automaticPullNodesNeedUpdating keeps track if m_automaticPullNodes is modified. bool m_automaticPullNodesNeedUpdating; - // Collection of nodes where the channel count mode has changed. We want the - // channel count mode to change in the pre- or post-rendering phase so as - // not to disturb the running audio thread. - HashSet<AudioHandler*> m_deferredCountModeChange; - - HashSet<AudioHandler*> m_deferredChannelInterpretationChange; - // These two HashSet must be accessed only when the graph lock is held. // These raw pointers are safe because their destructors unregister them. HashSet<AudioSummingJunction*> m_dirtySummingJunctions;
diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp index 32c5a6f..82f4fe64 100644 --- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioDestinationNode.cpp
@@ -53,8 +53,8 @@ // Node-specific defaults. m_channelCount = m_renderTarget->numberOfChannels(); - m_channelCountMode = Explicit; - m_channelInterpretation = AudioBus::Speakers; + setInternalChannelCountMode(Explicit); + setInternalChannelInterpretation(AudioBus::Speakers); } PassRefPtr<OfflineAudioDestinationHandler> OfflineAudioDestinationHandler::create(AudioNode& node, AudioBuffer* renderTarget)
diff --git a/third_party/WebKit/Source/modules/webaudio/PannerNode.cpp b/third_party/WebKit/Source/modules/webaudio/PannerNode.cpp index 19d96f76..4018943 100644 --- a/third_party/WebKit/Source/modules/webaudio/PannerNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/PannerNode.cpp
@@ -72,8 +72,8 @@ // Node-specific default mixing rules. m_channelCount = 2; - m_channelCountMode = ClampedMax; - m_channelInterpretation = AudioBus::Speakers; + setInternalChannelCountMode(ClampedMax); + setInternalChannelInterpretation(AudioBus::Speakers); // Explicitly set the default panning model here so that the histograms // include the default value. @@ -565,7 +565,7 @@ if (channelCount > 0 && channelCount <= 2) { if (m_channelCount != channelCount) { m_channelCount = channelCount; - if (m_channelCountMode != Max) + if (internalChannelCountMode() != Max) updateChannelsForInputs(); } } else { @@ -586,25 +586,16 @@ ASSERT(isMainThread()); BaseAudioContext::AutoLocker locker(context()); - ChannelCountMode oldMode = m_channelCountMode; - if (mode == "clamped-max") { - m_newChannelCountMode = ClampedMax; + setInternalChannelCountMode(ClampedMax); } else if (mode == "explicit") { - m_newChannelCountMode = Explicit; + setInternalChannelCountMode(Explicit); } else if (mode == "max") { // This is not supported for a PannerNode, which can only handle 1 or 2 channels. exceptionState.throwDOMException( NotSupportedError, "Panner: 'max' is not allowed"); - m_newChannelCountMode = oldMode; - } else { - // Do nothing for other invalid values. - m_newChannelCountMode = oldMode; } - - if (m_newChannelCountMode != oldMode) - context()->deferredTaskHandler().addChangedChannelCountMode(this); } bool PannerHandler::hasSampleAccurateValues() const
diff --git a/third_party/WebKit/Source/modules/webaudio/ScriptProcessorNode.cpp b/third_party/WebKit/Source/modules/webaudio/ScriptProcessorNode.cpp index 935354e..bc40a07 100644 --- a/third_party/WebKit/Source/modules/webaudio/ScriptProcessorNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/ScriptProcessorNode.cpp
@@ -55,7 +55,7 @@ addOutput(numberOfOutputChannels); m_channelCount = numberOfInputChannels; - m_channelCountMode = Explicit; + setInternalChannelCountMode(Explicit); initialize(); }
diff --git a/third_party/WebKit/Source/modules/webaudio/StereoPannerNode.cpp b/third_party/WebKit/Source/modules/webaudio/StereoPannerNode.cpp index 4962c83..5872319 100644 --- a/third_party/WebKit/Source/modules/webaudio/StereoPannerNode.cpp +++ b/third_party/WebKit/Source/modules/webaudio/StereoPannerNode.cpp
@@ -26,8 +26,8 @@ // The node-specific default mixing rules declare that StereoPannerNode // can handle mono to stereo and stereo to stereo conversion. m_channelCount = 2; - m_channelCountMode = ClampedMax; - m_channelInterpretation = AudioBus::Speakers; + setInternalChannelCountMode(ClampedMax); + setInternalChannelInterpretation(AudioBus::Speakers); initialize(); } @@ -89,7 +89,7 @@ if (channelCount > 0 && channelCount <= 2) { if (m_channelCount != channelCount) { m_channelCount = channelCount; - if (m_channelCountMode != Max) + if (internalChannelCountMode() != Max) updateChannelsForInputs(); } } else { @@ -110,26 +110,17 @@ ASSERT(isMainThread()); BaseAudioContext::AutoLocker locker(context()); - ChannelCountMode oldMode = m_channelCountMode; - if (mode == "clamped-max") { - m_newChannelCountMode = ClampedMax; + setInternalChannelCountMode(ClampedMax); } else if (mode == "explicit") { - m_newChannelCountMode = Explicit; + setInternalChannelCountMode(Explicit); } else if (mode == "max") { // This is not supported for a StereoPannerNode, which can only handle // 1 or 2 channels. exceptionState.throwDOMException( NotSupportedError, "StereoPanner: 'max' is not allowed"); - m_newChannelCountMode = oldMode; - } else { - // Do nothing for other invalid values. - m_newChannelCountMode = oldMode; } - - if (m_newChannelCountMode != oldMode) - context()->deferredTaskHandler().addChangedChannelCountMode(this); } // ----------------------------------------------------------------
diff --git a/third_party/WebKit/Source/platform/MemoryCoordinator.cpp b/third_party/WebKit/Source/platform/MemoryCoordinator.cpp deleted file mode 100644 index 96fa073..0000000 --- a/third_party/WebKit/Source/platform/MemoryCoordinator.cpp +++ /dev/null
@@ -1,74 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "platform/MemoryCoordinator.h" - -#include "platform/TraceEvent.h" -#include "platform/fonts/FontCache.h" -#include "platform/graphics/ImageDecodingStore.h" -#include "platform/heap/Heap.h" -#include "wtf/allocator/Partitions.h" - -namespace blink { - -DEFINE_TRACE(MemoryCoordinatorClient) -{ -} - -MemoryCoordinator& MemoryCoordinator::instance() -{ - DEFINE_STATIC_LOCAL(MemoryCoordinator, instance, ()); - return instance; -} - -MemoryCoordinator::MemoryCoordinator() -{ -} - -MemoryCoordinator::~MemoryCoordinator() -{ -} - -void MemoryCoordinator::registerClient(MemoryCoordinatorClient* client) -{ - DCHECK(isMainThread()); - DCHECK(client); - DCHECK(!m_clients.contains(client)); - m_clients.add(client); -} - -void MemoryCoordinator::unregisterClient(MemoryCoordinatorClient* client) -{ - DCHECK(isMainThread()); - m_clients.remove(client); -} - -void MemoryCoordinator::purgeMemory() -{ - for (auto& client : m_clients) - client->purgeMemory(); - WTF::Partitions::decommitFreeableMemory(); -} - -void MemoryCoordinator::onMemoryPressure(WebMemoryPressureLevel level) -{ - TRACE_EVENT0("blink", "MemoryCoordinator::onMemoryPressure"); - for (auto& client : m_clients) - client->onMemoryPressure(level); - if (level == WebMemoryPressureLevelCritical) { - // Clear the image cache. - // TODO(tasak|bashi): Make ImageDecodingStore and FontCache be - // MemoryCoordinatorClients rather than clearing caches here. - ImageDecodingStore::instance().clear(); - FontCache::fontCache()->invalidate(); - } - WTF::Partitions::decommitFreeableMemory(); -} - -DEFINE_TRACE(MemoryCoordinator) -{ - visitor->trace(m_clients); -} - -} // namespace blink
diff --git a/third_party/WebKit/Source/platform/MemoryCoordinator.h b/third_party/WebKit/Source/platform/MemoryCoordinator.h deleted file mode 100644 index 876764f9..0000000 --- a/third_party/WebKit/Source/platform/MemoryCoordinator.h +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MemoryCoordinator_h -#define MemoryCoordinator_h - -#include "platform/PlatformExport.h" -#include "platform/heap/Handle.h" -#include "public/platform/WebMemoryPressureLevel.h" -#include "wtf/Noncopyable.h" - -namespace blink { - -class PLATFORM_EXPORT MemoryCoordinatorClient : public GarbageCollectedMixin { -public: - virtual ~MemoryCoordinatorClient() { } - - // Called when MemoryCoordinator is asked to purge memory. - virtual void purgeMemory() { } - - // TODO(bashi): Deprecating. Remove this when MemoryPressureListener is - // gone. - virtual void onMemoryPressure(WebMemoryPressureLevel) { } - - DECLARE_VIRTUAL_TRACE(); -}; - -// MemoryCoordinator listens to some events which could be opportunities -// for reducing memory consumption and notifies its clients. -class PLATFORM_EXPORT MemoryCoordinator final { - WTF_MAKE_NONCOPYABLE(MemoryCoordinator); -public: - static MemoryCoordinator& instance(); - - void registerClient(MemoryCoordinatorClient*); - void unregisterClient(MemoryCoordinatorClient*); - - void purgeMemory(); - - // TODO(bashi): Deprecating. Remove this when MemoryPressureListener is - // gone. - void onMemoryPressure(WebMemoryPressureLevel); - - DECLARE_TRACE(); - -private: - MemoryCoordinator(); - ~MemoryCoordinator(); - - HeapHashSet<WeakMember<MemoryCoordinatorClient>> m_clients; -}; - -} // namespace blink - -#endif // MemoryCoordinator_h
diff --git a/third_party/WebKit/Source/platform/blink_platform.gypi b/third_party/WebKit/Source/platform/blink_platform.gypi index 242cd56..d619bfd 100644 --- a/third_party/WebKit/Source/platform/blink_platform.gypi +++ b/third_party/WebKit/Source/platform/blink_platform.gypi
@@ -76,8 +76,6 @@ 'MIMETypeRegistry.h', 'MemoryCacheDumpProvider.cpp', 'MemoryCacheDumpProvider.h', - 'MemoryCoordinator.cpp', - 'MemoryCoordinator.h', 'PartitionAllocMemoryDumpProvider.cpp', 'PartitionAllocMemoryDumpProvider.h', 'PODArena.h', @@ -339,7 +337,6 @@ 'exported/WebMediaStreamSource.cpp', 'exported/WebMediaStreamTrack.cpp', 'exported/WebMediaStreamTrackSourcesRequest.cpp', - 'exported/WebMemoryCoordinator.cpp', 'exported/WebMessagePortChannelClient.cpp', 'exported/WebMixedContent.cpp', 'exported/WebPasswordCredential.cpp',
diff --git a/third_party/WebKit/Source/web/TextFinder.cpp b/third_party/WebKit/Source/web/TextFinder.cpp index b136ba9..bd929e8 100644 --- a/third_party/WebKit/Source/web/TextFinder.cpp +++ b/third_party/WebKit/Source/web/TextFinder.cpp
@@ -237,6 +237,11 @@ if (!startObject || !endObject) return; + // Notify the client of new text marker data. + axObjectCache->postNotification(startObject, AXObjectCache::AXNotification::AXChildrenChanged); + if (startObject != endObject) + axObjectCache->postNotification(endObject, AXObjectCache::AXNotification::AXChildrenChanged); + if (ownerFrame().client()) { ownerFrame().client()->handleAccessibilityFindInPageResult( identifier, m_activeMatchIndex + 1,
diff --git a/third_party/WebKit/Source/platform/exported/WebMemoryCoordinator.cpp b/third_party/WebKit/Source/web/WebMemoryCoordinator.cpp similarity index 66% rename from third_party/WebKit/Source/platform/exported/WebMemoryCoordinator.cpp rename to third_party/WebKit/Source/web/WebMemoryCoordinator.cpp index 3ff71f0..225ee6b 100644 --- a/third_party/WebKit/Source/platform/exported/WebMemoryCoordinator.cpp +++ b/third_party/WebKit/Source/web/WebMemoryCoordinator.cpp
@@ -2,9 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "public/platform/WebMemoryCoordinator.h" +#include "public/web/WebMemoryCoordinator.h" -#include "platform/MemoryCoordinator.h" +#include "core/dom/MemoryCoordinator.h" +#include "core/page/Page.h" namespace blink { @@ -13,9 +14,4 @@ MemoryCoordinator::instance().onMemoryPressure(pressureLevel); } -void WebMemoryCoordinator::purgeMemory() -{ - MemoryCoordinator::instance().purgeMemory(); -} - } // namespace blink
diff --git a/third_party/WebKit/Source/web/web.gypi b/third_party/WebKit/Source/web/web.gypi index 89e4f868..3ea0570 100644 --- a/third_party/WebKit/Source/web/web.gypi +++ b/third_party/WebKit/Source/web/web.gypi
@@ -169,6 +169,7 @@ 'WebMediaDevicesRequest.cpp', 'WebMediaStreamRegistry.cpp', 'WebMetaElement.cpp', + 'WebMemoryCoordinator.cpp', 'WebNetworkStateNotifier.cpp', 'WebNode.cpp', 'WebOptionElement.cpp',
diff --git a/third_party/WebKit/public/blink_headers.gypi b/third_party/WebKit/public/blink_headers.gypi index 16986eb1..1b8f902 100644 --- a/third_party/WebKit/public/blink_headers.gypi +++ b/third_party/WebKit/public/blink_headers.gypi
@@ -135,7 +135,6 @@ "platform/WebMediaStreamSource.h", "platform/WebMediaStreamTrack.h", "platform/WebMediaStreamTrackSourcesRequest.h", - "platform/WebMemoryCoordinator.h", "platform/WebMemoryPressureLevel.h", "platform/WebMessagePortChannel.h", "platform/WebMessagePortChannelClient.h", @@ -403,6 +402,7 @@ "web/WebMediaDevicesRequest.h", "web/WebMediaPlayerAction.h", "web/WebMediaStreamRegistry.h", + "web/WebMemoryCoordinator.h", "web/WebMenuItemInfo.h", "web/WebMetaElement.h", "web/WebNavigationPolicy.h",
diff --git a/third_party/WebKit/public/platform/WebMemoryCoordinator.h b/third_party/WebKit/public/web/WebMemoryCoordinator.h similarity index 63% rename from third_party/WebKit/public/platform/WebMemoryCoordinator.h rename to third_party/WebKit/public/web/WebMemoryCoordinator.h index e0a80687..306b961c 100644 --- a/third_party/WebKit/public/platform/WebMemoryCoordinator.h +++ b/third_party/WebKit/public/web/WebMemoryCoordinator.h
@@ -13,12 +13,7 @@ class WebMemoryCoordinator { public: // Called when a memory pressure notification is received. - // TODO(bashi): Deprecating. Remove this when MemoryPressureListener is - // gone. - BLINK_PLATFORM_EXPORT static void onMemoryPressure(WebMemoryPressureLevel); - - // Called when Blink should purge caches. - BLINK_PLATFORM_EXPORT static void purgeMemory(); + BLINK_EXPORT static void onMemoryPressure(WebMemoryPressureLevel); }; } // namespace blink
diff --git a/tools/gn/docs/cookbook.md b/tools/gn/docs/cookbook.md index a11bc13..7f02e13 100644 --- a/tools/gn/docs/cookbook.md +++ b/tools/gn/docs/cookbook.md
@@ -282,7 +282,7 @@ | `use_dbus` (0/1) | `use_dbus` (true/false) | `//build/config/features.gni` | | `use_gconf` (0/1) | `use_gconf` (true/false) | `//build/config/features.gni` | | `use_glib` (0/1) | `is_linux` (true/false) | (global) | -| `use_gnome_keyring` (0/1) | `is_desktop_linux` (true/false) | | +| `use_gnome_keyring` (0/1) | `use_gnome_keyring` (true/false) | | | `use_goma` (0/1) | `use_goma` (true/false) | `//build/toolchain/goma.gni` | | `use_nss_certs` (0/1) | `use_nss_certs` (true/false) | `//build/config/crypto.gni` (Many of these conditions can be deleted, see the "SSL" notes on targets below.) | | `use_pango` (0/1) | `use_pango` (true/false) | `//build/config/ui.gni` |
diff --git a/tools/gn/last_commit_position.py b/tools/gn/last_commit_position.py index b710ed0b..a91f7226 100644 --- a/tools/gn/last_commit_position.py +++ b/tools/gn/last_commit_position.py
@@ -95,7 +95,6 @@ value = FetchCommitPosition(git_directory) if not value: - print "Could not get last commit position." - sys.exit(1) + value = 'UNKNOWN' WriteHeader(output_file, header_guard, value)
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index e3f1042..8628910 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -23209,6 +23209,20 @@ <summary>Records the autoplay source of muted videos.</summary> </histogram> +<histogram name="Media.Video.Autoplay.Muted.PlayMethod.BecomesVisible" + enum="Boolean"> + <owner>avayvod@chromium.org</owner> + <owner>mlamouri@chromium.org</owner> + <owner>zqzhang@chromium.org</owner> + <summary> + Records muted video started playing with play() become visible at some + point. The UMA for false is not complete since it is recorded in a + destructor which is garbage-collected. Please subtract + Media.Video.Autoplay.Muted "play() method" count with the true + count of this histogram to obtain the real false count. + </summary> +</histogram> + <histogram name="Media.Video.Autoplay.Muted.UnmuteAction" enum="BooleanSuccess"> <owner>avayvod@chromium.org</owner> <owner>mlamouri@chromium.org</owner> @@ -101230,6 +101244,18 @@ name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint.LoadType.Reload"/> </histogram_suffixes> +<histogram_suffixes name="PageLoadMetricsUserInitiated" separator="."> + <suffix name="UserInitiated" + label="(experimental) Page load metric that is approximately user + initiated"/> + <affected-histogram + name="PageLoad.AbortTiming.ForwardBackNavigation.BeforeCommit"/> + <affected-histogram name="PageLoad.AbortTiming.NewNavigation.BeforeCommit"/> + <affected-histogram name="PageLoad.AbortTiming.Reload.BeforeCommit"/> + <affected-histogram + name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint"/> +</histogram_suffixes> + <histogram_suffixes name="PageLoadType"> <suffix name="HistoryLoad" label="but only for user pressing back or forward"/>
diff --git a/tools/perf/benchmarks/v8_helper.py b/tools/perf/benchmarks/v8_helper.py index 81012592..19ecab3 100644 --- a/tools/perf/benchmarks/v8_helper.py +++ b/tools/perf/benchmarks/v8_helper.py
@@ -6,7 +6,7 @@ def EnableIgnition(options): - AppendJSFlags(options, '--ignition') + AppendJSFlags(options, '--ignition-staging') def AppendJSFlags(options, js_flags):
diff --git a/tools/perf/core/benchmark_finders_unittest.py b/tools/perf/core/benchmark_finders_unittest.py index 3043d7f..1018592 100644 --- a/tools/perf/core/benchmark_finders_unittest.py +++ b/tools/perf/core/benchmark_finders_unittest.py
@@ -5,6 +5,7 @@ import unittest from core import benchmark_finders +from telemetry import decorators class TestGetBenchmarkNamesForFile(unittest.TestCase): @@ -23,6 +24,7 @@ ['test_benchmark_1', 'test_benchmark_2', 'test_benchmark_subclass_1', 'test_benchmark_subclass_2']) + @decorators.Disabled('chromeos') # http://crbug.com/637938 def testListSimpleBenchmarksDefinedInOneFileComplex(self): self.assertEquals( benchmark_finders.GetBenchmarkNamesForFile(
diff --git a/ui/android/resources/resource_manager_impl.cc b/ui/android/resources/resource_manager_impl.cc index 8a68bf7..61c7bda 100644 --- a/ui/android/resources/resource_manager_impl.cc +++ b/ui/android/resources/resource_manager_impl.cc
@@ -34,16 +34,15 @@ ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) : host_(nullptr) { JNIEnv* env = base::android::AttachCurrentThread(); - java_obj_.Reset(env, Java_ResourceManager_create( - env, native_window->GetJavaObject().obj(), - reinterpret_cast<intptr_t>(this)) - .obj()); + java_obj_.Reset( + env, Java_ResourceManager_create(env, native_window->GetJavaObject(), + reinterpret_cast<intptr_t>(this)) + .obj()); DCHECK(!java_obj_.is_null()); } ResourceManagerImpl::~ResourceManagerImpl() { - Java_ResourceManager_destroy(base::android::AttachCurrentThread(), - java_obj_.obj()); + Java_ResourceManager_destroy(base::android::AttachCurrentThread(), java_obj_); } void ResourceManagerImpl::Init(cc::LayerTreeHost* host) { @@ -230,7 +229,7 @@ "resource_type", res_type, "resource_id", res_id); Java_ResourceManager_preloadResource(base::android::AttachCurrentThread(), - java_obj_.obj(), res_type, res_id); + java_obj_, res_type, res_id); } void ResourceManagerImpl::RequestResourceFromJava(AndroidResourceType res_type, @@ -239,7 +238,7 @@ "resource_type", res_type, "resource_id", res_id); Java_ResourceManager_resourceRequested(base::android::AttachCurrentThread(), - java_obj_.obj(), res_type, res_id); + java_obj_, res_type, res_id); } void ResourceManagerImpl::RequestCrushedSpriteResourceFromJava( @@ -249,8 +248,8 @@ "bitmap_res_id", bitmap_res_id, "metadata_res_id", metadata_res_id); Java_ResourceManager_crushedSpriteResourceRequested( - base::android::AttachCurrentThread(), java_obj_.obj(), - bitmap_res_id, metadata_res_id, reloading); + base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, + metadata_res_id, reloading); } } // namespace ui
diff --git a/ui/android/view_android.cc b/ui/android/view_android.cc index 259aed6e..d855dbd 100644 --- a/ui/android/view_android.cc +++ b/ui/android/view_android.cc
@@ -52,9 +52,7 @@ const ScopedJavaLocalRef<jobject> view = view_.get(env); const ScopedJavaLocalRef<jobject> delegate = delegate_.get(env); if (!view.is_null() && !delegate.is_null()) { - Java_ViewAndroidDelegate_removeView(env, - delegate.obj(), - view.obj()); + Java_ViewAndroidDelegate_removeView(env, delegate, view); } view_.reset(); } @@ -110,9 +108,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); return ViewAndroid::ScopedAnchorView( - env, - Java_ViewAndroidDelegate_acquireView(env, delegate.obj()), - delegate); + env, Java_ViewAndroidDelegate_acquireView(env, delegate), delegate); } void ViewAndroid::SetAnchorRect(const JavaRef<jobject>& anchor, @@ -133,16 +129,9 @@ float content_offset_y_pix = GetWindowAndroid()->content_offset().y(); int top_margin = std::round(content_offset_y_pix + bounds.y() * scale); JNIEnv* env = base::android::AttachCurrentThread(); - Java_ViewAndroidDelegate_setViewPosition(env, - delegate.obj(), - anchor.obj(), - bounds.x(), - bounds.y(), - bounds.width(), - bounds.height(), - scale, - left_margin, - top_margin); + Java_ViewAndroidDelegate_setViewPosition( + env, delegate, anchor, bounds.x(), bounds.y(), bounds.width(), + bounds.height(), scale, left_margin, top_margin); } void ViewAndroid::RemoveChild(ViewAndroid* child) { @@ -184,10 +173,7 @@ if (delegate.is_null()) return; JNIEnv* env = base::android::AttachCurrentThread(); - Java_ViewAndroidDelegate_startDragAndDrop(env, - delegate.obj(), - jtext.obj(), - jimage.obj()); + Java_ViewAndroidDelegate_startDragAndDrop(env, delegate, jtext, jimage); } } // namespace ui
diff --git a/ui/android/window_android.cc b/ui/android/window_android.cc index 403ca0b..c53762c 100644 --- a/ui/android/window_android.cc +++ b/ui/android/window_android.cc
@@ -18,6 +18,7 @@ using base::android::AttachCurrentThread; using base::android::JavaParamRef; +using base::android::JavaRef; using base::android::ScopedJavaLocalRef; WindowAndroid::WindowAndroid(JNIEnv* env, jobject obj) : compositor_(NULL) { @@ -43,7 +44,7 @@ WindowAndroid* WindowAndroid::createForTesting() { JNIEnv* env = AttachCurrentThread(); - jobject context = base::android::GetApplicationContext(); + const JavaRef<jobject>& context = base::android::GetApplicationContext(); return new WindowAndroid( env, Java_WindowAndroid_createForTesting(env, context).obj()); } @@ -83,7 +84,7 @@ void WindowAndroid::RequestVSyncUpdate() { JNIEnv* env = AttachCurrentThread(); - Java_WindowAndroid_requestVSyncUpdate(env, GetJavaObject().obj()); + Java_WindowAndroid_requestVSyncUpdate(env, GetJavaObject()); } void WindowAndroid::SetNeedsAnimate() { @@ -131,17 +132,15 @@ bool WindowAndroid::HasPermission(const std::string& permission) { JNIEnv* env = AttachCurrentThread(); return Java_WindowAndroid_hasPermission( - env, - GetJavaObject().obj(), - base::android::ConvertUTF8ToJavaString(env, permission).obj()); + env, GetJavaObject(), + base::android::ConvertUTF8ToJavaString(env, permission)); } bool WindowAndroid::CanRequestPermission(const std::string& permission) { JNIEnv* env = AttachCurrentThread(); return Java_WindowAndroid_canRequestPermission( - env, - GetJavaObject().obj(), - base::android::ConvertUTF8ToJavaString(env, permission).obj()); + env, GetJavaObject(), + base::android::ConvertUTF8ToJavaString(env, permission)); } WindowAndroid* WindowAndroid::GetWindowAndroid() const {
diff --git a/ui/base/clipboard/clipboard_android.cc b/ui/base/clipboard/clipboard_android.cc index 409af31..8e3944de 100644 --- a/ui/base/clipboard/clipboard_android.cc +++ b/ui/base/clipboard/clipboard_android.cc
@@ -64,14 +64,8 @@ base::LazyInstance<ClipboardMap>::Leaky g_map = LAZY_INSTANCE_INITIALIZER; ClipboardMap::ClipboardMap() { - JNIEnv* env = AttachCurrentThread(); - DCHECK(env); - - // Get the context. - jobject context = base::android::GetApplicationContext(); - DCHECK(context); - - clipboard_manager_.Reset(Java_Clipboard_create(env, context)); + clipboard_manager_.Reset(Java_Clipboard_create( + AttachCurrentThread(), base::android::GetApplicationContext())); DCHECK(clipboard_manager_.obj()); } @@ -108,15 +102,14 @@ ConvertUTF8ToJavaString(env, map_[kPlainTextFormat].c_str()); DCHECK(html.obj() && text.obj()); - Java_Clipboard_setHTMLText(env, clipboard_manager_.obj(), html.obj(), - text.obj()); + Java_Clipboard_setHTMLText(env, clipboard_manager_, html, text); } else if (base::ContainsKey(map_, kPlainTextFormat)) { ScopedJavaLocalRef<jstring> str = ConvertUTF8ToJavaString(env, map_[kPlainTextFormat].c_str()); DCHECK(str.obj()); - Java_Clipboard_setText(env, clipboard_manager_.obj(), str.obj()); + Java_Clipboard_setText(env, clipboard_manager_, str); } else { - Java_Clipboard_clear(env, clipboard_manager_.obj()); + Java_Clipboard_clear(env, clipboard_manager_); NOTIMPLEMENTED(); } } @@ -125,7 +118,7 @@ JNIEnv* env = AttachCurrentThread(); base::AutoLock lock(lock_); map_.clear(); - Java_Clipboard_clear(env, clipboard_manager_.obj()); + Java_Clipboard_clear(env, clipboard_manager_); } // Add a key:jstr pair to map, but only if jstr is not null, and also @@ -161,9 +154,9 @@ std::map<std::string, std::string> android_clipboard_state; ScopedJavaLocalRef<jstring> jtext = - Java_Clipboard_getCoercedText(env, clipboard_manager_.obj()); + Java_Clipboard_getCoercedText(env, clipboard_manager_); ScopedJavaLocalRef<jstring> jhtml = - Java_Clipboard_getHTMLText(env, clipboard_manager_.obj()); + Java_Clipboard_getHTMLText(env, clipboard_manager_); AddMapEntry(env, &android_clipboard_state, kPlainTextFormat, jtext); AddMapEntry(env, &android_clipboard_state, kHTMLFormat, jhtml);
diff --git a/ui/base/clipboard/clipboard_android_unittest.cc b/ui/base/clipboard/clipboard_android_unittest.cc index b6744a2b..d52013d4 100644 --- a/ui/base/clipboard/clipboard_android_unittest.cc +++ b/ui/base/clipboard/clipboard_android_unittest.cc
@@ -44,9 +44,6 @@ JNIEnv* env = base::android::AttachCurrentThread(); ASSERT_TRUE(env); - jobject context = base::android::GetApplicationContext(); - ASSERT_TRUE(context); - ScopedJavaLocalRef<jclass> context_class = base::android::GetClass(env, "android/content/Context"); @@ -59,7 +56,8 @@ ConvertUTF8ToJavaString(env, "clipboard"); ScopedJavaLocalRef<jobject> clipboard_manager( env, - env->CallObjectMethod(context, get_system_service, service_name.obj())); + env->CallObjectMethod(base::android::GetApplicationContext(), + get_system_service, service_name.obj())); ASSERT_TRUE(clipboard_manager.obj() && !base::android::ClearException(env)); ScopedJavaLocalRef<jclass> clipboard_class =
diff --git a/ui/base/l10n/l10n_util_android.cc b/ui/base/l10n/l10n_util_android.cc index e78ebbd..5c7c12d57 100644 --- a/ui/base/l10n/l10n_util_android.cc +++ b/ui/base/l10n/l10n_util_android.cc
@@ -74,10 +74,10 @@ locale, uloc_getCountry, ULOC_COUNTRY_CAPACITY); std::string variant = GetLocaleComponent( locale, uloc_getVariant, ULOC_FULLNAME_CAPACITY); - return Java_LocalizationUtils_getJavaLocale(env, - base::android::ConvertUTF8ToJavaString(env, language).obj(), - base::android::ConvertUTF8ToJavaString(env, country).obj(), - base::android::ConvertUTF8ToJavaString(env, variant).obj()); + return Java_LocalizationUtils_getJavaLocale( + env, base::android::ConvertUTF8ToJavaString(env, language), + base::android::ConvertUTF8ToJavaString(env, country), + base::android::ConvertUTF8ToJavaString(env, variant)); } } // namespace @@ -91,10 +91,8 @@ NewJavaLocale(env, display_locale); ScopedJavaLocalRef<jstring> java_result( - Java_LocalizationUtils_getDisplayNameForLocale( - env, - java_locale.obj(), - java_display_locale.obj())); + Java_LocalizationUtils_getDisplayNameForLocale(env, java_locale, + java_display_locale)); return ConvertJavaStringToUTF16(java_result); }
diff --git a/ui/base/resource/resource_bundle_android.cc b/ui/base/resource/resource_bundle_android.cc index 82623155..58d7015 100644 --- a/ui/base/resource/resource_bundle_android.cc +++ b/ui/base/resource/resource_bundle_android.cc
@@ -128,7 +128,7 @@ g_locale_paks_in_apk = value; } -bool LoadMainAndroidPackFile(const char* path_within_apk, +void LoadMainAndroidPackFile(const char* path_within_apk, const base::FilePath& disk_file_path) { if (LoadFromApkOrFile(path_within_apk, &disk_file_path, @@ -137,9 +137,7 @@ ResourceBundle::GetSharedInstance().AddDataPackFromFileRegion( base::File(g_resources_pack_fd), g_resources_pack_region, SCALE_FACTOR_NONE); - return true; } - return false; } int GetMainAndroidPackFd(base::MemoryMappedFile::Region* out_region) { @@ -164,7 +162,7 @@ JNIEnv* env = base::android::AttachCurrentThread(); base::android::ScopedJavaLocalRef<jstring> ret = Java_ResourceBundle_getLocalePakResourcePath( - env, base::android::ConvertUTF8ToJavaString(env, locale).obj()); + env, base::android::ConvertUTF8ToJavaString(env, locale)); if (ret.obj() == nullptr) { return std::string(); }
diff --git a/ui/base/resource/resource_bundle_android.h b/ui/base/resource/resource_bundle_android.h index be7da363..c558ad3 100644 --- a/ui/base/resource/resource_bundle_android.h +++ b/ui/base/resource/resource_bundle_android.h
@@ -15,7 +15,7 @@ // Loads "resources.apk" from the .apk. Falls back to loading from disk, which // is necessary for tests. Returns true if it succeeds, false otherwise. -UI_BASE_EXPORT bool LoadMainAndroidPackFile( +UI_BASE_EXPORT void LoadMainAndroidPackFile( const char* path_within_apk, const base::FilePath& disk_file_path);
diff --git a/ui/base/touch/touch_device_android.cc b/ui/base/touch/touch_device_android.cc index ff44f8c..0924783 100644 --- a/ui/base/touch/touch_device_android.cc +++ b/ui/base/touch/touch_device_android.cc
@@ -8,6 +8,9 @@ #include "base/logging.h" #include "jni/TouchDevice_jni.h" +using base::android::AttachCurrentThread; +using base::android::GetApplicationContext; + namespace ui { TouchScreensAvailability GetTouchScreensAvailability() { @@ -15,18 +18,13 @@ } int MaxTouchPoints() { - JNIEnv* env = base::android::AttachCurrentThread(); - jobject context = base::android::GetApplicationContext(); - jint max_touch_points = Java_TouchDevice_maxTouchPoints(env, context); - return static_cast<int>(max_touch_points); + return Java_TouchDevice_maxTouchPoints(AttachCurrentThread(), + GetApplicationContext()); } int GetAvailablePointerTypes() { - JNIEnv* env = base::android::AttachCurrentThread(); - jobject context = base::android::GetApplicationContext(); - jint available_pointer_types = - Java_TouchDevice_availablePointerTypes(env, context); - return static_cast<int>(available_pointer_types); + return Java_TouchDevice_availablePointerTypes(AttachCurrentThread(), + GetApplicationContext()); } PointerType GetPrimaryPointerType() { @@ -40,11 +38,8 @@ } int GetAvailableHoverTypes() { - JNIEnv* env = base::android::AttachCurrentThread(); - jobject context = base::android::GetApplicationContext(); - jint available_hover_types = - Java_TouchDevice_availableHoverTypes(env, context); - return static_cast<int>(available_hover_types); + return Java_TouchDevice_availableHoverTypes(AttachCurrentThread(), + GetApplicationContext()); } HoverType GetPrimaryHoverType() {
diff --git a/ui/events/android/key_event_utils.cc b/ui/events/android/key_event_utils.cc index 14573683..c4419b2 100644 --- a/ui/events/android/key_event_utils.cc +++ b/ui/events/android/key_event_utils.cc
@@ -19,8 +19,8 @@ int GetKeyEventUnicodeChar(JNIEnv* env, const base::android::JavaRef<jobject>& event, int meta_state) { - return static_cast<int>(JNI_KeyEvent::Java_KeyEvent_getUnicodeCharI_I( - env, event.obj(), meta_state)); + return static_cast<int>( + JNI_KeyEvent::Java_KeyEvent_getUnicodeCharI_I(env, event, meta_state)); } } // namespace android
diff --git a/ui/events/android/motion_event_android.cc b/ui/events/android/motion_event_android.cc index cd21f439..bf1fc53f 100644 --- a/ui/events/android/motion_event_android.cc +++ b/ui/events/android/motion_event_android.cc
@@ -213,24 +213,24 @@ DCHECK_LT(pointer_index, cached_pointer_count_); if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].id; - return Java_MotionEvent_getPointerId( - AttachCurrentThread(), event_.obj(), pointer_index); + return Java_MotionEvent_getPointerId(AttachCurrentThread(), event_, + pointer_index); } float MotionEventAndroid::GetX(size_t pointer_index) const { DCHECK_LT(pointer_index, cached_pointer_count_); if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].position.x(); - return ToDips(Java_MotionEvent_getXF_I( - AttachCurrentThread(), event_.obj(), pointer_index)); + return ToDips( + Java_MotionEvent_getXF_I(AttachCurrentThread(), event_, pointer_index)); } float MotionEventAndroid::GetY(size_t pointer_index) const { DCHECK_LT(pointer_index, cached_pointer_count_); if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].position.y(); - return ToDips(Java_MotionEvent_getYF_I( - AttachCurrentThread(), event_.obj(), pointer_index)); + return ToDips( + Java_MotionEvent_getYF_I(AttachCurrentThread(), event_, pointer_index)); } float MotionEventAndroid::GetRawX(size_t pointer_index) const { @@ -245,16 +245,16 @@ DCHECK_LT(pointer_index, cached_pointer_count_); if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].touch_major; - return ToDips(Java_MotionEvent_getTouchMajorF_I( - AttachCurrentThread(), event_.obj(), pointer_index)); + return ToDips(Java_MotionEvent_getTouchMajorF_I(AttachCurrentThread(), event_, + pointer_index)); } float MotionEventAndroid::GetTouchMinor(size_t pointer_index) const { DCHECK_LT(pointer_index, cached_pointer_count_); if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].touch_minor; - return ToDips(Java_MotionEvent_getTouchMinorF_I( - AttachCurrentThread(), event_.obj(), pointer_index)); + return ToDips(Java_MotionEvent_getTouchMinorF_I(AttachCurrentThread(), event_, + pointer_index)); } float MotionEventAndroid::GetOrientation(size_t pointer_index) const { @@ -262,7 +262,7 @@ if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].orientation; return ToValidFloat(Java_MotionEvent_getOrientationF_I( - AttachCurrentThread(), event_.obj(), pointer_index)); + AttachCurrentThread(), event_, pointer_index)); } float MotionEventAndroid::GetPressure(size_t pointer_index) const { @@ -272,8 +272,8 @@ // accessed at most once per event instance). if (!event_.obj()) return 0.f; - return Java_MotionEvent_getPressureF_I( - AttachCurrentThread(), event_.obj(), pointer_index); + return Java_MotionEvent_getPressureF_I(AttachCurrentThread(), event_, + pointer_index); } float MotionEventAndroid::GetTilt(size_t pointer_index) const { @@ -283,7 +283,7 @@ if (!event_.obj()) return 0.f; return ToValidFloat(Java_MotionEvent_getAxisValueF_I_I( - AttachCurrentThread(), event_.obj(), AXIS_TILT, pointer_index)); + AttachCurrentThread(), event_, AXIS_TILT, pointer_index)); } base::TimeTicks MotionEventAndroid::GetEventTime() const { @@ -297,26 +297,26 @@ base::TimeTicks MotionEventAndroid::GetHistoricalEventTime( size_t historical_index) const { return FromAndroidTime(Java_MotionEvent_getHistoricalEventTime( - AttachCurrentThread(), event_.obj(), historical_index)); + AttachCurrentThread(), event_, historical_index)); } float MotionEventAndroid::GetHistoricalTouchMajor( size_t pointer_index, size_t historical_index) const { return ToDips(Java_MotionEvent_getHistoricalTouchMajorF_I_I( - AttachCurrentThread(), event_.obj(), pointer_index, historical_index)); + AttachCurrentThread(), event_, pointer_index, historical_index)); } float MotionEventAndroid::GetHistoricalX(size_t pointer_index, size_t historical_index) const { return ToDips(Java_MotionEvent_getHistoricalXF_I_I( - AttachCurrentThread(), event_.obj(), pointer_index, historical_index)); + AttachCurrentThread(), event_, pointer_index, historical_index)); } float MotionEventAndroid::GetHistoricalY(size_t pointer_index, size_t historical_index) const { return ToDips(Java_MotionEvent_getHistoricalYF_I_I( - AttachCurrentThread(), event_.obj(), pointer_index, historical_index)); + AttachCurrentThread(), event_, pointer_index, historical_index)); } ui::MotionEvent::ToolType MotionEventAndroid::GetToolType( @@ -325,7 +325,7 @@ if (pointer_index < MAX_POINTERS_TO_CACHE) return cached_pointers_[pointer_index].tool_type; return FromAndroidToolType(Java_MotionEvent_getToolType( - AttachCurrentThread(), event_.obj(), pointer_index)); + AttachCurrentThread(), event_, pointer_index)); } int MotionEventAndroid::GetButtonState() const {
diff --git a/ui/events/blink/OWNERS b/ui/events/blink/OWNERS index 2328e39d..d8afba1 100644 --- a/ui/events/blink/OWNERS +++ b/ui/events/blink/OWNERS
@@ -1,2 +1,3 @@ aelias@chromium.org +dtapuska@chromium.org tdresser@chromium.org \ No newline at end of file
diff --git a/ui/gfx/android/shared_device_display_info.cc b/ui/gfx/android/shared_device_display_info.cc index b5c0f856..8270142 100644 --- a/ui/gfx/android/shared_device_display_info.cc +++ b/ui/gfx/android/shared_device_display_info.cc
@@ -125,17 +125,17 @@ j_device_info_.Reset( Java_DeviceDisplayInfo_create( env, base::android::GetApplicationContext())); - UpdateDisplayInfo(env, j_device_info_.obj(), - Java_DeviceDisplayInfo_getDisplayHeight(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getDisplayWidth(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getPhysicalDisplayHeight(env, - j_device_info_.obj()), - Java_DeviceDisplayInfo_getPhysicalDisplayWidth(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getBitsPerPixel(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getBitsPerComponent(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getDIPScale(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getSmallestDIPWidth(env, j_device_info_.obj()), - Java_DeviceDisplayInfo_getRotationDegrees(env, j_device_info_.obj())); + UpdateDisplayInfo( + env, j_device_info_.obj(), + Java_DeviceDisplayInfo_getDisplayHeight(env, j_device_info_), + Java_DeviceDisplayInfo_getDisplayWidth(env, j_device_info_), + Java_DeviceDisplayInfo_getPhysicalDisplayHeight(env, j_device_info_), + Java_DeviceDisplayInfo_getPhysicalDisplayWidth(env, j_device_info_), + Java_DeviceDisplayInfo_getBitsPerPixel(env, j_device_info_), + Java_DeviceDisplayInfo_getBitsPerComponent(env, j_device_info_), + Java_DeviceDisplayInfo_getDIPScale(env, j_device_info_), + Java_DeviceDisplayInfo_getSmallestDIPWidth(env, j_device_info_), + Java_DeviceDisplayInfo_getRotationDegrees(env, j_device_info_)); } SharedDeviceDisplayInfo::~SharedDeviceDisplayInfo() {
diff --git a/ui/gl/android/scoped_java_surface.cc b/ui/gl/android/scoped_java_surface.cc index 62746cc..73fd856 100644 --- a/ui/gl/android/scoped_java_surface.cc +++ b/ui/gl/android/scoped_java_surface.cc
@@ -30,7 +30,7 @@ is_protected_(false) { JNIEnv* env = base::android::AttachCurrentThread(); ScopedJavaLocalRef<jobject> tmp(JNI_Surface::Java_Surface_Constructor( - env, surface_texture->j_surface_texture().obj())); + env, surface_texture->j_surface_texture())); DCHECK(!tmp.is_null()); j_surface_.Reset(tmp); } @@ -47,7 +47,7 @@ ScopedJavaSurface::~ScopedJavaSurface() { if (auto_release_ && !j_surface_.is_null()) { JNIEnv* env = base::android::AttachCurrentThread(); - JNI_Surface::Java_Surface_release(env, j_surface_.obj()); + JNI_Surface::Java_Surface_release(env, j_surface_); } }
diff --git a/ui/gl/android/surface_texture.cc b/ui/gl/android/surface_texture.cc index 98fc6e9..69c9004 100644 --- a/ui/gl/android/surface_texture.cc +++ b/ui/gl/android/surface_texture.cc
@@ -28,14 +28,14 @@ SurfaceTexture::~SurfaceTexture() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_SurfaceTexturePlatformWrapper_destroy(env, j_surface_texture_.obj()); + Java_SurfaceTexturePlatformWrapper_destroy(env, j_surface_texture_); } void SurfaceTexture::SetFrameAvailableCallback( const base::Closure& callback) { JNIEnv* env = base::android::AttachCurrentThread(); Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( - env, j_surface_texture_.obj(), + env, j_surface_texture_, reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, false))); } @@ -43,14 +43,13 @@ const base::Closure& callback) { JNIEnv* env = base::android::AttachCurrentThread(); Java_SurfaceTexturePlatformWrapper_setFrameAvailableCallback( - env, j_surface_texture_.obj(), + env, j_surface_texture_, reinterpret_cast<intptr_t>(new SurfaceTextureListener(callback, true))); } void SurfaceTexture::UpdateTexImage() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_SurfaceTexturePlatformWrapper_updateTexImage(env, - j_surface_texture_.obj()); + Java_SurfaceTexturePlatformWrapper_updateTexImage(env, j_surface_texture_); } void SurfaceTexture::GetTransformMatrix(float mtx[16]) { @@ -58,8 +57,8 @@ base::android::ScopedJavaLocalRef<jfloatArray> jmatrix( env, env->NewFloatArray(16)); - Java_SurfaceTexturePlatformWrapper_getTransformMatrix( - env, j_surface_texture_.obj(), jmatrix.obj()); + Java_SurfaceTexturePlatformWrapper_getTransformMatrix(env, j_surface_texture_, + jmatrix); jboolean is_copy; jfloat* elements = env->GetFloatArrayElements(jmatrix.obj(), &is_copy); @@ -74,14 +73,14 @@ glGetIntegerv(GL_TEXTURE_BINDING_EXTERNAL_OES, &texture_id); DCHECK(texture_id); JNIEnv* env = base::android::AttachCurrentThread(); - Java_SurfaceTexturePlatformWrapper_attachToGLContext( - env, j_surface_texture_.obj(), texture_id); + Java_SurfaceTexturePlatformWrapper_attachToGLContext(env, j_surface_texture_, + texture_id); } void SurfaceTexture::DetachFromGLContext() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_SurfaceTexturePlatformWrapper_detachFromGLContext( - env, j_surface_texture_.obj()); + Java_SurfaceTexturePlatformWrapper_detachFromGLContext(env, + j_surface_texture_); } ANativeWindow* SurfaceTexture::CreateSurface() { @@ -98,7 +97,7 @@ void SurfaceTexture::ReleaseSurfaceTexture() { JNIEnv* env = base::android::AttachCurrentThread(); - Java_SurfaceTexturePlatformWrapper_release(env, j_surface_texture_.obj()); + Java_SurfaceTexturePlatformWrapper_release(env, j_surface_texture_); } } // namespace gl
diff --git a/ui/platform_window/android/platform_ime_controller_android.cc b/ui/platform_window/android/platform_ime_controller_android.cc index a2e068a..377baae 100644 --- a/ui/platform_window/android/platform_ime_controller_android.cc +++ b/ui/platform_window/android/platform_ime_controller_android.cc
@@ -38,14 +38,9 @@ if (scoped_obj.is_null()) return; Java_PlatformImeControllerAndroid_updateTextInputState( - env, - scoped_obj.obj(), - state.type, - state.flags, - base::android::ConvertUTF8ToJavaString(env, state.text).obj(), - state.selection_start, - state.selection_end, - state.composition_start, + env, scoped_obj, state.type, state.flags, + base::android::ConvertUTF8ToJavaString(env, state.text), + state.selection_start, state.selection_end, state.composition_start, state.composition_end); } @@ -55,8 +50,7 @@ java_platform_ime_controller_android_.get(env); if (scoped_obj.is_null()) return; - Java_PlatformImeControllerAndroid_setImeVisibility( - env, scoped_obj.obj(), visible); + Java_PlatformImeControllerAndroid_setImeVisibility(env, scoped_obj, visible); } } // namespace ui
diff --git a/ui/platform_window/android/platform_window_android.cc b/ui/platform_window/android/platform_window_android.cc index e755412..a4618aa 100644 --- a/ui/platform_window/android/platform_window_android.cc +++ b/ui/platform_window/android/platform_window_android.cc
@@ -69,7 +69,7 @@ ScopedJavaLocalRef<jobject> scoped_obj = java_platform_window_android_.get(env); if (!scoped_obj.is_null()) { - Java_PlatformWindowAndroid_detach(env, scoped_obj.obj()); + Java_PlatformWindowAndroid_detach(env, scoped_obj); } }
diff --git a/ui/shell_dialogs/select_file_dialog_android.cc b/ui/shell_dialogs/select_file_dialog_android.cc index c4af2495..30c557d7 100644 --- a/ui/shell_dialogs/select_file_dialog_android.cc +++ b/ui/shell_dialogs/select_file_dialog_android.cc
@@ -120,11 +120,9 @@ bool accept_multiple_files = SelectFileDialog::SELECT_OPEN_MULTI_FILE == type; - Java_SelectFileDialog_selectFile(env, java_object_.obj(), - accept_types_java.obj(), - accept_types.second, - accept_multiple_files, - owning_window->GetJavaObject().obj()); + Java_SelectFileDialog_selectFile(env, java_object_, accept_types_java, + accept_types.second, accept_multiple_files, + owning_window->GetJavaObject()); } bool SelectFileDialogImpl::RegisterSelectFileDialog(JNIEnv* env) {
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index 7fc2220..aa608d55 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc
@@ -1235,7 +1235,7 @@ ui::DragDropTypes::DRAG_EVENT_SOURCE_MOUSE); // MenuController may have been deleted if |async_run_| so check for an active // instance before accessing member variables. - if (GetActiveInstance()) + if (GetActiveInstance() == this) did_initiate_drag_ = false; }
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc index ddc961e4..2c622a2 100644 --- a/ui/views/controls/menu/menu_controller_unittest.cc +++ b/ui/views/controls/menu/menu_controller_unittest.cc
@@ -33,6 +33,7 @@ #include "ui/aura/scoped_window_targeter.h" #include "ui/aura/window.h" #include "ui/views/controls/menu/menu_pre_target_handler.h" +#include "ui/wm/public/drag_drop_client.h" #endif #if defined(USE_X11) @@ -187,6 +188,61 @@ original_->QuitNow(); } +#if defined(USE_AURA) +// A DragDropClient which does not trigger a nested message loop. Instead a +// callback is triggered during StartDragAndDrop in order to allow testing. +class TestDragDropClient : public aura::client::DragDropClient { + public: + explicit TestDragDropClient(const base::Closure& callback) + : start_drag_and_drop_callback_(callback), drag_in_progress_(false) {} + ~TestDragDropClient() override {} + + // aura::client::DragDropClient: + int StartDragAndDrop(const ui::OSExchangeData& data, + aura::Window* root_window, + aura::Window* source_window, + const gfx::Point& screen_location, + int operation, + ui::DragDropTypes::DragEventSource source) override; + void DragUpdate(aura::Window* target, const ui::LocatedEvent& event) override; + void Drop(aura::Window* target, const ui::LocatedEvent& event) override; + void DragCancel() override; + bool IsDragDropInProgress() override; + + private: + base::Closure start_drag_and_drop_callback_; + bool drag_in_progress_; + + DISALLOW_COPY_AND_ASSIGN(TestDragDropClient); +}; + +int TestDragDropClient::StartDragAndDrop( + const ui::OSExchangeData& data, + aura::Window* root_window, + aura::Window* source_window, + const gfx::Point& screen_location, + int operation, + ui::DragDropTypes::DragEventSource source) { + drag_in_progress_ = true; + start_drag_and_drop_callback_.Run(); + return 0; +} + +void TestDragDropClient::DragUpdate(aura::Window* target, + const ui::LocatedEvent& event) {} +void TestDragDropClient::Drop(aura::Window* target, + const ui::LocatedEvent& event) { + drag_in_progress_ = false; +} +void TestDragDropClient::DragCancel() { + drag_in_progress_ = false; +} +bool TestDragDropClient::IsDragDropInProgress() { + return drag_in_progress_; +} + +#endif // defined(USE_AURA) + } // namespace class TestMenuItemViewShown : public MenuItemView { @@ -319,6 +375,17 @@ test_message_loop_->QuitNow(); } + // Tests destroying the active |menu_controller_| and replacing it with a new + // active instance. + void TestMenuControllerReplacementDuringDrag() { + DestroyMenuController(); + menu_item()->GetSubmenu()->Close(); + menu_controller_ = + new MenuController(true, menu_controller_delegate_.get()); + menu_controller_->owner_ = owner_.get(); + menu_controller_->showing_ = true; + } + protected: void SetPendingStateItem(MenuItemView* item) { menu_controller_->pending_state_.item = item; @@ -431,6 +498,15 @@ menu_controller_->message_loop_.reset(test_message_loop_); } + // Causes the |menu_controller_| to begin dragging. Use TestDragDropClient to + // avoid nesting message loops. + void StartDrag() { + const gfx::Point location; + menu_controller_->state_.item = menu_item()->GetSubmenu()->GetMenuItemAt(0); + menu_controller_->StartDrag( + menu_item()->GetSubmenu()->GetMenuItemAt(0)->CreateSubmenu(), location); + } + Widget* owner() { return owner_.get(); } ui::test::EventGenerator* event_generator() { return event_generator_.get(); } TestMenuItemViewShown* menu_item() { return menu_item_.get(); } @@ -1318,6 +1394,19 @@ EXPECT_EQ(run_result, nullptr); } +// Tests that if a MenuController is destroying during drag/drop, and another +// MenuController becomes active, that the exiting of drag does not cause a +// crash. +TEST_F(MenuControllerTest, MenuControllerReplacedDuringDrag) { + TestDragDropClient drag_drop_client( + base::Bind(&MenuControllerTest::TestMenuControllerReplacementDuringDrag, + base::Unretained(this))); + aura::client::SetDragDropClient(owner()->GetNativeWindow()->GetRootWindow(), + &drag_drop_client); + AddButtonMenuItems(); + StartDrag(); +} + #endif // defined(USE_AURA) } // namespace test
diff --git a/ui/views/test/menu_test_utils.cc b/ui/views/test/menu_test_utils.cc index 659632c..0f6178ab 100644 --- a/ui/views/test/menu_test_utils.cc +++ b/ui/views/test/menu_test_utils.cc
@@ -38,6 +38,13 @@ return ui::DragDropTypes::DRAG_COPY; } +int TestMenuDelegate::GetDragOperations(MenuItemView* sender) { + return ui::DragDropTypes::DRAG_COPY; +} + +void TestMenuDelegate::WriteDragData(MenuItemView* sender, + OSExchangeData* data) {} + // MenuControllerTestApi ------------------------------------------------------ MenuControllerTestApi::MenuControllerTestApi() {}
diff --git a/ui/views/test/menu_test_utils.h b/ui/views/test/menu_test_utils.h index ee7e127..b671827 100644 --- a/ui/views/test/menu_test_utils.h +++ b/ui/views/test/menu_test_utils.h
@@ -33,6 +33,8 @@ int OnPerformDrop(MenuItemView* menu, DropPosition position, const ui::DropTargetEvent& event) override; + int GetDragOperations(MenuItemView* sender) override; + void WriteDragData(MenuItemView* sender, OSExchangeData* data) override; private: // ID of last executed command.