Project import generated by Copybara. GitOrigin-RevId: 8e8570423e67b9a1a79625a98f4ac8c7178d692d
diff --git a/chromium/src/third_party/blink/OWNERS b/chromium/src/third_party/blink/OWNERS deleted file mode 100644 index b99f221..0000000 --- a/chromium/src/third_party/blink/OWNERS +++ /dev/null
@@ -1,20 +0,0 @@ -# Top-level owners for cases where there's nobody available with -# specific context -bratell.d@gmail.com -chrishtr@chromium.org -foolip@chromium.org -jochen@chromium.org -kinuko@chromium.org -mkwst@chromium.org -rbyers@chromium.org -tkent@chromium.org -yoavweiss@chromium.org - -# For *.gn* changes only. -thakis@chromium.org - -per-file PRESUBMIT*.py=dcheng@chromium.org -per-file PRESUBMIT*.py=foolip@chromium.org -per-file PRESUBMIT*.py=qyearsley@chromium.org -per-file PRESUBMIT*.py=thakis@chromium.org -per-file PRESUBMIT*.py=tkent@chromium.org
diff --git a/chromium/src/third_party/blink/PRESUBMIT_test.py b/chromium/src/third_party/blink/PRESUBMIT_test.py deleted file mode 100755 index 4c5d4fc..0000000 --- a/chromium/src/third_party/blink/PRESUBMIT_test.py +++ /dev/null
@@ -1,251 +0,0 @@ -#!/usr/bin/env vpython -# Copyright 2017 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. -# -# Note: running this test requires installing the package python-mock. -# pylint: disable=C0103 -# pylint: disable=F0401 -import PRESUBMIT - -import os.path -import subprocess -import sys -import unittest - -sys.path.append( - os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..')) - -import mock -from PRESUBMIT_test_mocks import MockInputApi -from PRESUBMIT_test_mocks import MockOutputApi -from PRESUBMIT_test_mocks import MockAffectedFile - - -class Capture(object): - """Class to capture a call argument that can be tested later on.""" - - def __init__(self): - self.value = None - - def __eq__(self, other): - self.value = other - return True - - -class PresubmitTest(unittest.TestCase): - @mock.patch('subprocess.Popen') - def testCheckChangeOnUploadWithBlinkAndChromiumFiles(self, _): - """This verifies that CheckChangeOnUpload will only call - check_blink_style.py on non-test files. - """ - diff_file_blink_h = ['some diff'] - diff_file_chromium_h = ['another diff'] - diff_file_test_expectations = ['more diff'] - mock_input_api = MockInputApi() - mock_input_api.files = [ - MockAffectedFile('file_blink.h', diff_file_blink_h), - MockAffectedFile('file_chromium.h', diff_file_chromium_h), - MockAffectedFile('web_tests/TestExpectations', - diff_file_test_expectations) - ] - # Access to a protected member _CheckStyle - # pylint: disable=W0212 - PRESUBMIT._CheckStyle(mock_input_api, MockOutputApi()) - capture = Capture() - # pylint: disable=E1101 - subprocess.Popen.assert_called_with(capture, stderr=-1) - self.assertEqual(6, len(capture.value)) - self.assertEqual('../../file_blink.h', capture.value[3]) - self.assertEqual('../../web_tests/TestExpectations', capture.value[5]) - - @mock.patch('subprocess.Popen') - def testCheckChangeOnUploadWithEmptyAffectedFileList(self, _): - """This verifies that CheckChangeOnUpload will skip calling - check_blink_style.py if the affected file list is empty. - """ - diff_file_chromium1_h = ['some diff'] - diff_file_chromium2_h = ['another diff'] - diff_file_layout_test_html = ['more diff'] - mock_input_api = MockInputApi() - mock_input_api.files = [] - # Access to a protected member _CheckStyle - # pylint: disable=W0212 - PRESUBMIT._CheckStyle(mock_input_api, MockOutputApi()) - self.assertEqual(0, subprocess.Popen.call_count) - - def test_FilterPaths(self): - """This verifies that _FilterPaths removes expected paths.""" - diff_file_chromium1_h = ['some diff'] - diff_web_tests_html = ['more diff'] - diff_presubmit = ['morer diff'] - diff_test_expectations = ['morest diff'] - mock_input_api = MockInputApi() - mock_input_api.files = [ - MockAffectedFile('file_chromium1.h', diff_file_chromium1_h), - MockAffectedFile('web_tests/some_tests.html', diff_web_tests_html), - MockAffectedFile('web_tests/TestExpectations', - diff_test_expectations), - MockAffectedFile('blink/PRESUBMIT', diff_presubmit), - ] - # Access to a protected member _FilterPaths - # pylint: disable=W0212 - filtered = PRESUBMIT._FilterPaths(mock_input_api) - self.assertEqual(2, len(filtered)) - self.assertEqual( - mock_input_api.os_path.join('..', '..', 'file_chromium1.h'), - filtered[0]) - self.assertEqual( - mock_input_api.os_path.join('..', '..', - 'web_tests/TestExpectations'), - filtered[1]) - - def testCheckPublicHeaderWithBlinkMojo(self): - """This verifies that _CheckForWrongMojomIncludes detects -blink mojo - headers in public files. - """ - - mock_input_api = MockInputApi() - potentially_bad_content = \ - '#include "public/platform/modules/cache_storage.mojom-blink.h"' - mock_input_api.files = [ - MockAffectedFile('third_party/blink/public/a_header.h', - [potentially_bad_content], None) - ] - # Access to a protected member _CheckForWrongMojomIncludes - # pylint: disable=W0212 - errors = PRESUBMIT._CheckForWrongMojomIncludes(mock_input_api, - MockOutputApi()) - self.assertEquals( - 'Public blink headers using Blink variant mojoms found. ' + - 'You must include .mojom-forward.h or .mojom-shared.h instead:', - errors[0].message) - - def testCheckInternalHeaderWithBlinkMojo(self): - """This verifies that _CheckForWrongMojomIncludes accepts -blink mojo - headers in blink internal files. - """ - - mock_input_api = MockInputApi() - potentially_bad_content = """ - #include "public/platform/modules/cache_storage.mojom-blink.h" - #include "public/platform/modules/cache_storage.mojom-blink-forward.h" - #include "public/platform/modules/cache_storage.mojom-blink-test-utils.h" - """ - mock_input_api.files = [ - MockAffectedFile('third_party/blink/renderer/core/a_header.h', - [potentially_bad_content], None) - ] - # Access to a protected member _CheckForWrongMojomIncludes - # pylint: disable=W0212 - errors = PRESUBMIT._CheckForWrongMojomIncludes(mock_input_api, - MockOutputApi()) - self.assertEquals([], errors) - - -class CxxDependencyTest(unittest.TestCase): - allow_list = [ - 'gfx::ColorSpace', - 'gfx::CubicBezier', - 'gfx::ICCProfile', - 'gfx::Point', - 'gfx::Rect', - 'gfx::ScrollOffset', - 'scoped_refptr<base::SingleThreadTaskRunner>', - ] - disallow_list = [ - 'GURL', - 'base::Callback<void()>', - 'content::RenderFrame', - 'gfx::Canvas', - 'net::IPEndPoint', - 'ui::Clipboard', - ] - disallow_message = [] - - def runCheck(self, filename, file_contents): - mock_input_api = MockInputApi() - mock_input_api.files = [ - MockAffectedFile(filename, file_contents), - ] - # Access to a protected member - # pylint: disable=W0212 - return PRESUBMIT._CheckForForbiddenChromiumCode( - mock_input_api, MockOutputApi()) - - # References in comments should never be checked. - def testCheckCommentsIgnored(self): - filename = 'third_party/blink/renderer/core/frame/frame.cc' - for item in self.allow_list: - errors = self.runCheck(filename, ['// %s' % item]) - self.assertEqual([], errors) - - for item in self.disallow_list: - errors = self.runCheck(filename, ['// %s' % item]) - self.assertEqual([], errors) - - # References in Test files should never be checked. - def testCheckTestsIgnored(self): - filename = 'third_party/blink/rendere/core/frame/frame_test.cc' - for item in self.allow_list: - errors = self.runCheck(filename, ['// %s' % item]) - self.assertEqual([], errors) - - for item in self.disallow_list: - errors = self.runCheck(filename, ['// %s' % item]) - self.assertEqual([], errors) - - # core, modules, public, et cetera should all have dependency enforcement. - def testCheckCoreEnforcement(self): - filename = 'third_party/blink/renderer/core/frame/frame.cc' - for item in self.allow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEqual([], errors) - - for item in self.disallow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEquals(1, len(errors)) - self.assertRegexpMatches( - errors[0].message, - r'^[^:]+:\d+ uses disallowed identifier .+$') - - def testCheckModulesEnforcement(self): - filename = 'third_party/blink/renderer/modules/modules_initializer.cc' - for item in self.allow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEqual([], errors) - - for item in self.disallow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEquals(1, len(errors)) - self.assertRegexpMatches( - errors[0].message, - r'^[^:]+:\d+ uses disallowed identifier .+$') - - def testCheckPublicEnforcement(self): - filename = 'third_party/blink/renderer/public/platform/web_thread.h' - for item in self.allow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEqual([], errors) - - for item in self.disallow_list: - errors = self.runCheck(filename, ['%s' % item]) - self.assertEquals(1, len(errors)) - self.assertRegexpMatches( - errors[0].message, - r'^[^:]+:\d+ uses disallowed identifier .+$') - - # platform and controller should be opted out of enforcement, but aren't - # currently checked because the PRESUBMIT test mocks are missing too - # much functionality... - - # External module checks should not affect CSS files. - def testCheckCSSIgnored(self): - filename = 'third_party/blink/renderer/someFile.css' - errors = self.runCheck(filename, - ['.toolbar::after { color: pink; }\n']) - self.assertEqual([], errors) - - -if __name__ == '__main__': - unittest.main()
diff --git a/chromium/src/third_party/blink/common/BUILD.gn b/chromium/src/third_party/blink/common/BUILD.gn deleted file mode 100644 index 995e073..0000000 --- a/chromium/src/third_party/blink/common/BUILD.gn +++ /dev/null
@@ -1,338 +0,0 @@ -# Copyright 2017 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("//testing/libfuzzer/fuzzer_test.gni") -import("//testing/test.gni") -import("//third_party/blink/renderer/build/scripts/scripts.gni") - -blink_python_runner("make_generated_feature_policy_features") { - script = "../renderer/build/scripts/make_feature_policy_features.py" - - inputs = - scripts_for_json5_files + [ - "../renderer/build/scripts/make_feature_policy_features.py", - "../renderer/core/feature_policy/feature_policy_features.json5", - "../renderer/build/scripts/templates/feature_policy_features.cc.tmpl", - ] - outputs = [ "$root_gen_dir/third_party/blink/common/feature_policy/feature_policy_features.cc" ] - - args = [ - rebase_path("../renderer/core/feature_policy/feature_policy_features.json5", - root_build_dir), - "--output_dir", - rebase_path("$root_gen_dir/third_party/blink/common/feature_policy", - root_build_dir), - ] -} - -blink_python_runner("make_generated_document_policy_features") { - script = "../renderer/build/scripts/make_document_policy_features.py" - - inputs = - scripts_for_json5_files + [ - "../renderer/build/scripts/make_document_policy_features.py", - "../renderer/build/scripts/make_document_policy_features_util.py", - "../renderer/core/feature_policy/document_policy_features.json5", - "../renderer/build/scripts/templates/document_policy_features.cc.tmpl", - ] - outputs = [ "$root_gen_dir/third_party/blink/common/feature_policy/document_policy_features.cc" ] - - args = [ - rebase_path( - "../renderer/core/feature_policy/document_policy_features.json5", - root_build_dir), - "--output_dir", - rebase_path("$root_gen_dir/third_party/blink/common/feature_policy", - root_build_dir), - ] -} - -config("blink_common_implementation") { - defines = [ "BLINK_COMMON_IMPLEMENTATION=1" ] -} - -source_set("common") { - # No target should directly depend on this target since this is just the - # source set rather than the actual component that can be linked to. - # Dependencies instead should be to //third_party/blink/public/common:common. - visibility = [ - ":*", - "//third_party/blink/public:all_blink", - "//third_party/blink/public/common", - ] - - configs += [ - ":blink_common_implementation", - "//build/config/compiler:noshadowing", - ] - - sources = [ - # NOTE: Please do not add public headers that need to be referenced from - # outside WebKit, add them in public/common instead. - "associated_interfaces/associated_interface_provider.cc", - "associated_interfaces/associated_interface_registry.cc", - "blob/blob_utils.cc", - "bluetooth/web_bluetooth_device_id.cc", - "browser_interface_broker_proxy.cc", - "cache_storage/cache_storage_utils.cc", - "client_hints/client_hints.cc", - "context_menu_data/context_menu_mojom_traits.cc", - "context_menu_data/context_menu_params_builder.cc", - "context_menu_data/untrustworthy_context_menu_params.cc", - "custom_handlers/protocol_handler_utils.cc", - "device_memory/approximated_device_memory.cc", - "dom_storage/session_storage_namespace_id.cc", - "experiments/memory_ablation_experiment.cc", - "feature_policy/document_policy.cc", - "feature_policy/feature_policy.cc", - "feature_policy/feature_policy_mojom_traits.cc", - "feature_policy/policy_value.cc", - "features.cc", - "fetch/fetch_api_request_body_mojom_traits.cc", - "frame/frame_policy.cc", - "frame/frame_policy_mojom_traits.cc", - "frame/frame_visual_properties.cc", - "frame/frame_visual_properties_mojom_traits.cc", - "frame/from_ad_state.cc", - "frame/payment_request_token.cc", - "frame/transient_allow_fullscreen.cc", - "frame/user_activation_state.cc", - "indexeddb/indexed_db_default_mojom_traits.cc", - "indexeddb/indexeddb_key.cc", - "indexeddb/indexeddb_key_path.cc", - "indexeddb/indexeddb_key_range.cc", - "indexeddb/indexeddb_metadata.cc", - "input/synthetic_web_input_event_builders.cc", - "input/web_coalesced_input_event.cc", - "input/web_coalesced_input_event_mojom_traits.cc", - "input/web_gesture_event.cc", - "input/web_input_event.cc", - "input/web_keyboard_event.cc", - "input/web_mouse_event.cc", - "input/web_mouse_wheel_event.cc", - "input/web_pointer_event.cc", - "input/web_touch_event.cc", - "loader/inter_process_time_ticks_converter.cc", - "loader/mime_sniffing_throttle.cc", - "loader/mime_sniffing_url_loader.cc", - "loader/network_utils.cc", - "loader/record_load_histograms.cc", - "loader/referrer_utils.cc", - "loader/resource_type_util.cc", - "loader/throttling_url_loader.cc", - "loader/url_loader_factory_bundle.cc", - "loader/url_loader_factory_bundle_mojom_traits.cc", - "loader/url_loader_throttle.cc", - "logging/logging_utils.cc", - "manifest/manifest.cc", - "manifest/manifest_icon_selector.cc", - "manifest/manifest_util.cc", - "media/watch_time_component.cc", - "media/watch_time_reporter.cc", - "mediastream/media_devices.cc", - "mediastream/media_devices_mojom_traits.cc", - "mediastream/media_stream_controls.cc", - "mediastream/media_stream_mojom_traits.cc", - "mediastream/media_stream_request.cc", - "messaging/cloneable_message.cc", - "messaging/cloneable_message_mojom_traits.cc", - "messaging/message_port_channel.cc", - "messaging/message_port_descriptor.cc", - "messaging/message_port_descriptor_mojom_traits.cc", - "messaging/string_message_codec.cc", - "messaging/transferable_message.cc", - "messaging/transferable_message_mojom_traits.cc", - "messaging/web_message_port.cc", - "mime_util/mime_util.cc", - "mobile_metrics/mobile_friendliness.cc", - "native_io/native_io_utils.cc", - "navigation/impression.cc", - "navigation/navigation_policy.cc", - "net/ip_address_space_util.cc", - "notifications/notification_mojom_traits.cc", - "notifications/notification_resources.cc", - "notifications/platform_notification_data.cc", - "origin_trials/trial_token.cc", - "origin_trials/trial_token_validator.cc", - "page/content_to_visible_time_reporter.cc", - "page/drag_mojom_traits.cc", - "page/drag_operation.cc", - "page/page_zoom.cc", - "page_state/page_state.cc", - "page_state/page_state_serialization.cc", - "peerconnection/webrtc_ip_handling_policy.cc", - "permissions/permission_utils.cc", - "renderer_preferences/renderer_preferences.cc", - "renderer_preferences/renderer_preferences_mojom_traits.cc", - "scheduler/web_scheduler_tracked_feature.cc", - "service_worker/service_worker_scope_match.cc", - "service_worker/service_worker_status_code.cc", - "service_worker/service_worker_type_converters.cc", - "switches.cc", - "thread_safe_browser_interface_broker_proxy.cc", - "unique_name/unique_name_helper.cc", - "user_agent/user_agent_metadata.cc", - "web_package/signed_exchange_consts.cc", - "web_package/web_package_request_matcher.cc", - "web_preferences/web_preferences.cc", - "web_preferences/web_preferences_mojom_traits.cc", - "widget/device_emulation_params_mojom_traits.cc", - "widget/screen_info_mojom_traits.cc", - "widget/visual_properties_mojom_traits.cc", - ] - - sources += get_target_outputs(":make_generated_document_policy_features") - sources += get_target_outputs(":make_generated_feature_policy_features") - - public_deps = [ - ":make_generated_document_policy_features", - ":make_generated_feature_policy_features", - "//third_party/blink/common/privacy_budget:privacy_budget", - "//third_party/blink/public/common:common_export", - "//third_party/blink/public/common:headers", - ] - - deps = [ - "//base", - "//build:chromeos_buildflags", - "//media/capture:capture_base", - "//media/capture/mojom:video_capture_mojom_support", - "//mojo/public/cpp/system", - "//net", - "//services/metrics/public/cpp:metrics_cpp", - "//services/metrics/public/cpp:ukm_builders", - "//services/metrics/public/mojom:mojom", - "//services/network/public/cpp:cpp", - "//ui/base:base", - "//ui/base/dragdrop/mojom:mojom_shared", - "//ui/display", - "//ui/events:events_base", - "//ui/latency/mojom:shared_mojom_traits", - ] - - # iOS doesn't use and must not depend on //media - if (!is_ios) { - deps += [ "//media" ] - } - - if (is_android || is_win) { - sources += [ - "font_unique_name_lookup/font_table_matcher.cc", - "font_unique_name_lookup/font_table_persistence.cc", - "font_unique_name_lookup/icu_fold_case_util.cc", - ] - - deps += [ "//third_party/icu" ] - } - - if (is_win) { - sources += [ "dwrite_rasterizer_support/dwrite_rasterizer_support.cc" ] - deps += [ "//ui/gfx/" ] - } -} - -test("blink_common_unittests") { - visibility = [ "*" ] - deps = [ - ":common_unittests_sources", - "//services/metrics/public/cpp:metrics_cpp", - "//services/metrics/public/cpp:ukm_builders", - "//services/metrics/public/mojom:mojom", - "//third_party/blink/common/privacy_budget:unit_tests", - "//third_party/blink/public/common", - "//ui/gfx:test_support", - ] - if (is_android) { - deps += [ - "//base:base_java", - "//media/base/android:media_java", - ] - } - data_deps = [ ":common_unittests_data" ] -} - -source_set("common_unittests_sources") { - testonly = true - - sources = [ - "bluetooth/web_bluetooth_device_id_unittest.cc", - "client_hints/client_hints_unittest.cc", - "device_memory/approximated_device_memory_unittest.cc", - "feature_policy/document_policy_unittest.cc", - "feature_policy/feature_policy_unittest.cc", - "feature_policy/policy_value_unittest.cc", - "frame/transient_allow_fullscreen_unittest.cc", - "frame/user_activation_state_unittest.cc", - "indexeddb/indexeddb_key_unittest.cc", - "input/synthetic_web_input_event_builders_unittest.cc", - "input/web_input_event_unittest.cc", - "loader/inter_process_time_ticks_converter_unittest.cc", - "loader/mime_sniffing_throttle_unittest.cc", - "loader/referrer_utils_unittest.cc", - "loader/throttling_url_loader_unittest.cc", - "manifest/manifest_icon_selector_unittest.cc", - "manifest/manifest_util_unittest.cc", - "media/watch_time_component_unittest.cc", - "mediastream/media_devices_unittest.cc", - "messaging/message_port_descriptor_unittest.cc", - "mime_util/mime_util_unittest.cc", - "net/ip_address_space_util_unittest.cc", - "notifications/notification_mojom_traits_unittest.cc", - "origin_trials/trial_token_unittest.cc", - "origin_trials/trial_token_validator_unittest.cc", - "page/content_to_visible_time_reporter_unittest.cc", - "page_state/page_state_serialization_unittest.cc", - "scheduler/web_scheduler_tracked_feature_unittest.cc", - "service_worker/service_worker_scope_match_unittest.cc", - "test/run_all_unittests.cc", - "tokens/multi_token_unittest.cc", - "tokens/tokens_mojom_traits_unittest.cc", - "unique_name/unique_name_helper_unittest.cc", - "user_agent/user_agent_metadata_unittest.cc", - "web_package/web_package_request_matcher_unittest.cc", - ] - - deps = [ - "//base", - "//base/test:test_support", - "//media/capture:capture_base", - "//mojo/core/embedder", - "//mojo/public/cpp/test_support:test_utils", - "//net", - "//net:test_support", - "//services/device:test_support", - "//services/network:test_support", - "//skia/public/mojom", - "//testing/gmock", - "//testing/gtest", - "//third_party/blink/public/common:headers", - "//third_party/blink/public/mojom/frame:frame_blink_headers", - "//third_party/blink/public/mojom/tokens:tokens_traits_headers", - "//third_party/boringssl", - "//url/mojom:url_mojom_gurl", - "//v8", - "//v8:v8_libplatform", - ] - - if (!is_android) { - # TODO(crbug.com/845384): Enable these tests also on Android. Currently - # they are excluded as they require V8 environment but V8 snapshot is - # not available in the current minimum test setting. - sources += [ - "messaging/string_message_codec_unittest.cc", - "messaging/web_message_port_unittest.cc", - ] - } - - if (is_android || is_win) { - sources += [ - "font_unique_name_lookup/font_table_matcher_unittest.cc", - "font_unique_name_lookup/icu_fold_case_util_unittest.cc", - ] - } -} - -group("common_unittests_data") { - data = [ "page_state/test_data/" ] -}
diff --git a/chromium/src/third_party/blink/common/DEPS b/chromium/src/third_party/blink/common/DEPS deleted file mode 100644 index 406eb2f..0000000 --- a/chromium/src/third_party/blink/common/DEPS +++ /dev/null
@@ -1,50 +0,0 @@ -include_rules = [ - # In general this directory should not depend on any of components/, - # content/ or other third_party/blink directories. - "-components", - "-content", - "-third_party/blink", - - # It is allowed to depend on common chromium stuff (and itself). - "+base", - "+build", - "+crypto/sha2.h", - "+cc/mojom/browser_controls_params.mojom.h", - "+net", - "+media", - "+mojo", - "+services/metrics/public/cpp", - "+services/metrics/public/mojom/ukm_interface.mojom.h", - "+services/network/public/cpp", - "+services/network/public/mojom/content_security_policy.mojom.h", - "+services/network/public/mojom/parsed_headers.mojom.h", - "+services/network/public/mojom/referrer_policy.mojom.h", - "+services/network/public/mojom/web_sandbox_flags.mojom-shared.h", - "+services/network/public/mojom/url_loader.mojom.h", - "+services/network/public/mojom/url_loader_factory.mojom.h", - "+services/network/public/mojom/url_response_head.mojom.h", - "+services/network/public/mojom/url_response_head.mojom-forward.h", - "+services/viz/public/mojom/compositing/local_surface_id.mojom.h", - "+skia/public/mojom/bitmap_skbitmap_mojom_traits.h", - "+testing/gmock/include/gmock", - "+testing/gtest/include/gtest", - "+third_party/blink/common", - "+third_party/blink/public/common", - "+third_party/blink/public/mojom", - "+third_party/icu/source/common/unicode/unistr.h", - "+ui/base/ui_base_switches_util.h", - "+ui/base/dragdrop/mojom", - "+ui/display", - "+ui/events/base_event_utils.h", - "+ui/gfx/presentation_feedback.h", - "+ui/gfx/transform.h", - "+ui/gfx/geometry", - "+ui/gfx/mojom/color_space.mojom.h", - "+ui/gfx/mojom/display_color_spaces.mojom.h", - "+ui/gfx/win/direct_write.h", - "+ui/latency/mojom/latency_info_mojom_traits.h", - "+url", -] -specific_include_rules = { - '.*unittest.?.cc': [ "+v8", "+services/network/test" ] -}
diff --git a/chromium/src/third_party/blink/common/DIR_METADATA b/chromium/src/third_party/blink/common/DIR_METADATA deleted file mode 100644 index bcfcab4..0000000 --- a/chromium/src/third_party/blink/common/DIR_METADATA +++ /dev/null
@@ -1,3 +0,0 @@ -monorail { - component: "Blink" -}
diff --git a/chromium/src/third_party/blink/common/OWNERS b/chromium/src/third_party/blink/common/OWNERS deleted file mode 100644 index 20eecf7..0000000 --- a/chromium/src/third_party/blink/common/OWNERS +++ /dev/null
@@ -1,13 +0,0 @@ -dcheng@chromium.org -dgozman@chromium.org -dtapuska@chromium.org -falken@chromium.org -haraken@chromium.org -jam@chromium.org -jbroman@chromium.org -kinuko@chromium.org -pfeldman@chromium.org -tkent@chromium.org - -# Any core owner can approve blink finch flags. -per-file features.cc=file://third_party/blink/renderer/core/OWNERS
diff --git a/chromium/src/third_party/blink/common/blob/OWNERS b/chromium/src/third_party/blink/common/blob/OWNERS deleted file mode 100644 index 5fe885e..0000000 --- a/chromium/src/third_party/blink/common/blob/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -file://storage/browser/blob/OWNERS -
diff --git a/chromium/src/third_party/blink/common/bluetooth/OWNERS b/chromium/src/third_party/blink/common/bluetooth/OWNERS deleted file mode 100644 index c10d540..0000000 --- a/chromium/src/third_party/blink/common/bluetooth/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -file://content/browser/bluetooth/OWNERS - -# Changes to IPC serialization require a security review to avoid introducing -# new sandbox escapes. -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/cache_storage/OWNERS b/chromium/src/third_party/blink/common/cache_storage/OWNERS deleted file mode 100644 index 3ce0392..0000000 --- a/chromium/src/third_party/blink/common/cache_storage/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/cache_storage/OWNERS - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/client_hints/client_hints.cc b/chromium/src/third_party/blink/common/client_hints/client_hints.cc deleted file mode 100644 index 9ca4772..0000000 --- a/chromium/src/third_party/blink/common/client_hints/client_hints.cc +++ /dev/null
@@ -1,162 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/client_hints/client_hints.h" - -#include <utility> -#include <vector> - -#include "base/feature_list.h" -#include "base/optional.h" -#include "base/stl_util.h" -#include "base/strings/string_tokenizer.h" -#include "base/strings/string_util.h" -#include "third_party/blink/public/common/feature_policy/feature_policy.h" -#include "third_party/blink/public/common/features.h" -#include "url/origin.h" - -namespace blink { - -const char* const kClientHintsHeaderMapping[] = { - "device-memory", - "dpr", - "width", - "viewport-width", - "rtt", - "downlink", - "ect", - "sec-ch-lang", - "sec-ch-ua", - "sec-ch-ua-arch", - "sec-ch-ua-platform", - "sec-ch-ua-model", - "sec-ch-ua-mobile", - "sec-ch-ua-full-version", - "sec-ch-ua-platform-version", -}; - -const unsigned kClientHintsNumberOfLegacyHints = 4; - -const mojom::FeaturePolicyFeature kClientHintsFeaturePolicyMapping[] = { - // Legacy Hints that are sent cross-origin regardless of FeaturePolicy when - // kAllowClientHintsToThirdParty is enabled - mojom::FeaturePolicyFeature::kClientHintDeviceMemory, - mojom::FeaturePolicyFeature::kClientHintDPR, - mojom::FeaturePolicyFeature::kClientHintWidth, - mojom::FeaturePolicyFeature::kClientHintViewportWidth, - // End of legacy hints. - mojom::FeaturePolicyFeature::kClientHintRTT, - mojom::FeaturePolicyFeature::kClientHintDownlink, - mojom::FeaturePolicyFeature::kClientHintECT, - mojom::FeaturePolicyFeature::kClientHintLang, - mojom::FeaturePolicyFeature::kClientHintUA, - mojom::FeaturePolicyFeature::kClientHintUAArch, - mojom::FeaturePolicyFeature::kClientHintUAPlatform, - mojom::FeaturePolicyFeature::kClientHintUAModel, - mojom::FeaturePolicyFeature::kClientHintUAMobile, - mojom::FeaturePolicyFeature::kClientHintUAFullVersion, - mojom::FeaturePolicyFeature::kClientHintUAPlatformVersion, -}; - -const size_t kClientHintsMappingsCount = base::size(kClientHintsHeaderMapping); - -static_assert( - base::size(kClientHintsHeaderMapping) == - (static_cast<int>(network::mojom::WebClientHintsType::kMaxValue) + 1), - "Client Hint name table size must match network::mojom::WebClientHintsType " - "range"); - -static_assert(base::size(kClientHintsFeaturePolicyMapping) == - kClientHintsMappingsCount, - "Client Hint table sizes must be identical between names and " - "feature policies"); - -const char* const kWebEffectiveConnectionTypeMapping[] = { - "4g" /* Unknown */, "4g" /* Offline */, "slow-2g" /* Slow 2G */, - "2g" /* 2G */, "3g" /* 3G */, "4g" /* 4G */ -}; - -const size_t kWebEffectiveConnectionTypeMappingCount = - base::size(kWebEffectiveConnectionTypeMapping); - -std::string SerializeLangClientHint(const std::string& raw_language_list) { - base::StringTokenizer t(raw_language_list, ","); - std::string result; - while (t.GetNext()) { - if (!result.empty()) - result.append(", "); - - result.append("\""); - result.append(t.token().c_str()); - result.append("\""); - } - return result; -} - -base::Optional<std::vector<network::mojom::WebClientHintsType>> FilterAcceptCH( - base::Optional<std::vector<network::mojom::WebClientHintsType>> in, - bool permit_lang_hints, - bool permit_ua_hints) { - if (!in.has_value()) - return base::nullopt; - - std::vector<network::mojom::WebClientHintsType> result; - for (network::mojom::WebClientHintsType hint : in.value()) { - // Some hints are supported only conditionally. - switch (hint) { - case network::mojom::WebClientHintsType::kLang: - if (permit_lang_hints) - result.push_back(hint); - break; - case network::mojom::WebClientHintsType::kUA: - case network::mojom::WebClientHintsType::kUAArch: - case network::mojom::WebClientHintsType::kUAPlatform: - case network::mojom::WebClientHintsType::kUAPlatformVersion: - case network::mojom::WebClientHintsType::kUAModel: - case network::mojom::WebClientHintsType::kUAMobile: - case network::mojom::WebClientHintsType::kUAFullVersion: - if (permit_ua_hints) - result.push_back(hint); - break; - default: - result.push_back(hint); - } - } - return base::make_optional(std::move(result)); -} - -bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type) { - return (type == network::mojom::WebClientHintsType::kUA || - type == network::mojom::WebClientHintsType::kUAMobile); -} - -// Add a list of Client Hints headers to be removed to the output vector, based -// on FeaturePolicy and the url's origin. -void FindClientHintsToRemove(const FeaturePolicy* feature_policy, - const GURL& url, - std::vector<std::string>* removed_headers) { - DCHECK(removed_headers); - url::Origin origin = url::Origin::Create(url); - size_t startHint = 0; - if (base::FeatureList::IsEnabled(features::kAllowClientHintsToThirdParty)) { - // Do not remove any legacy Client Hints - startHint = kClientHintsNumberOfLegacyHints; - } - for (size_t i = startHint; i < blink::kClientHintsMappingsCount; ++i) { - // Remove the hint if any is true: - // * Feature policy is null (we're in a sync XHR case) and the hint is not - // sent by default. - // * Feature policy exists and doesn't allow for the hint. - if ((!feature_policy && - !IsClientHintSentByDefault( - static_cast<network::mojom::WebClientHintsType>(i))) || - (feature_policy && - !feature_policy->IsFeatureEnabledForOrigin( - blink::kClientHintsFeaturePolicyMapping[i], origin))) { - removed_headers->push_back(blink::kClientHintsHeaderMapping[i]); - } - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/client_hints/client_hints_unittest.cc b/chromium/src/third_party/blink/common/client_hints/client_hints_unittest.cc deleted file mode 100644 index 57674fa..0000000 --- a/chromium/src/third_party/blink/common/client_hints/client_hints_unittest.cc +++ /dev/null
@@ -1,127 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/client_hints/client_hints.h" - -#include <iostream> - -#include "base/test/scoped_feature_list.h" -#include "services/network/public/mojom/web_client_hints_types.mojom-shared.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/features.h" -#include "url/gurl.h" - -using testing::UnorderedElementsAre; - -namespace blink { - -TEST(ClientHintsTest, SerializeLangClientHint) { - std::string header = SerializeLangClientHint(""); - EXPECT_TRUE(header.empty()); - - header = SerializeLangClientHint("es"); - EXPECT_EQ(std::string("\"es\""), header); - - header = SerializeLangClientHint("en-US,fr,de"); - EXPECT_EQ(std::string("\"en-US\", \"fr\", \"de\""), header); - - header = SerializeLangClientHint("en-US,fr,de,ko,zh-CN,ja"); - EXPECT_EQ(std::string("\"en-US\", \"fr\", \"de\", \"ko\", \"zh-CN\", \"ja\""), - header); -} - -TEST(ClientHintsTest, FilterAcceptCH) { - EXPECT_FALSE(FilterAcceptCH(base::nullopt, true, true).has_value()); - - base::Optional<std::vector<network::mojom::WebClientHintsType>> result; - - result = - FilterAcceptCH(std::vector<network::mojom::WebClientHintsType>( - {network::mojom::WebClientHintsType::kDeviceMemory, - network::mojom::WebClientHintsType::kRtt, - network::mojom::WebClientHintsType::kUA}), - /* permit_lang_hints = */ false, - /* permit_ua_hints = */ true); - ASSERT_TRUE(result.has_value()); - EXPECT_THAT( - result.value(), - UnorderedElementsAre(network::mojom::WebClientHintsType::kDeviceMemory, - network::mojom::WebClientHintsType::kRtt, - network::mojom::WebClientHintsType::kUA)); - - std::vector<network::mojom::WebClientHintsType> in{ - network::mojom::WebClientHintsType::kRtt, - network::mojom::WebClientHintsType::kLang, - network::mojom::WebClientHintsType::kUA, - network::mojom::WebClientHintsType::kUAArch, - network::mojom::WebClientHintsType::kUAPlatform, - network::mojom::WebClientHintsType::kUAPlatformVersion, - network::mojom::WebClientHintsType::kUAModel, - network::mojom::WebClientHintsType::kUAMobile, - network::mojom::WebClientHintsType::kUAFullVersion}; - - result = FilterAcceptCH(in, - /* permit_lang_hints = */ true, - /* permit_ua_hints = */ false); - ASSERT_TRUE(result.has_value()); - EXPECT_THAT(result.value(), - UnorderedElementsAre(network::mojom::WebClientHintsType::kRtt, - network::mojom::WebClientHintsType::kLang)); - - result = FilterAcceptCH(in, - /* permit_lang_hints = */ true, - /* permit_ua_hints = */ true); - ASSERT_TRUE(result.has_value()); - EXPECT_THAT(result.value(), - UnorderedElementsAre( - network::mojom::WebClientHintsType::kRtt, - network::mojom::WebClientHintsType::kLang, - network::mojom::WebClientHintsType::kUA, - network::mojom::WebClientHintsType::kUAArch, - network::mojom::WebClientHintsType::kUAPlatform, - network::mojom::WebClientHintsType::kUAPlatformVersion, - network::mojom::WebClientHintsType::kUAModel, - network::mojom::WebClientHintsType::kUAMobile, - network::mojom::WebClientHintsType::kUAFullVersion)); - - result = FilterAcceptCH(in, - /* permit_lang_hints = */ false, - /* permit_ua_hints = */ false); - ASSERT_TRUE(result.has_value()); - EXPECT_THAT(result.value(), - UnorderedElementsAre(network::mojom::WebClientHintsType::kRtt)); -} - -// Checks that the removed header list doesn't include legacy headers nor the -// on-by-default ones, when the kAllowClientHintsToThirdParty flag is on. -TEST(ClientHintsTest, FindClientHintsToRemoveLegacy) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndEnableFeature( - features::kAllowClientHintsToThirdParty); - std::vector<std::string> removed_headers; - FindClientHintsToRemove(nullptr, GURL(), &removed_headers); - EXPECT_THAT(removed_headers, - UnorderedElementsAre("rtt", "downlink", "ect", "sec-ch-lang", - "sec-ch-ua-arch", "sec-ch-ua-platform", - "sec-ch-ua-model", "sec-ch-ua-full-version", - "sec-ch-ua-platform-version")); -} - -// Checks that the removed header list includes legacy headers but not the -// on-by-default ones, when the kAllowClientHintsToThirdParty flag is off. -TEST(ClientHintsTest, FindClientHintsToRemoveNoLegacy) { - base::test::ScopedFeatureList scoped_feature_list; - scoped_feature_list.InitAndDisableFeature( - features::kAllowClientHintsToThirdParty); - std::vector<std::string> removed_headers; - FindClientHintsToRemove(nullptr, GURL(), &removed_headers); - EXPECT_THAT(removed_headers, - UnorderedElementsAre( - "device-memory", "dpr", "width", "viewport-width", "rtt", - "downlink", "ect", "sec-ch-lang", "sec-ch-ua-arch", - "sec-ch-ua-platform", "sec-ch-ua-model", - "sec-ch-ua-full-version", "sec-ch-ua-platform-version")); -} -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/context_menu_data/OWNERS b/chromium/src/third_party/blink/common/context_menu_data/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/context_menu_data/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/context_menu_data/context_menu_mojom_traits.cc b/chromium/src/third_party/blink/common/context_menu_data/context_menu_mojom_traits.cc deleted file mode 100644 index 1c7b1af..0000000 --- a/chromium/src/third_party/blink/common/context_menu_data/context_menu_mojom_traits.cc +++ /dev/null
@@ -1,65 +0,0 @@ -// Copyright 2021 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 "third_party/blink/public/common/context_menu_data/context_menu_mojom_traits.h" - -#include "build/build_config.h" -#include "third_party/blink/public/common/context_menu_data/menu_item_info.h" - -namespace mojo { - -// static -bool StructTraits<blink::mojom::ImpressionDataView, blink::Impression>::Read( - blink::mojom::ImpressionDataView data, - blink::Impression* out) { - if (!data.ReadConversionDestination(&out->conversion_destination) || - !data.ReadReportingOrigin(&out->reporting_origin) || - !data.ReadExpiry(&out->expiry)) - return false; - - out->impression_data = data.impression_data(); - return true; -} - -// static -bool StructTraits<blink::mojom::UntrustworthyContextMenuParamsDataView, - blink::UntrustworthyContextMenuParams>:: - Read(blink::mojom::UntrustworthyContextMenuParamsDataView data, - blink::UntrustworthyContextMenuParams* out) { - if (!data.ReadMediaType(&out->media_type) || - !data.ReadLinkUrl(&out->link_url) || - !data.ReadLinkText(&out->link_text) || - !data.ReadImpression(&out->impression) || - !data.ReadUnfilteredLinkUrl(&out->unfiltered_link_url) || - !data.ReadSrcUrl(&out->src_url) || - !data.ReadSelectionText(&out->selection_text) || - !data.ReadTitleText(&out->title_text) || - !data.ReadAltText(&out->alt_text) || - !data.ReadSuggestedFilename(&out->suggested_filename) || - !data.ReadMisspelledWord(&out->misspelled_word) || - !data.ReadDictionarySuggestions(&out->dictionary_suggestions) || - !data.ReadFrameCharset(&out->frame_charset) || - !data.ReadReferrerPolicy(&out->referrer_policy) || - !data.ReadLinkFollowed(&out->link_followed) || - !data.ReadCustomItems(&out->custom_items) || - !data.ReadSourceType(&out->source_type) || - !data.ReadInputFieldType(&out->input_field_type) || - !data.ReadSelectionRect(&out->selection_rect)) - return false; - - out->x = data.x(); - out->y = data.y(); - out->has_image_contents = data.has_image_contents(); - out->media_flags = data.media_flags(); - out->spellcheck_enabled = data.spellcheck_enabled(); - out->is_editable = data.is_editable(); - out->writing_direction_default = data.writing_direction_default(); - out->writing_direction_left_to_right = data.writing_direction_left_to_right(); - out->writing_direction_right_to_left = data.writing_direction_right_to_left(); - out->edit_flags = data.edit_flags(); - out->selection_start_offset = data.selection_start_offset(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/context_menu_data/context_menu_params_builder.cc b/chromium/src/third_party/blink/common/context_menu_data/context_menu_params_builder.cc deleted file mode 100644 index 51f7b87..0000000 --- a/chromium/src/third_party/blink/common/context_menu_data/context_menu_params_builder.cc +++ /dev/null
@@ -1,83 +0,0 @@ -// Copyright (c) 2013 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 "third_party/blink/public/common/context_menu_data/context_menu_params_builder.h" - -#include <stddef.h> - -#include "base/strings/utf_string_conversions.h" -#include "third_party/blink/public/common/context_menu_data/context_menu_data.h" -#include "third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h" -#include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h" - -namespace blink { - -namespace { - -blink::mojom::CustomContextMenuItemPtr MenuItemBuild( - const blink::MenuItemInfo& item) { - auto result = blink::mojom::CustomContextMenuItem::New(); - - result->label = item.label; - result->tool_tip = item.tool_tip; - result->type = - static_cast<blink::mojom::CustomContextMenuItemType>(item.type); - result->action = item.action; - result->rtl = (item.text_direction == base::i18n::RIGHT_TO_LEFT); - result->has_directional_override = item.has_text_direction_override; - result->enabled = item.enabled; - result->checked = item.checked; - for (const auto& sub_menu_item : item.sub_menu_items) - result->submenu.push_back(MenuItemBuild(sub_menu_item)); - - return result; -} - -} // namespace - -// static -UntrustworthyContextMenuParams ContextMenuParamsBuilder::Build( - const blink::ContextMenuData& data) { - blink::UntrustworthyContextMenuParams params; - params.media_type = data.media_type; - params.x = data.mouse_position.x(); - params.y = data.mouse_position.y(); - params.link_url = data.link_url; - params.unfiltered_link_url = data.link_url; - params.src_url = data.src_url; - params.has_image_contents = data.has_image_contents; - params.media_flags = data.media_flags; - params.selection_text = base::UTF8ToUTF16(data.selected_text); - params.selection_start_offset = data.selection_start_offset; - params.title_text = base::UTF8ToUTF16(data.title_text); - params.alt_text = base::UTF8ToUTF16(data.alt_text); - params.misspelled_word = data.misspelled_word; - params.spellcheck_enabled = data.is_spell_checking_enabled; - params.is_editable = data.is_editable; - params.writing_direction_default = data.writing_direction_default; - params.writing_direction_left_to_right = data.writing_direction_left_to_right; - params.writing_direction_right_to_left = data.writing_direction_right_to_left; - params.edit_flags = data.edit_flags; - params.frame_charset = data.frame_encoding; - params.referrer_policy = data.referrer_policy; - params.suggested_filename = base::UTF8ToUTF16(data.suggested_filename); - params.input_field_type = data.input_field_type; - - for (const auto& suggestion : data.dictionary_suggestions) - params.dictionary_suggestions.push_back(suggestion); - - for (const auto& item : data.custom_items) - params.custom_items.push_back(MenuItemBuild(item)); - - params.link_text = base::UTF8ToUTF16(data.link_text); - - if (data.impression) - params.impression = data.impression; - - params.source_type = static_cast<ui::MenuSourceType>(data.source_type); - - return params; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/context_menu_data/untrustworthy_context_menu_params.cc b/chromium/src/third_party/blink/common/context_menu_data/untrustworthy_context_menu_params.cc deleted file mode 100644 index 59c0b07..0000000 --- a/chromium/src/third_party/blink/common/context_menu_data/untrustworthy_context_menu_params.cc +++ /dev/null
@@ -1,82 +0,0 @@ -// Copyright (c) 2011 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 "third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h" - -#include "third_party/blink/public/common/context_menu_data/context_menu_data.h" -#include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h" - -namespace blink { - -UntrustworthyContextMenuParams::UntrustworthyContextMenuParams() - : media_type(blink::mojom::ContextMenuDataMediaType::kNone), - x(0), - y(0), - has_image_contents(false), - media_flags(0), - spellcheck_enabled(false), - is_editable(false), - writing_direction_default( - blink::ContextMenuData::kCheckableMenuItemDisabled), - writing_direction_left_to_right( - blink::ContextMenuData::kCheckableMenuItemEnabled), - writing_direction_right_to_left( - blink::ContextMenuData::kCheckableMenuItemEnabled), - edit_flags(0), - referrer_policy(network::mojom::ReferrerPolicy::kDefault), - source_type(ui::MENU_SOURCE_NONE), - input_field_type(blink::mojom::ContextMenuDataInputFieldType::kNone), - selection_start_offset(0) {} - -UntrustworthyContextMenuParams::UntrustworthyContextMenuParams( - const UntrustworthyContextMenuParams& other) { - Assign(other); -} - -UntrustworthyContextMenuParams& UntrustworthyContextMenuParams::operator=( - const UntrustworthyContextMenuParams& other) { - if (&other == this) - return *this; - Assign(other); - return *this; -} - -void UntrustworthyContextMenuParams::Assign( - const UntrustworthyContextMenuParams& other) { - media_type = other.media_type; - x = other.x; - y = other.y; - link_url = other.link_url; - link_text = other.link_text; - impression = other.impression; - unfiltered_link_url = other.unfiltered_link_url; - src_url = other.src_url; - has_image_contents = other.has_image_contents; - media_flags = other.media_flags; - selection_text = other.selection_text; - title_text = other.title_text; - alt_text = other.alt_text; - suggested_filename = other.suggested_filename; - misspelled_word = other.misspelled_word; - dictionary_suggestions = other.dictionary_suggestions; - spellcheck_enabled = other.spellcheck_enabled; - is_editable = other.is_editable; - writing_direction_default = other.writing_direction_default; - writing_direction_left_to_right = other.writing_direction_left_to_right; - writing_direction_right_to_left = other.writing_direction_right_to_left; - edit_flags = other.edit_flags; - frame_charset = other.frame_charset; - referrer_policy = other.referrer_policy; - link_followed = other.link_followed; - for (auto& item : other.custom_items) - custom_items.push_back(item.Clone()); - source_type = other.source_type; - input_field_type = other.input_field_type; - selection_rect = other.selection_rect; - selection_start_offset = other.selection_start_offset; -} - -UntrustworthyContextMenuParams::~UntrustworthyContextMenuParams() = default; - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/custom_handlers/protocol_handler_utils.cc b/chromium/src/third_party/blink/common/custom_handlers/protocol_handler_utils.cc deleted file mode 100644 index 84c3e27..0000000 --- a/chromium/src/third_party/blink/common/custom_handlers/protocol_handler_utils.cc +++ /dev/null
@@ -1,48 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/custom_handlers/protocol_handler_utils.h" - -#include "base/strings/string_piece.h" -#include "base/strings/string_util.h" - -namespace blink { - -bool IsValidCustomHandlerScheme(const base::StringPiece scheme, - bool allow_ext_prefix, - bool& has_custom_scheme_prefix) { - has_custom_scheme_prefix = false; - - static constexpr const char kWebPrefix[] = "web+"; - static constexpr const char kExtPrefix[] = "ext+"; - DCHECK_EQ(base::size(kWebPrefix), base::size(kExtPrefix)); - static constexpr const size_t kPrefixLength = base::size(kWebPrefix) - 1; - if (base::StartsWith(scheme, kWebPrefix, - base::CompareCase::INSENSITIVE_ASCII) || - (allow_ext_prefix && - base::StartsWith(scheme, kExtPrefix, - base::CompareCase::INSENSITIVE_ASCII))) { - has_custom_scheme_prefix = true; - // HTML5 requires that schemes with the |web+| prefix contain one or more - // ASCII alphas after that prefix. - auto scheme_name = scheme.substr(kPrefixLength); - if (scheme_name.empty()) - return false; - for (auto& character : scheme_name) { - if (!base::IsAsciiAlpha(character)) - return false; - } - return true; - } - - static constexpr const char* const kProtocolSafelist[] = { - "bitcoin", "cabal", "dat", "did", "doi", "dweb", - "ethereum", "geo", "hyper", "im", "ipfs", "ipns", - "irc", "ircs", "magnet", "mailto", "mms", "news", - "nntp", "openpgp4fpr", "sip", "sms", "smsto", "ssb", - "ssh", "tel", "urn", "webcal", "wtai", "xmpp"}; - return base::Contains(kProtocolSafelist, base::ToLowerASCII(scheme)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/experiments/memory_ablation_experiment.cc b/chromium/src/third_party/blink/common/experiments/memory_ablation_experiment.cc deleted file mode 100644 index c1a2ae9..0000000 --- a/chromium/src/third_party/blink/common/experiments/memory_ablation_experiment.cc +++ /dev/null
@@ -1,140 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/experiments/memory_ablation_experiment.h" - -#include <algorithm> -#include <limits> - -#include "base/bind.h" -#include "base/callback_helpers.h" -#include "base/debug/alias.h" -#include "base/metrics/field_trial_params.h" -#include "base/process/process_metrics.h" -#include "base/rand_util.h" -#include "base/sequenced_task_runner.h" -#include "base/system/sys_info.h" - -namespace blink { - -const base::Feature kMemoryAblationFeature{"MemoryAblation", - base::FEATURE_DISABLED_BY_DEFAULT}; -const base::Feature kRendererMemoryAblationFeature{ - "RendererMemoryAblation", base::FEATURE_DISABLED_BY_DEFAULT}; - -const char kMemoryAblationFeatureSizeParam[] = "Size"; -const char kMemoryAblationFeatureMinRAMParam[] = "MinRAM"; -const char kMemoryAblationFeatureMaxRAMParam[] = "MaxRAM"; - -// Since MaybeStart() is called during startup, we delay the allocation -// to avoid slowing things down. -constexpr size_t kAllocationDelaySeconds = 5; - -// We need to touch allocated memory to "dirty" it. However, touching -// large chunks of memory (even a single byte per page) can be costly -// (~60ms per 10MiB on Nexus 5). So we touch in chunks to allow other -// things to happen in between. With the following values we'll touch -// 2MiB per second, spending ~10% of 250ms time slice per chunk. -constexpr size_t kTouchDelayMilliseconds = 250; -constexpr size_t kTouchChunkSize = 512 * 1024; - -MemoryAblationExperiment::MemoryAblationExperiment() {} - -MemoryAblationExperiment::~MemoryAblationExperiment() {} - -MemoryAblationExperiment* MemoryAblationExperiment::GetInstance() { - static auto* instance = new MemoryAblationExperiment(); - return instance; -} - -void MemoryAblationExperiment::MaybeStart( - scoped_refptr<base::SequencedTaskRunner> task_runner) { - MaybeStartInternal(kMemoryAblationFeature, task_runner); -} - -void MemoryAblationExperiment::MaybeStartForRenderer( - scoped_refptr<base::SequencedTaskRunner> task_runner) { - MaybeStartInternal(kRendererMemoryAblationFeature, task_runner); -} - -void MemoryAblationExperiment::MaybeStartInternal( - const base::Feature& memory_ablation_feature, - scoped_refptr<base::SequencedTaskRunner> task_runner) { - int min_ram_mib = base::GetFieldTrialParamByFeatureAsInt( - memory_ablation_feature, kMemoryAblationFeatureMinRAMParam, - 0 /* default value */); - int max_ram_mib = base::GetFieldTrialParamByFeatureAsInt( - memory_ablation_feature, kMemoryAblationFeatureMaxRAMParam, - std::numeric_limits<int>::max() /* default value */); - if (base::SysInfo::AmountOfPhysicalMemoryMB() > max_ram_mib || - base::SysInfo::AmountOfPhysicalMemoryMB() <= min_ram_mib) { - return; - } - - int size = base::GetFieldTrialParamByFeatureAsInt( - memory_ablation_feature, kMemoryAblationFeatureSizeParam, - 0 /* default value */); - if (size > 0) { - GetInstance()->Start(task_runner, size); - } -} - -void MemoryAblationExperiment::Start( - scoped_refptr<base::SequencedTaskRunner> task_runner, - size_t memory_size) { - DCHECK(!task_runner_) << "Already started"; - task_runner_ = task_runner; - // This class is a singleton, so "Unretained(this)" below is fine. - task_runner_->PostDelayedTask( - FROM_HERE, - base::BindOnce(&MemoryAblationExperiment::AllocateMemory, - base::Unretained(this), memory_size), - base::TimeDelta::FromSeconds(kAllocationDelaySeconds)); -} - -void MemoryAblationExperiment::AllocateMemory(size_t size) { - memory_size_ = size; - memory_.reset(new uint8_t[size]); - ScheduleTouchMemory(0); -} - -void MemoryAblationExperiment::TouchMemory(size_t offset) { - if (memory_) { - size_t page_size = base::GetPageSize(); - uint8_t* memory = memory_.get(); - size_t max_offset = std::min(offset + kTouchChunkSize, memory_size_); - if (offset == 0) { - // Fill the first page with random bytes. We'll use this page as - // a template for all other pages. - size_t rand_size = std::min(page_size, memory_size_); - base::RandBytes(memory, rand_size); - offset += rand_size; - } - for (; offset < max_offset; offset += page_size) { - // Copy from the first page. - size_t copy_size = std::min(page_size, max_offset - offset); - memcpy(memory + offset, memory, copy_size); - // Make this page different by stamping it with the offset. - if (copy_size >= sizeof(size_t)) { - *reinterpret_cast<size_t*>(memory + offset) = offset; - } - } - // Make sure compiler doesn't optimize away the writes. - base::debug::Alias(memory); - if (offset < memory_size_) { - ScheduleTouchMemory(offset); - } - } -} - -void MemoryAblationExperiment::ScheduleTouchMemory(size_t offset) { - // This class is a singleton, so "Unretained(this)" below is fine. - task_runner_->PostDelayedTask( - FROM_HERE, - base::BindOnce(&MemoryAblationExperiment::TouchMemory, - base::Unretained(this), offset), - base::TimeDelta::FromMilliseconds(kTouchDelayMilliseconds)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/OWNERS b/chromium/src/third_party/blink/common/feature_policy/OWNERS deleted file mode 100644 index 909d625..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/OWNERS +++ /dev/null
@@ -1,7 +0,0 @@ -iclelland@chromium.org -raymes@chromium.org -loonybear@chromium.org - - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/feature_policy/README.md b/chromium/src/third_party/blink/common/feature_policy/README.md deleted file mode 100644 index d4dc313..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/README.md +++ /dev/null
@@ -1,115 +0,0 @@ -## Permissions Policy Guide (Previously Feature Policy) -Permissions policy is the new name for feature policy with a new HTTP header which uses [structured header](https://httpwg.org/http-extensions/draft-ietf-httpbis-header-structure.html) syntax. Code currently under feature_policy directory in chromium repository has not been renamed yet. - -### How to add a new feature to permissions policy - -Permissions policy (see [spec](https://w3c.github.io/webappsec-permissions-policy/)) is a -mechanism that allows developers to selectively enable and disable various -[browser features an -APIs](https://cs.chromium.org/chromium/src/third_party/blink/public/mojom/feature_policy/feature_policy.mojom) -(e.g, "vibrate", "fullscreen", "usb", etc.). A permissions policy can be defined -via a HTTP header and/or an iframe "allow" attribute. - -Below is an example of a header policy (note that the header should be kept in -one line, split into multiple for clarity reasons): - - Permissions-Policy: vibrate=(), geolocation=(self https://example.com), camera=* - -- `vibrate` is disabled for all browsing contexts; -- `geolocation` is disabled for all browsing contexts except for its own - origin and those whose origin is "https://example.com"; -- `camera` is enabled for all browsing contexts. - -Below is an example of a container policy: - - <iframe allowpaymentrequest allow='vibrate; fullscreen'></iframe> - -OR - - <iframe allowpaymentrequest allow="vibrate 'src'; fullscreen 'src'"></iframe> - - -- `payment` is enabled (via `allowpaymentrequest`) on all browsing contexts - within the iframe; -- `vibrate` and `fullscreen` are enabled on the origin of the URL of the - iframe's `src` attribute. - -Combined with a header policy and a container policy, [inherited -policy](https://w3c.github.io/webappsec-permissions-policy/#inherited-policy) defines the -availability of a feature. -See more details for how to [define an inherited policy for -feature](https://w3c.github.io/webappsec-permissions-policy/#define-inherited-policy) - -#### Adding a new feature to permissions policy -A step-to-step guide with examples. - -##### Shipping features behind a flag -If the additional feature is unshipped, or if the correct behaviour with feature -policy is undetermined, consider shipping the feature behind a runtime-enabled feature. - -##### Define new feature -1. Permissions policy features are defined in -`third_party/blink/renderer/core/feature_policy/feature_policy_features.json5`. Add the new feature, -placing any runtime-enabled feature or origin trial dependencies in its "depends_on" field as -described in the file's comments. - -2. Append the new feature enum with a brief description as well in -`third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom`. - -3. Append the new feature name to `PermissionsPolicyFeature` enum in -`third_party/blink/public/devtools_protocol/browser_protocol.pdl`. - -##### Integrate the feature behaviour with permissions policy -1. The most common way to check if features are enabled is `ExecutionContext::IsFeatureEnabled`. - -2. Examples: -- `vibrate`: `NavigatorVibration::vibrate()` -- `payment`: `AllowedToUsePaymentRequest()` -- `usb`: `USB::getDevices()` - -##### Write web-platform-tests -To test the new feature with permissions policy, refer to -`third_party/blink/web_tests/external/wpt/feature-policy/README.md` for -instructions on how to use the permissions policy test framework. - -## Document Policy Guide -### How to add a new feature to document policy - -Document Policy (see [spec](https://w3c.github.io/webappsec-permissions-policy/document-policy.html)) is a similar mechanism to Feature Policy. It is intended - -to cover those kinds of features which don't involve delegation of permission to trusted origins; features which are more about configuring a document, or removing features (sandboxing) from a document or a frame. Document Policy can only be set through HTTP header, and will not inherit to subframes. - -Example HTTP header: `Document-Policy: force-load-at-top=?0, lossy-images-max-bpp=1.0` - -- `force-load-at-top` is set to boolean value false (`?0` in [structured header syntax](https://httpwg.org/http-extensions/draft-ietf-httpbis-header-structure.html)), i.e. the - feature is disallowed in current document; -- `lossy-images-max-bpp` is set to 1.0, i.e. lossy image format (e.g. jpeg) images with -byte per pixel rate higher than 1.0 will be blocked. - - -#### Adding a new feature to document policy - -##### Shipping features behind a flag -If the additional feature is unshipped, or if the correct behaviour with document -policy is undetermined, consider shipping the feature behind a runtime-enabled feature. - -##### Define new feature -1. Document policy features are defined in -`third_party/blink/renderer/core/feature_policy/document_policy_features.json5`. Add the new feature, -placing any runtime-enabled feature or origin trial dependencies in its "depends_on" field as -described in the file's comments. - -2. Append the new feature enum with a brief description as well in -`third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom` - -##### Integrate the feature behaviour with document policy -The most common way to check if features are enabled is `ExecutionContext::IsFeatureEnabled`. - -##### Write web-platform-tests -Please add new tests to `third_party/blink/web_tests/external/wpt/document-policy/`. - -#### Contacts -For more questions, please feel free to reach out to: -iclelland@chromium.org -chenleihu@google.com -(Emerita: loonybear@)
diff --git a/chromium/src/third_party/blink/common/feature_policy/document_policy.cc b/chromium/src/third_party/blink/common/feature_policy/document_policy.cc deleted file mode 100644 index 5749caa..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/document_policy.cc +++ /dev/null
@@ -1,215 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/feature_policy/document_policy.h" - -#include "base/memory/ptr_util.h" -#include "base/no_destructor.h" -#include "net/http/structured_headers.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom.h" - -namespace blink { - -// static -std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithHeaderPolicy( - const ParsedDocumentPolicy& header_policy) { - DocumentPolicyFeatureState feature_defaults; - for (const auto& entry : GetDocumentPolicyFeatureInfoMap()) - feature_defaults.emplace(entry.first, entry.second.default_value); - return CreateWithHeaderPolicy(header_policy.feature_state, - header_policy.endpoint_map, feature_defaults); -} - -// static -std::unique_ptr<DocumentPolicy> DocumentPolicy::CopyStateFrom( - const DocumentPolicy* source) { - if (!source) - return nullptr; - - std::unique_ptr<DocumentPolicy> new_policy = - DocumentPolicy::CreateWithHeaderPolicy( - {/* header_policy */ {}, /* endpoint_map */ {}}); - - new_policy->internal_feature_state_ = source->internal_feature_state_; - new_policy->endpoint_map_ = source->endpoint_map_; - return new_policy; -} - -namespace { -net::structured_headers::Item PolicyValueToItem(const PolicyValue& value) { - switch (value.Type()) { - case mojom::PolicyValueType::kBool: - return net::structured_headers::Item{value.BoolValue()}; - case mojom::PolicyValueType::kDecDouble: - return net::structured_headers::Item{value.DoubleValue()}; - default: - NOTREACHED(); - return net::structured_headers::Item{ - nullptr, net::structured_headers::Item::ItemType::kNullType}; - } -} - -} // namespace - -// static -base::Optional<std::string> DocumentPolicy::Serialize( - const DocumentPolicyFeatureState& policy) { - return DocumentPolicy::SerializeInternal(policy, - GetDocumentPolicyFeatureInfoMap()); -} - -// static -base::Optional<std::string> DocumentPolicy::SerializeInternal( - const DocumentPolicyFeatureState& policy, - const DocumentPolicyFeatureInfoMap& feature_info_map) { - net::structured_headers::Dictionary root; - - std::vector<std::pair<mojom::DocumentPolicyFeature, PolicyValue>> - sorted_policy(policy.begin(), policy.end()); - std::sort(sorted_policy.begin(), sorted_policy.end(), - [&](const auto& a, const auto& b) { - const std::string& feature_a = - feature_info_map.at(a.first).feature_name; - const std::string& feature_b = - feature_info_map.at(b.first).feature_name; - return feature_a < feature_b; - }); - - for (const auto& policy_entry : sorted_policy) { - const mojom::DocumentPolicyFeature feature = policy_entry.first; - const std::string& feature_name = feature_info_map.at(feature).feature_name; - const PolicyValue& value = policy_entry.second; - - root[feature_name] = net::structured_headers::ParameterizedMember( - PolicyValueToItem(value), /* parameters */ {}); - } - - return net::structured_headers::SerializeDictionary(root); -} - -// static -DocumentPolicyFeatureState DocumentPolicy::MergeFeatureState( - const DocumentPolicyFeatureState& base_policy, - const DocumentPolicyFeatureState& override_policy) { - DocumentPolicyFeatureState result; - auto i1 = base_policy.begin(); - auto i2 = override_policy.begin(); - - // Because std::map is by default ordered in ascending order based on key - // value, we can run 2 iterators simultaneously through both maps to merge - // them. - while (i1 != base_policy.end() || i2 != override_policy.end()) { - if (i1 == base_policy.end()) { - result.insert(*i2); - i2++; - } else if (i2 == override_policy.end()) { - result.insert(*i1); - i1++; - } else { - if (i1->first == i2->first) { - const PolicyValue& base_value = i1->second; - const PolicyValue& override_value = i2->second; - // When policy value has strictness ordering e.g. boolean, take the - // stricter one. In this case a.IsCompatibleWith(b) means a is eq or - // stricter than b. - // When policy value does not have strictness ordering, e.g. enum, - // take override_value. In this case a.IsCompatibleWith(b) means - // a != b. - const PolicyValue& new_value = - base_value.IsCompatibleWith(override_value) ? base_value - : override_value; - result.emplace(i1->first, new_value); - i1++; - i2++; - } else if (i1->first < i2->first) { - result.insert(*i1); - i1++; - } else { - result.insert(*i2); - i2++; - } - } - } - - return result; -} - -bool DocumentPolicy::IsFeatureEnabled( - mojom::DocumentPolicyFeature feature) const { - mojom::PolicyValueType feature_type = - GetDocumentPolicyFeatureInfoMap().at(feature).default_value.Type(); - return IsFeatureEnabled(feature, - PolicyValue::CreateMaxPolicyValue(feature_type)); -} - -bool DocumentPolicy::IsFeatureEnabled( - mojom::DocumentPolicyFeature feature, - const PolicyValue& threshold_value) const { - return threshold_value.IsCompatibleWith(GetFeatureValue(feature)); -} - -PolicyValue DocumentPolicy::GetFeatureValue( - mojom::DocumentPolicyFeature feature) const { - return internal_feature_state_[static_cast<size_t>(feature)]; -} - -const base::Optional<std::string> DocumentPolicy::GetFeatureEndpoint( - mojom::DocumentPolicyFeature feature) const { - auto endpoint_it = endpoint_map_.find(feature); - if (endpoint_it != endpoint_map_.end()) { - return endpoint_it->second; - } else { - return base::nullopt; - } -} - -void DocumentPolicy::UpdateFeatureState( - const DocumentPolicyFeatureState& feature_state) { - for (const auto& feature_and_value : feature_state) { - internal_feature_state_[static_cast<size_t>(feature_and_value.first)] = - feature_and_value.second; - } -} - -DocumentPolicy::DocumentPolicy(const DocumentPolicyFeatureState& header_policy, - const FeatureEndpointMap& endpoint_map, - const DocumentPolicyFeatureState& defaults) - : endpoint_map_(endpoint_map) { - // Fill the internal feature state with default value first, - // and overwrite the value if it is specified in the header. - UpdateFeatureState(defaults); - UpdateFeatureState(header_policy); -} - -// static -std::unique_ptr<DocumentPolicy> DocumentPolicy::CreateWithHeaderPolicy( - const DocumentPolicyFeatureState& header_policy, - const FeatureEndpointMap& endpoint_map, - const DocumentPolicyFeatureState& defaults) { - std::unique_ptr<DocumentPolicy> new_policy = base::WrapUnique( - new DocumentPolicy(header_policy, endpoint_map, defaults)); - return new_policy; -} - -// static -bool DocumentPolicy::IsPolicyCompatible( - const DocumentPolicyFeatureState& required_policy, - const DocumentPolicyFeatureState& incoming_policy) { - for (const auto& required_entry : required_policy) { - const auto& feature = required_entry.first; - const auto& required_value = required_entry.second; - // Use default value when incoming policy does not specify a value. - const auto incoming_entry = incoming_policy.find(feature); - const auto& incoming_value = - incoming_entry != incoming_policy.end() - ? incoming_entry->second - : GetDocumentPolicyFeatureInfoMap().at(feature).default_value; - - if (!incoming_value.IsCompatibleWith(required_value)) - return false; - } - return true; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/document_policy_unittest.cc b/chromium/src/third_party/blink/common/feature_policy/document_policy_unittest.cc deleted file mode 100644 index 2ec1c9e..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/document_policy_unittest.cc +++ /dev/null
@@ -1,91 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/feature_policy/document_policy.h" - -#include "base/callback.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/feature_policy/document_policy_features.h" -#include "third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom.h" - -namespace blink { -namespace { - -using DocumentPolicyTest = ::testing::Test; - -// Helper function to convert literal to FeatureState. -template <class T> -DocumentPolicyFeatureState FeatureState( - std::vector<std::pair<int32_t, T>> literal, - const base::RepeatingCallback<PolicyValue(T)>& create_pv_cb) { - DocumentPolicyFeatureState result; - for (const auto& entry : literal) { - result.insert({static_cast<mojom::DocumentPolicyFeature>(entry.first), - create_pv_cb.Run(entry.second)}); - } - return result; -} - -TEST_F(DocumentPolicyTest, MergeFeatureState) { - base::RepeatingCallback<PolicyValue(bool)> bool_cb = - base::BindRepeating(PolicyValue::CreateBool); - base::RepeatingCallback<PolicyValue(double)> dec_double_cb = - base::BindRepeating(PolicyValue::CreateDecDouble); - base::RepeatingCallback<PolicyValue(int32_t)> enum_cb = - base::BindRepeating(PolicyValue::CreateEnum); - - EXPECT_EQ(DocumentPolicy::MergeFeatureState( - FeatureState<bool>( - {{1, false}, {2, false}, {3, true}, {4, true}, {5, false}}, - bool_cb), - FeatureState<bool>( - {{2, true}, {3, true}, {4, false}, {5, false}, {6, true}}, - bool_cb)), - FeatureState<bool>({{1, false}, - {2, false}, - {3, true}, - {4, false}, - {5, false}, - {6, true}}, - bool_cb)); - EXPECT_EQ( - DocumentPolicy::MergeFeatureState( - FeatureState<double>({{1, 1.0}, {2, 1.0}, {3, 1.0}, {4, 0.5}}, - dec_double_cb), - FeatureState<double>({{2, 0.5}, {3, 1.0}, {4, 1.0}, {5, 1.0}}, - dec_double_cb)), - FeatureState<double>({{1, 1.0}, {2, 0.5}, {3, 1.0}, {4, 0.5}, {5, 1.0}}, - dec_double_cb)); - - EXPECT_EQ( - DocumentPolicy::MergeFeatureState( - /* base_policy */ FeatureState<int32_t>( - {{1, 1}, {2, 1}, {3, 1}, {4, 2}}, enum_cb), - /* override_policy */ FeatureState<int32_t>( - {{2, 2}, {3, 1}, {4, 1}, {5, 1}}, enum_cb)), - FeatureState<int32_t>({{1, 1}, {2, 2}, {3, 1}, {4, 1}, {5, 1}}, enum_cb)); -} - -// IsPolicyCompatible should use default value for incoming policy when required -// policy specifies a value for a feature and incoming policy is missing value -// for that feature. -TEST_F(DocumentPolicyTest, IsPolicyCompatible) { - mojom::DocumentPolicyFeature feature = - mojom::DocumentPolicyFeature::kLosslessImagesMaxBpp; - double default_policy_value = - GetDocumentPolicyFeatureInfoMap().at(feature).default_value.DoubleValue(); - // Cap the default_policy_value, as it can be INF. - double strict_policy_value = - default_policy_value > 1.0 ? 1.0 : default_policy_value / 2; - - EXPECT_FALSE(DocumentPolicy::IsPolicyCompatible( - DocumentPolicyFeatureState{ - {feature, PolicyValue::CreateDecDouble( - strict_policy_value)}}, /* required policy */ - DocumentPolicyFeatureState{} /* incoming policy */ - )); -} - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/feature_policy.cc b/chromium/src/third_party/blink/common/feature_policy/feature_policy.cc deleted file mode 100644 index b68e6a1..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/feature_policy.cc +++ /dev/null
@@ -1,311 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/feature_policy/feature_policy.h" - -#include "base/containers/contains.h" -#include "base/macros.h" -#include "base/memory/ptr_util.h" -#include "base/no_destructor.h" -#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h" -#include "third_party/blink/public/common/feature_policy/feature_policy_features.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom.h" - -namespace blink { -namespace { - -// Extracts an Allowlist from a ParsedFeaturePolicyDeclaration. -FeaturePolicy::Allowlist AllowlistFromDeclaration( - const ParsedFeaturePolicyDeclaration& parsed_declaration, - const FeaturePolicyFeatureList& feature_list) { - auto result = FeaturePolicy::Allowlist(); - if (parsed_declaration.matches_all_origins) - result.AddAll(); - if (parsed_declaration.matches_opaque_src) - result.AddOpaqueSrc(); - for (const auto& value : parsed_declaration.allowed_origins) - result.Add(value); - - return result; -} - -} // namespace - -ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration() = default; - -ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration( - mojom::FeaturePolicyFeature feature) - : feature(feature) {} - -ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration( - mojom::FeaturePolicyFeature feature, - const std::vector<url::Origin>& allowed_origins, - bool matches_all_origins, - bool matches_opaque_src) - : feature(feature), - allowed_origins(allowed_origins), - matches_all_origins(matches_all_origins), - matches_opaque_src(matches_opaque_src) {} - -ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration( - const ParsedFeaturePolicyDeclaration& rhs) = default; - -ParsedFeaturePolicyDeclaration& ParsedFeaturePolicyDeclaration::operator=( - const ParsedFeaturePolicyDeclaration& rhs) = default; - -ParsedFeaturePolicyDeclaration::~ParsedFeaturePolicyDeclaration() = default; - -bool operator==(const ParsedFeaturePolicyDeclaration& lhs, - const ParsedFeaturePolicyDeclaration& rhs) { - return std::tie(lhs.feature, lhs.matches_all_origins, lhs.matches_opaque_src, - lhs.allowed_origins) == - std::tie(rhs.feature, rhs.matches_all_origins, rhs.matches_opaque_src, - rhs.allowed_origins); -} - -FeaturePolicy::Allowlist::Allowlist() = default; - -FeaturePolicy::Allowlist::Allowlist(const Allowlist& rhs) = default; - -FeaturePolicy::Allowlist::~Allowlist() = default; - -void FeaturePolicy::Allowlist::Add(const url::Origin& origin) { - allowed_origins_.push_back(origin); -} - -void FeaturePolicy::Allowlist::AddAll() { - matches_all_origins_ = true; -} - -void FeaturePolicy::Allowlist::AddOpaqueSrc() { - matches_opaque_src_ = true; -} - -bool FeaturePolicy::Allowlist::Contains(const url::Origin& origin) const { - for (const auto& allowed_origin : allowed_origins_) { - if (origin == allowed_origin) - return true; - } - if (origin.opaque()) - return matches_opaque_src_; - return matches_all_origins_; -} - -bool FeaturePolicy::Allowlist::MatchesAll() const { - return matches_all_origins_; -} - -bool FeaturePolicy::Allowlist::MatchesOpaqueSrc() const { - return matches_opaque_src_; -} - -// static -std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateFromParentPolicy( - const FeaturePolicy* parent_policy, - const ParsedFeaturePolicy& container_policy, - const url::Origin& origin) { - return CreateFromParentPolicy(parent_policy, container_policy, origin, - GetFeaturePolicyFeatureList()); -} - -// static -std::unique_ptr<FeaturePolicy> FeaturePolicy::CopyStateFrom( - const FeaturePolicy* source) { - if (!source) - return nullptr; - - std::unique_ptr<FeaturePolicy> new_policy = base::WrapUnique( - new FeaturePolicy(source->origin_, GetFeaturePolicyFeatureList())); - - new_policy->inherited_policies_ = source->inherited_policies_; - new_policy->allowlists_ = source->allowlists_; - - return new_policy; -} - -bool FeaturePolicy::IsFeatureEnabledByInheritedPolicy( - mojom::FeaturePolicyFeature feature) const { - DCHECK(base::Contains(inherited_policies_, feature)); - return inherited_policies_.at(feature); -} - -bool FeaturePolicy::IsFeatureEnabled( - mojom::FeaturePolicyFeature feature) const { - return IsFeatureEnabledForOrigin(feature, origin_); -} - -bool FeaturePolicy::IsFeatureEnabledForOrigin( - mojom::FeaturePolicyFeature feature, - const url::Origin& origin) const { - DCHECK(base::Contains(feature_list_, feature)); - DCHECK(base::Contains(inherited_policies_, feature)); - - auto inherited_value = inherited_policies_.at(feature); - auto allowlist = allowlists_.find(feature); - if (allowlist != allowlists_.end()) { - return inherited_value && allowlist->second.Contains(origin); - } - - // If no "allowlist" is specified, return default feature value. - const FeaturePolicyFeatureDefault default_policy = feature_list_.at(feature); - if (default_policy == FeaturePolicyFeatureDefault::EnableForSelf && - !origin_.IsSameOriginWith(origin)) - return false; - - return inherited_value; -} - -bool FeaturePolicy::GetFeatureValueForOrigin( - mojom::FeaturePolicyFeature feature, - const url::Origin& origin) const { - DCHECK(base::Contains(feature_list_, feature)); - DCHECK(base::Contains(inherited_policies_, feature)); - - auto inherited_value = inherited_policies_.at(feature); - auto allowlist = allowlists_.find(feature); - if (allowlist != allowlists_.end()) { - return inherited_value && allowlist->second.Contains(origin); - } - - return inherited_value; -} - -const FeaturePolicy::Allowlist FeaturePolicy::GetAllowlistForDevTools( - mojom::FeaturePolicyFeature feature) const { - // Return an empty allowlist when disabled through inheritance. - if (!IsFeatureEnabledByInheritedPolicy(feature)) - return FeaturePolicy::Allowlist(); - - // Return defined policy if exists; otherwise return default policy. - auto allowlist = allowlists_.find(feature); - if (allowlist != allowlists_.end()) - return allowlist->second; - - // Note: |allowlists_| purely comes from HTTP header. If a feature is not - // declared in HTTP header, all origins are implicitly allowed. - FeaturePolicy::Allowlist default_allowlist; - default_allowlist.AddAll(); - - return default_allowlist; -} - -// TODO(crbug.com/937131): Use |FeaturePolicy::GetAllowlistForDevTools| -// to replace this method. This method uses legacy |default_allowlist| -// calculation method. -const FeaturePolicy::Allowlist FeaturePolicy::GetAllowlistForFeature( - mojom::FeaturePolicyFeature feature) const { - DCHECK(base::Contains(feature_list_, feature)); - DCHECK(base::Contains(inherited_policies_, feature)); - // Return an empty allowlist when disabled through inheritance. - if (!inherited_policies_.at(feature)) - return FeaturePolicy::Allowlist(); - - // Return defined policy if exists; otherwise return default policy. - auto allowlist = allowlists_.find(feature); - if (allowlist != allowlists_.end()) - return allowlist->second; - - const FeaturePolicyFeatureDefault default_policy = feature_list_.at(feature); - FeaturePolicy::Allowlist default_allowlist; - - if (default_policy == FeaturePolicyFeatureDefault::EnableForAll) { - default_allowlist.AddAll(); - } else if (default_policy == FeaturePolicyFeatureDefault::EnableForSelf) { - default_allowlist.Add(origin_); - } - - return default_allowlist; -} - -void FeaturePolicy::SetHeaderPolicy(const ParsedFeaturePolicy& parsed_header) { - DCHECK(allowlists_.empty()); - for (const ParsedFeaturePolicyDeclaration& parsed_declaration : - parsed_header) { - mojom::FeaturePolicyFeature feature = parsed_declaration.feature; - DCHECK(feature != mojom::FeaturePolicyFeature::kNotFound); - allowlists_.emplace( - feature, AllowlistFromDeclaration(parsed_declaration, feature_list_)); - } -} - -FeaturePolicyFeatureState FeaturePolicy::GetFeatureState() const { - FeaturePolicyFeatureState feature_state; - for (const auto& pair : GetFeaturePolicyFeatureList()) - feature_state[pair.first] = GetFeatureValueForOrigin(pair.first, origin_); - return feature_state; -} - -FeaturePolicy::FeaturePolicy(url::Origin origin, - const FeaturePolicyFeatureList& feature_list) - : origin_(std::move(origin)), feature_list_(feature_list) {} - -FeaturePolicy::~FeaturePolicy() = default; - -// static -std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateFromParentPolicy( - const FeaturePolicy* parent_policy, - const ParsedFeaturePolicy& container_policy, - const url::Origin& origin, - const FeaturePolicyFeatureList& features) { - // If there is a non-empty container policy, then there must also be a parent - // policy. - DCHECK(parent_policy || container_policy.empty()); - - std::unique_ptr<FeaturePolicy> new_policy = - base::WrapUnique(new FeaturePolicy(origin, features)); - for (const auto& feature : features) { - new_policy->inherited_policies_[feature.first] = - new_policy->InheritedValueForFeature(parent_policy, feature, - container_policy); - } - return new_policy; -} - -// Implements Permissions Policy 9.7: Define an inherited policy for feature in -// browsing context and 9.8: Define an inherited policy for feature in container -// at origin. -bool FeaturePolicy::InheritedValueForFeature( - const FeaturePolicy* parent_policy, - std::pair<mojom::FeaturePolicyFeature, FeaturePolicyFeatureDefault> feature, - const ParsedFeaturePolicy& container_policy) const { - // 9.7 2: Otherwise [If context is not a nested browsing context,] return - // "Enabled". - if (!parent_policy) - return true; - - // 9.8 2: If policy’s inherited policy for feature is "Disabled", return - // "Disabled". - if (!parent_policy->GetFeatureValueForOrigin(feature.first, - parent_policy->origin_)) - return false; - - // 9.8 3: If feature is present in policy’s declared policy, and the allowlist - // for feature in policy’s declared policy does not match origin, then return - // "Disabled". - if (!parent_policy->GetFeatureValueForOrigin(feature.first, origin_)) - return false; - - for (const auto& decl : container_policy) { - if (decl.feature == feature.first) { - // 9.8 5.1: If the allowlist for feature in container policy matches - // origin, return "Enabled". - // 9.8 5.2: Otherwise return "Disabled". - return AllowlistFromDeclaration(decl, feature_list_).Contains(origin_); - } - } - // 9.8 6: If feature’s default allowlist is *, return "Enabled". - if (feature.second == FeaturePolicyFeatureDefault::EnableForAll) - return true; - - // 9.8 7: If feature’s default allowlist is 'self', and origin is same origin - // with container’s node document’s origin, return "Enabled". - // 9.8 8: Otherwise return "Disabled". - return origin_.IsSameOriginWith(parent_policy->origin_); -} - -const FeaturePolicyFeatureList& FeaturePolicy::GetFeatureList() const { - return feature_list_; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc b/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc deleted file mode 100644 index d0188bb..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.cc +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2017 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 "third_party/blink/common/feature_policy/feature_policy_mojom_traits.h" - -#include "url/mojom/origin_mojom_traits.h" - -namespace mojo { - -bool StructTraits<blink::mojom::ParsedFeaturePolicyDeclarationDataView, - blink::ParsedFeaturePolicyDeclaration>:: - Read(blink::mojom::ParsedFeaturePolicyDeclarationDataView in, - blink::ParsedFeaturePolicyDeclaration* out) { - out->matches_all_origins = in.matches_all_origins(); - out->matches_opaque_src = in.matches_opaque_src(); - return in.ReadFeature(&out->feature) && - in.ReadAllowedOrigins(&out->allowed_origins); -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h b/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h deleted file mode 100644 index fab070c..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/feature_policy_mojom_traits.h +++ /dev/null
@@ -1,48 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_FEATURE_POLICY_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_FEATURE_POLICY_MOJOM_TRAITS_H_ - -#include <map> - -#include "base/containers/flat_map.h" -#include "mojo/public/cpp/bindings/enum_traits.h" -#include "third_party/blink/common/feature_policy/policy_value_mojom_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/feature_policy/feature_policy.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-shared.h" -#include "url/mojom/origin_mojom_traits.h" - -namespace mojo { - -template <> -class BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ParsedFeaturePolicyDeclarationDataView, - blink::ParsedFeaturePolicyDeclaration> { - public: - static blink::mojom::FeaturePolicyFeature feature( - const blink::ParsedFeaturePolicyDeclaration& policy) { - return policy.feature; - } - static const std::vector<url::Origin>& allowed_origins( - const blink::ParsedFeaturePolicyDeclaration& policy) { - return policy.allowed_origins; - } - static bool matches_all_origins( - const blink::ParsedFeaturePolicyDeclaration& policy) { - return policy.matches_all_origins; - } - static bool matches_opaque_src( - const blink::ParsedFeaturePolicyDeclaration& policy) { - return policy.matches_opaque_src; - } - - static bool Read(blink::mojom::ParsedFeaturePolicyDeclarationDataView in, - blink::ParsedFeaturePolicyDeclaration* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_FEATURE_POLICY_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/common/feature_policy/feature_policy_unittest.cc b/chromium/src/third_party/blink/common/feature_policy/feature_policy_unittest.cc deleted file mode 100644 index 899a776..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/feature_policy_unittest.cc +++ /dev/null
@@ -1,1647 +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. - -#include "third_party/blink/public/common/feature_policy/feature_policy.h" - -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom.h" -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom.h" -#include "url/gurl.h" - -namespace blink { - -namespace { - -mojom::FeaturePolicyFeature kDefaultOnFeature = - static_cast<mojom::FeaturePolicyFeature>( - static_cast<int>(mojom::FeaturePolicyFeature::kMaxValue) + 1); - -mojom::FeaturePolicyFeature kDefaultSelfFeature = - static_cast<mojom::FeaturePolicyFeature>( - static_cast<int>(mojom::FeaturePolicyFeature::kMaxValue) + 2); - -// This feature is defined in code, but not present in the feature list. -mojom::FeaturePolicyFeature kUnavailableFeature = - static_cast<mojom::FeaturePolicyFeature>( - static_cast<int>(mojom::FeaturePolicyFeature::kMaxValue) + 4); - -} // namespace - -class FeaturePolicyTest : public testing::Test { - protected: - FeaturePolicyTest() - : feature_list_({{kDefaultOnFeature, - FeaturePolicyFeatureDefault( - FeaturePolicyFeatureDefault::EnableForAll)}, - {kDefaultSelfFeature, - FeaturePolicyFeatureDefault( - FeaturePolicyFeatureDefault::EnableForSelf)}}) {} - - ~FeaturePolicyTest() override = default; - - std::unique_ptr<FeaturePolicy> CreateFromParentPolicy( - const FeaturePolicy* parent, - const url::Origin& origin) { - ParsedFeaturePolicy empty_container_policy; - return FeaturePolicy::CreateFromParentPolicy(parent, empty_container_policy, - origin, feature_list_); - } - - std::unique_ptr<FeaturePolicy> CreateFromParentWithFramePolicy( - const FeaturePolicy* parent, - const ParsedFeaturePolicy& frame_policy, - const url::Origin& origin) { - return FeaturePolicy::CreateFromParentPolicy(parent, frame_policy, origin, - feature_list_); - } - - bool PolicyContainsInheritedValue(const FeaturePolicy* policy, - mojom::FeaturePolicyFeature feature) { - return policy->inherited_policies_.find(feature) != - policy->inherited_policies_.end(); - } - - url::Origin origin_a_ = url::Origin::Create(GURL("https://example.com/")); - url::Origin origin_b_ = url::Origin::Create(GURL("https://example.net/")); - url::Origin origin_c_ = url::Origin::Create(GURL("https://example.org/")); - - private: - // Contains the list of controlled features, so that we are guaranteed to - // have at least one of each kind of default behaviour represented. - FeaturePolicyFeatureList feature_list_; -}; - -TEST_F(FeaturePolicyTest, TestInitialPolicy) { - // +-------------+ - // |(1)Origin A | - // |No Policy | - // +-------------+ - // Default-on and top-level-only features should be enabled in top-level - // frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestInitialSameOriginChildPolicy) { - // +-----------------+ - // |(1)Origin A | - // |No Policy | - // | +-------------+ | - // | |(2)Origin A | | - // | |No Policy | | - // | +-------------+ | - // +-----------------+ - // Default-on and Default-self features should be enabled in a same-origin - // child frame. Default-off features should be disabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestInitialCrossOriginChildPolicy) { - // +-----------------+ - // |(1)Origin A | - // |No Policy | - // | +-------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +-----------------+ - // Default-on features should be enabled in child frame. Default-self and - // Default-off features should be disabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestCrossOriginChildCannotEnableFeature) { - // +----------------------------------------+ - // |(1) Origin A | - // |No Policy | - // | +------------------------------------+ | - // | |(2) Origin B | | - // | |Feature-Policy: default-self 'self' | | - // | +------------------------------------+ | - // +----------------------------------------+ - // Default-self feature should be disabled in cross origin frame, even if no - // policy was specified in the parent frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - policy2->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, - false}}}); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestFrameSelfInheritance) { - // +------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self 'self' | - // | +-----------------+ +-----------------+ | - // | |(2) Origin A | |(4) Origin B | | - // | |No Policy | |No Policy | | - // | | +-------------+ | | +-------------+ | | - // | | |(3)Origin A | | | |(5)Origin B | | | - // | | |No Policy | | | |No Policy | | | - // | | +-------------+ | | +-------------+ | | - // | +-----------------+ +-----------------+ | - // +------------------------------------------+ - // Feature should be enabled at the top-level, and through the chain of - // same-origin frames 2 and 3. It should be disabled in frames 4 and 5, as - // they are at a different origin. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy5 = - CreateFromParentPolicy(policy4.get(), origin_b_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy5->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestReflexiveFrameSelfInheritance) { - // +------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self 'self' | - // | +-----------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ | | - // | | |(3)Origin A | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-----------------+ | - // +------------------------------------+ - // Feature which is enabled at top-level should be disabled in frame 3, as - // it is embedded by frame 2, for which the feature is not enabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestSelectiveFrameInheritance) { - // +------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self OriginB | - // | +-----------------+ +-----------------+ | - // | |(2) Origin B | |(3) Origin C | | - // | |No Policy | |No Policy | | - // | | | | +-------------+ | | - // | | | | |(4)Origin B | | | - // | | | | |No Policy | | | - // | | | | +-------------+ | | - // | +-----------------+ +-----------------+ | - // +------------------------------------------+ - // Feature should be disabled in all frames, even though the - // header indicates Origin B, there is no container policy to explicitly - // delegate to that origin, in either frame 2 or 4. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy3.get(), origin_b_); - EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestSelectiveFrameInheritance2) { - // +------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self OriginB | - // | <iframe allow="default-self OriginB"> | - // | +-----------------+ +-----------------+ | - // | |(2) Origin B | |(3) Origin C | | - // | |No Policy | |No Policy | | - // | | | | +-------------+ | | - // | | | | |(4)Origin B | | | - // | | | | |No Policy | | | - // | | | | +-------------+ | | - // | +-----------------+ +-----------------+ | - // +------------------------------------------+ - // Feature should be enabled in second level Origin B frame, but disabled in - // Frame 4, because it is embedded by frame 3, where the feature is not - // enabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, - false}}}); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy3.get(), origin_b_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestPolicyCanBlockSelf) { - // +----------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-on 'none' | - // +----------------------------------+ - // Default-on feature should be disabled in top-level frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}); - EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestParentPolicyBlocksSameOriginChildPolicy) { - // +----------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-on 'none' | - // | +-------------+ | - // | |(2)Origin A | | - // | |No Policy | | - // | +-------------+ | - // +----------------------------------+ - // Feature should be disabled in child frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestChildPolicyCanBlockSelf) { - // +--------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | +----------------------------------+ | - // | |(2)Origin B | | - // | |Feature-Policy: default-on 'none' | | - // | +----------------------------------+ | - // +--------------------------------------+ - // Default-on feature should be disabled by cross-origin child frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - policy2->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestChildPolicyCanBlockChildren) { - // +--------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | +----------------------------------+ | - // | |(2)Origin B | | - // | |Feature-Policy: default-on 'self' | | - // | | +-------------+ | | - // | | |(3)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +----------------------------------+ | - // +--------------------------------------+ - // Default-on feature should be enabled in frames 1 and 2; disabled in frame - // 3 by child frame policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - policy2->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {origin_b_}, false, false}}}); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestParentPolicyBlocksCrossOriginChildPolicy) { - // +----------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-on 'none' | - // | +-------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +----------------------------------+ - // Default-on feature should be disabled in cross-origin child frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestEnableForAllOrigins) { - // +--------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self * | - // | +-----------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ | | - // | | |(3)Origin A | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-----------------+ | - // +--------------------------------+ - // Feature should be enabled in top level; disabled in frame 2 and 3. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestEnableForAllOriginsAndDelegate) { - // +--------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self * | - // |<iframe allow="default-self OriginB"> | - // | +-----------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ | | - // | | |(3)Origin A | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-----------------+ | - // +--------------------------------------+ - // Feature should be enabled in top and second level; disabled in frame 3. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestDefaultOnStillNeedsSelf) { - // +---------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-on OriginB | - // | +-----------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ +-------------+ | | - // | | |(3)Origin B | |(4)Origin C | | | - // | | |No Policy | |No Policy | | | - // | | +-------------+ +-------------+ | | - // | +-----------------------------------+ | - // +---------------------------------------+ - // Feature should be disabled in all frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {origin_b_}, false, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestDefaultOnEnablesForAllDescendants) { - // +----------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-on self OriginB | - // | +-----------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ +-------------+ | | - // | | |(3)Origin B | |(4)Origin C | | | - // | | |No Policy | |No Policy | | | - // | | +-------------+ +-------------+ | | - // | +-----------------------------------+ | - // +----------------------------------------+ - // Feature should be enabled in all frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultOnFeature, /* allowed_origins */ {origin_a_, origin_b_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy4->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestDefaultSelfRequiresDelegation) { - // +---------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self OriginB | - // | +-----------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ +-------------+ | | - // | | |(3)Origin B | |(4)Origin C | | | - // | | |No Policy | |No Policy | | | - // | | +-------------+ +-------------+ | | - // | +-----------------------------------+ | - // +---------------------------------------+ - // Feature should be disabled in all frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_FALSE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestDefaultSelfRespectsSameOriginEmbedding) { - // +------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self self OriginB | - // |<iframe allow="default-self"> | - // | +-----------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ +-------------+ | | - // | | |(3)Origin B | |(4)Origin C | | | - // | | |No Policy | |No Policy | | | - // | | +-------------+ +-------------+ | | - // | +-----------------------------------+ | - // +------------------------------------------+ - // Feature should be disabled in frame 4; enabled in frames 1, 2 and 3. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}}}); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestDelegationRequiredAtAllLevels) { - // +------------------------------------+ - // |(1) Origin A | - // |<iframe allow="default-self *"> | - // | +--------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | | +-------------+ | | - // | | |(3)Origin A | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +--------------------------------+ | - // +------------------------------------+ - // Feature should be enabled in frames 1 and 2. Feature is not enabled in - // frame 3, even though it is the same origin as the top-level, because it is - // not explicitly delegated. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestBlockedFrameCannotReenable) { - // +--------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' | - // | +----------------------------------+ | - // | |(2)Origin B | | - // | |Feature-Policy: default-self * | | - // | | +-------------+ +-------------+ | | - // | | |(3)Origin A | |(4)Origin C | | | - // | | |No Policy | |No Policy | | | - // | | +-------------+ +-------------+ | | - // | +----------------------------------+ | - // +--------------------------------------+ - // Feature should be enabled at the top level; disabled in all other frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_}, false, - false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - policy2->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_a_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestEnabledFrameCanDelegate) { - // +---------------------------------------------------+ - // |(1) Origin A | - // |No Policy | - // |<iframe allow="default-self"> | - // | +-----------------------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | |<iframe allow="default-self"> | | - // | | +-------------+ | | - // | | |(3)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-----------------------------------------------+ | - // +---------------------------------------------------+ - // Feature should be enabled in all frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultSelfFeature, {origin_c_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestEnabledFrameCanDelegateByDefault) { - // +-----------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-on 'self' OriginB | - // | +--------------------+ +--------------------+ | - // | |(2) Origin B | | (4) Origin C | | - // | |No Policy | | No Policy | | - // | | +-------------+ | | | | - // | | |(3)Origin C | | | | | - // | | |No Policy | | | | | - // | | +-------------+ | | | | - // | +--------------------+ +--------------------+ | - // +-----------------------------------------------+ - // Feature should be enabled in frames 1, 2, and 3, and disabled in frame 4. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy({{ - {kDefaultOnFeature, /* allowed_origins */ {origin_a_, origin_b_}, false, - false}, - }}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy1.get(), origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultOnFeature)); -} - -TEST_F(FeaturePolicyTest, TestFeaturesDontDelegateByDefault) { - // +-----------------------------------------------+ - // |(1) Origin A | - // |Feature-Policy: default-self 'self' OriginB | - // | +--------------------+ +--------------------+ | - // | |(2) Origin B | | (4) Origin C | | - // | |No Policy | | No Policy | | - // | | +-------------+ | | | | - // | | |(3)Origin C | | | | | - // | | |No Policy | | | | | - // | | +-------------+ | | | | - // | +--------------------+ +--------------------+ | - // +-----------------------------------------------+ - // Feature should be enabled in frames 1 only. Without a container policy, the - // feature is not delegated to any child frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy1.get(), origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, TestFeaturesAreIndependent) { - // +-----------------------------------------------+ - // |(1) Origin A | - // |No Policy | - // |<iframe allow="default-self 'self' OriginB; | - // | default-on 'self'> | - // | +-------------------------------------------+ | - // | |(2) Origin B | | - // | |No Policy | | - // | |<iframe allow="default-self 'self' OriginC;| | - // | | default-on 'self'> | | - // | | +-------------+ | | - // | | |(3)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-------------------------------------------+ | - // +-----------------------------------------------+ - // Default-self feature should be enabled in all frames; Default-on feature - // should be enabled in frame 1, and disabled in frames 2 and 3. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}, - {kDefaultOnFeature, /* allowed_origins */ {origin_a_}, false, false}}}); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}, - {kDefaultOnFeature, /* allowed_origins */ {origin_a_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_, origin_c_}, - false, false}, - {kDefaultOnFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultOnFeature)); -} - -// Test frame policies - -TEST_F(FeaturePolicyTest, TestSimpleFramePolicy) { - // +--------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="default-self OriginB"> | - // | +-------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +--------------------------------------+ - // Default-self feature should be enabled in cross-origin child frame because - // permission was delegated through frame policy. - // This is the same scenario as when the iframe is declared as - // <iframe allow="default-self"> - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); -} - -TEST_F(FeaturePolicyTest, TestAllOriginFramePolicy) { - // +--------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="default-self *"> | - // | +-------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +--------------------------------+ - // Default-self feature should be enabled in cross-origin child frame because - // permission was delegated through frame policy. - // This is the same scenario that arises when the iframe is declared as - // <iframe allowfullscreen> - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); -} - -TEST_F(FeaturePolicyTest, TestFramePolicyCanBeFurtherDelegated) { - // +------------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="default-self OriginB"> | - // | +--------------------------------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | | | | - // | |<iframe allow="default-self OriginC"> | | - // | | +-------------+ | | - // | | |(3)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | | | | - // | |<iframe> (No frame policy) | | - // | | +-------------+ | | - // | | |(4)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +--------------------------------------+ | - // +------------------------------------------+ - // Default-self feature should be enabled in cross-origin child frames 2 and - // 3. Feature should be disabled in frame 4 because it was not further - // delegated through frame policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy1 = {{ - {kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}, - }}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); - ParsedFeaturePolicy frame_policy2 = {{ - {kDefaultSelfFeature, /* allowed_origins */ {origin_c_}, false, false}, - }}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_TRUE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); - EXPECT_FALSE( - policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); -} - -TEST_F(FeaturePolicyTest, TestDefaultOnCanBeDisabledByFramePolicy) { - // +-----------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="default-on 'none'"> | - // | +-------------+ | - // | |(2)Origin A | | - // | |No Policy | | - // | +-------------+ | - // | | - // |<iframe allow="default-on 'none'"> | - // | +-------------+ | - // | |(3)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +-----------------------------------+ - // Default-on feature should be disabled in both same-origin and cross-origin - // child frames because permission was removed through frame policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy1 = { - {{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultOnFeature, /* allowed_origins */ {}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); - EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); - EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); -} - -TEST_F(FeaturePolicyTest, TestFramePolicyModifiesHeaderPolicy) { - // +---------------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' OriginB | - // | | - // |<iframe allow="default-self 'none'"> | - // | +-----------------------------------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-----------------------------------------+ | - // | | - // |<iframe allow="default-self 'none'"> | - // | +-----------------------------------------+ | - // | |(3)Origin B | | - // | |Feature-Policy: default-self 'self' | | - // | +-----------------------------------------+ | - // +---------------------------------------------+ - // Default-self feature should be disabled in both cross-origin child frames - // by frame policy, even though the parent frame's header policy would - // otherwise enable it. This is true regardless of the child frame's header - // policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy({{ - {kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, false, - false}, - }}); - ParsedFeaturePolicy frame_policy1 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); - ParsedFeaturePolicy frame_policy2 = {{ - {kDefaultSelfFeature, /* allowed_origins */ {}, false, false}, - }}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); - policy3->SetHeaderPolicy({{ - {kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}, - }}); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); -} - -TEST_F(FeaturePolicyTest, TestCombineFrameAndHeaderPolicies) { - // +-----------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="default-self OriginB"> | - // | +-------------------------------------+ | - // | |(2)Origin B | | - // | |Feature-Policy: default-self * | | - // | | | | - // | |<iframe allow="default-self 'none'"> | | - // | | +-------------+ | | - // | | |(3)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | | | | - // | |<iframe> (No frame policy) | | - // | | +-------------+ | | - // | | |(4)Origin C | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +-------------------------------------+ | - // +-----------------------------------------+ - // Default-self feature should be enabled in cross-origin child frames 2 and - // 4. Feature should be disabled in frame 3 by frame policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy1 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); - policy2->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentPolicy(policy2.get(), origin_c_); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); -} - -TEST_F(FeaturePolicyTest, TestFeatureDeclinedAtTopLevel) { - // +-----------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'none' | - // | | - // |<iframe allow="default-self OriginB"> | - // | +-------------------------------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------------------------------+ | - // | | - // |<iframe allow="default-self *"> | - // | +-------------------------------------+ | - // | |(3)Origin A | | - // | |No Policy | | - // | +-------------------------------------+ | - // +-----------------------------------------+ - // Default-self feature should be disabled in all frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy({{ - {kDefaultSelfFeature, /* allowed_origins */ {}, false, false}, - }}); - ParsedFeaturePolicy frame_policy1 = {{ - {kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}, - }}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_a_); - EXPECT_FALSE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); -} - -TEST_F(FeaturePolicyTest, TestFeatureDelegatedAndAllowed) { - // +--------------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' OriginB | - // | | - // |<iframe allow="default-self OriginA"> | - // | +-------------------------------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------------------------------+ | - // | | - // |<iframe allow="default-self OriginB"> | - // | +-------------------------------------+ | - // | |(3)Origin B | | - // | |No Policy | | - // | +-------------------------------------+ | - // | | - // |<iframe allow="default-self *"> | - // | +-------------------------------------+ | - // | |(4)Origin B | | - // | |No Policy | | - // | +-------------------------------------+ | - // +--------------------------------------------+ - // Default-self feature should be disabled in frame 2, as the origin does not - // match, and enabled in the remaining frames. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}}}); - ParsedFeaturePolicy frame_policy1 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_a_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); - ParsedFeaturePolicy frame_policy2 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); - ParsedFeaturePolicy frame_policy3 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy3, origin_b_); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_TRUE( - policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_TRUE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); - EXPECT_TRUE( - policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); -} - -TEST_F(FeaturePolicyTest, TestDefaultSandboxedFramePolicy) { - // +------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe sandbox> | - // | +-------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | +-------------+ | - // +------------------+ - // Default-on feature should be enabled in child frame with opaque origin. - // Other features should be disabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - url::Origin sandboxed_origin = url::Origin(); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), sandboxed_origin); - EXPECT_TRUE(policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, sandboxed_origin)); - EXPECT_FALSE( - policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_FALSE(policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin)); -} - -TEST_F(FeaturePolicyTest, TestSandboxedFramePolicyForAllOrigins) { - // +----------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe sandbox allow="default-self *"> | - // | +-------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | +-------------+ | - // +----------------------------------------+ - // Default-self feature should be enabled in child frame with opaque origin, - // only for that origin, because container policy matches all origins. - // However, it will not pass that on to any other origin - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - url::Origin sandboxed_origin = url::Origin(); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy( - policy1.get(), frame_policy, sandboxed_origin); - EXPECT_TRUE(policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, sandboxed_origin)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin)); -} - -TEST_F(FeaturePolicyTest, TestSandboxedFramePolicyForOpaqueSrcOrigin) { - // +--------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe sandbox allow="default-self"> | - // | +-------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | +-------------+ | - // +--------------------------------------+ - // Default-self feature should be enabled in child frame with opaque origin, - // only for that origin, because container policy matches the opaque src. - // However, it will not pass that on to any other origin - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - url::Origin sandboxed_origin = url::Origin(); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, false, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy( - policy1.get(), frame_policy, sandboxed_origin); - EXPECT_TRUE(policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE( - policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, sandboxed_origin)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin)); -} - -TEST_F(FeaturePolicyTest, TestSandboxedFrameFromHeaderPolicy) { - // +--------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self * | - // | | - // | +-------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | +-------------+ | - // +--------------------------------------+ - // Default-self feature should not be enabled in child frame with opaque - // origin, as it is cross-origin with its parent, and there is no container - // policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - url::Origin sandboxed_origin = url::Origin(); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, false, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy( - policy1.get(), frame_policy, sandboxed_origin); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE(policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin)); -} - -TEST_F(FeaturePolicyTest, TestSandboxedPolicyIsNotInherited) { - // +----------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe sandbox allow="default-self *"> | - // | +------------------------------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | | | | - // | | +-------------+ | | - // | | |(3)Sandboxed | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +------------------------------------+ | - // +----------------------------------------+ - // Default-on feature should be enabled in frame 3 with opaque origin, but all - // other features should be disabled. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - url::Origin sandboxed_origin_1 = url::Origin(); - url::Origin sandboxed_origin_2 = url::Origin(); - ParsedFeaturePolicy frame_policy = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy( - policy1.get(), frame_policy, sandboxed_origin_1); - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy2.get(), sandboxed_origin_2); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, - sandboxed_origin_1)); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, - sandboxed_origin_2)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_FALSE( - policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); - EXPECT_FALSE(policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin_1)); - EXPECT_FALSE(policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin_2)); -} - -TEST_F(FeaturePolicyTest, TestSandboxedPolicyCanBePropagated) { - // +--------------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe sandbox allow="default-self *"> | - // | +----------------------------------------+ | - // | |(2)Sandboxed | | - // | |No Policy | | - // | | | | - // | |<iframe sandbox allow="default-self *"> | | - // | | +-------------+ | | - // | | |(3)Sandboxed | | | - // | | |No Policy | | | - // | | +-------------+ | | - // | +----------------------------------------+ | - // +--------------------------------------------+ - // Default-self feature should be enabled in child frame with opaque origin, - // only for that origin, because container policy matches all origins. - // However, it will not pass that on to any other origin - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - url::Origin sandboxed_origin_1 = origin_a_.DeriveNewOpaqueOrigin(); - url::Origin sandboxed_origin_2 = sandboxed_origin_1.DeriveNewOpaqueOrigin(); - ParsedFeaturePolicy frame_policy_1 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = CreateFromParentWithFramePolicy( - policy1.get(), frame_policy_1, sandboxed_origin_1); - ParsedFeaturePolicy frame_policy_2 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, true}}}; - std::unique_ptr<FeaturePolicy> policy3 = CreateFromParentWithFramePolicy( - policy2.get(), frame_policy_2, sandboxed_origin_2); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultOnFeature, - sandboxed_origin_2)); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - EXPECT_TRUE(policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, - sandboxed_origin_2)); -} - -TEST_F(FeaturePolicyTest, TestUndefinedFeaturesInFramePolicy) { - // +---------------------------------------------------+ - // |(1)Origin A | - // |No Policy | - // | | - // |<iframe allow="nosuchfeature; unavailablefeature"> | - // | +-------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +---------------------------------------------------+ - // A feature which is not in the declared feature list should be ignored if - // present in a container policy. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - ParsedFeaturePolicy frame_policy = { - {{mojom::FeaturePolicyFeature::kNotFound, /* allowed_origins */ {}, false, - true}, - {kUnavailableFeature, /* allowed_origins */ {}, false, true}}}; - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); - EXPECT_FALSE(PolicyContainsInheritedValue( - policy1.get(), mojom::FeaturePolicyFeature::kNotFound)); - EXPECT_FALSE( - PolicyContainsInheritedValue(policy1.get(), kUnavailableFeature)); - EXPECT_FALSE(PolicyContainsInheritedValue( - policy2.get(), mojom::FeaturePolicyFeature::kNotFound)); - EXPECT_FALSE( - PolicyContainsInheritedValue(policy2.get(), kUnavailableFeature)); -} - -// Tests for proposed algorithm change. These tests construct policies in -// various embedding scenarios, and verify that the proposed value for "should -// feature be allowed in the child frame" matches what we expect. The points -// where this differs from the current feature policy algorithm are called out -// specifically. -// See https://crbug.com/937131 for additional context. - -TEST_F(FeaturePolicyTest, ProposedTestImplicitPolicy) { - // +-----------------+ - // |(1)Origin A | - // |No Policy | - // | +-------------+ | - // | |(2)Origin A | | - // | |No Policy | | - // | +-------------+ | - // | +-------------+ | - // | |(3)Origin B | | - // | |No Policy | | - // | +-------------+ | - // +-----------------+ - // With no policy specified at all, Default-on and Default-self features - // should be enabled at the top-level, and in a same-origin child frame. - // Default-self features should be disabled in a cross-origin child frame. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy1->IsFeatureEnabled(kDefaultSelfFeature)); - - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_TRUE(policy3->IsFeatureEnabled(kDefaultOnFeature)); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, ProposedTestCompletelyBlockedPolicy) { - // +------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'none' | - // | +--------------+ +--------------+ | - // | |(2)Origin A | |(3)Origin B | | - // | |No Policy | |No Policy | | - // | +--------------+ +--------------+ | - // | <allow="default-self *"> | - // | +--------------+ | - // | |(4)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(5)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(6)Origin C | | - // | |No Policy | | - // | +--------------+ | - // +------------------------------------+ - // When a feature is disabled in the parent frame, it should be disabled in - // all child frames, regardless of any declared frame policies. - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, false, false}}}); - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy4 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy4, origin_b_); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy5 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy5 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy5, origin_b_); - EXPECT_FALSE(policy5->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy6 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_c_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy6 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy6, origin_b_); - EXPECT_FALSE(policy6->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, ProposedTestDisallowedCrossOriginChildPolicy) { - // +------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' | - // | +--------------+ +--------------+ | - // | |(2)Origin A | |(3)Origin B | | - // | |No Policy | |No Policy | | - // | +--------------+ +--------------+ | - // | <allow="default-self *"> | - // | +--------------+ | - // | |(4)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(5)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(6)Origin C | | - // | |No Policy | | - // | +--------------+ | - // +------------------------------------+ - // When a feature is not explicitly enabled for an origin, it should be - // disabled in any frame at that origin, regardless of the declared frame - // policy. (This is different from the current algorithm, in the case where - // the frame policy declares that the feature should be allowed.) - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_}, false, - false}}}); - - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - - // This is a critical change from the existing semantics. - ParsedFeaturePolicy frame_policy4 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy4, origin_b_); - EXPECT_FALSE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); - - // This is a critical change from the existing semantics. - ParsedFeaturePolicy frame_policy5 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy5 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy5, origin_b_); - EXPECT_FALSE(policy5->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy6 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_c_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy6 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy6, origin_b_); - EXPECT_FALSE(policy6->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, ProposedTestAllowedCrossOriginChildPolicy) { - // +-----------------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' OriginB; | - // | +--------------+ +--------------+ | - // | |(2)Origin A | |(3)Origin B | | - // | |No Policy | |No Policy | | - // | +--------------+ +--------------+ | - // | <allow="default-self *"> | - // | +--------------+ | - // | |(4)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(5)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(6)Origin C | | - // | |No Policy | | - // | +--------------+ | - // +-----------------------------------------------+ - // When a feature is explicitly enabled for an origin by the header in the - // parent document, it still requires that the frame policy also grant it to - // that frame in order to be enabled in the child. (This is different from the - // current algorithm, in the case where the frame policy does not mention the - // feature explicitly.) - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}}}); - - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - // This is a critical change from the existing semantics. - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy4 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy4, origin_b_); - EXPECT_TRUE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy5 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy5 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy5, origin_b_); - EXPECT_TRUE(policy5->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy6 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_c_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy6 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy6, origin_b_); - EXPECT_FALSE(policy6->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, ProposedTestAllAllowedCrossOriginChildPolicy) { - // +------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self * | - // | +--------------+ +--------------+ | - // | |(2)Origin A | |(3)Origin B | | - // | |No Policy | |No Policy | | - // | +--------------+ +--------------+ | - // | <allow="default-self *"> | - // | +--------------+ | - // | |(4)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(5)Origin B | | - // | |No Policy | | - // | +--------------+ | - // | <allow="default-self OriginB"> | - // | +--------------+ | - // | |(6)Origin C | | - // | |No Policy | | - // | +--------------+ | - // +------------------------------------+ - // When a feature is explicitly enabled for all origins by the header in the - // parent document, it still requires that the frame policy also grant it to - // that frame in order to be enabled in the child. (This is different from the - // current algorithm, in the case where the frame policy does not mention the - // feature explicitly.) - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}); - - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_a_); - EXPECT_TRUE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - // This is a critical change from the existing semantics. - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy4 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy4 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy4, origin_b_); - EXPECT_TRUE(policy4->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy5 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_b_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy5 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy5, origin_b_); - EXPECT_TRUE(policy5->IsFeatureEnabled(kDefaultSelfFeature)); - - ParsedFeaturePolicy frame_policy6 = { - {{kDefaultSelfFeature, /* allowed_origins */ {origin_c_}, false, false}}}; - std::unique_ptr<FeaturePolicy> policy6 = - CreateFromParentWithFramePolicy(policy1.get(), frame_policy6, origin_b_); - EXPECT_FALSE(policy6->IsFeatureEnabled(kDefaultSelfFeature)); -} - -TEST_F(FeaturePolicyTest, ProposedTestNestedPolicyPropagates) { - // +-----------------------------------------------+ - // |(1)Origin A | - // |Feature-Policy: default-self 'self' OriginB; | - // | +--------------------------------+ | - // | |(2)Origin B | | - // | |No Policy | | - // | | <allow="default-self *"> | | - // | | +--------------+ | | - // | | |(3)Origin B | | | - // | | |No Policy | | | - // | | +--------------+ | | - // | +--------------------------------+ | - // +-----------------------------------------------+ - // Ensures that a proposed policy change will propagate down the frame tree. - // This is important so that we can tell when a change has happened, even if - // the feature is tested in a different one than where the - std::unique_ptr<FeaturePolicy> policy1 = - CreateFromParentPolicy(nullptr, origin_a_); - policy1->SetHeaderPolicy( - {{{kDefaultSelfFeature, /* allowed_origins */ {origin_a_, origin_b_}, - false, false}}}); - - // This is where the change first occurs. - std::unique_ptr<FeaturePolicy> policy2 = - CreateFromParentPolicy(policy1.get(), origin_b_); - EXPECT_FALSE(policy2->IsFeatureEnabled(kDefaultSelfFeature)); - - // The proposed value in frame 2 should affect the proposed value in frame 3. - ParsedFeaturePolicy frame_policy3 = { - {{kDefaultSelfFeature, /* allowed_origins */ {}, true, false}}}; - std::unique_ptr<FeaturePolicy> policy3 = - CreateFromParentWithFramePolicy(policy2.get(), frame_policy3, origin_b_); - EXPECT_FALSE(policy3->IsFeatureEnabled(kDefaultSelfFeature)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/policy_value.cc b/chromium/src/third_party/blink/common/feature_policy/policy_value.cc deleted file mode 100644 index a10e681..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/policy_value.cc +++ /dev/null
@@ -1,160 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/feature_policy/policy_value.h" - -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom.h" - -namespace blink { - -PolicyValue::PolicyValue() : type_(mojom::PolicyValueType::kNull) {} - -// static -PolicyValue PolicyValue::CreateBool(bool value) { - return PolicyValue(value); -} - -// static -PolicyValue PolicyValue::CreateDecDouble(double value) { - return PolicyValue(value, mojom::PolicyValueType::kDecDouble); -} - -// static -PolicyValue PolicyValue::CreateEnum(int32_t value) { - return PolicyValue(value, mojom::PolicyValueType::kEnum); -} - -PolicyValue::PolicyValue(bool bool_value) - : type_(mojom::PolicyValueType::kBool), bool_value_(bool_value) {} - -PolicyValue::PolicyValue(double double_value, mojom::PolicyValueType type) - : type_(type), double_value_(double_value) { - DCHECK_EQ(type, mojom::PolicyValueType::kDecDouble); -} - -PolicyValue::PolicyValue(int32_t int_value, mojom::PolicyValueType type) - : type_(type), int_value_(int_value) { - DCHECK_EQ(type, mojom::PolicyValueType::kEnum); -} - -PolicyValue PolicyValue::CreateMaxPolicyValue(mojom::PolicyValueType type) { - PolicyValue value; - value.SetType(type); - value.SetToMax(); - return value; -} - -PolicyValue PolicyValue::CreateMinPolicyValue(mojom::PolicyValueType type) { - PolicyValue value; - value.SetType(type); - value.SetToMin(); - return value; -} - -bool PolicyValue::BoolValue() const { - DCHECK_EQ(type_, mojom::PolicyValueType::kBool); - return bool_value_; -} - -double PolicyValue::DoubleValue() const { - DCHECK_EQ(type_, mojom::PolicyValueType::kDecDouble); - return double_value_; -} - -int32_t PolicyValue::IntValue() const { - DCHECK_EQ(type_, mojom::PolicyValueType::kEnum); - return int_value_; -} - -void PolicyValue::SetBoolValue(bool bool_value) { - DCHECK_EQ(mojom::PolicyValueType::kBool, type_); - bool_value_ = bool_value; -} - -void PolicyValue::SetDoubleValue(double double_value) { - DCHECK_EQ(mojom::PolicyValueType::kDecDouble, type_); - double_value_ = double_value; -} - -void PolicyValue::SetIntValue(int32_t int_value) { - DCHECK_EQ(mojom::PolicyValueType::kEnum, type_); - int_value_ = int_value; -} - -PolicyValue& PolicyValue::operator=(const PolicyValue& rhs) { - if (this != &rhs) { - type_ = rhs.type_; - bool_value_ = rhs.bool_value_; - double_value_ = rhs.double_value_; - int_value_ = rhs.int_value_; - } - return *this; -} - -bool operator==(const PolicyValue& lhs, const PolicyValue& rhs) { - if (lhs.Type() != rhs.Type()) - return false; - switch (lhs.Type()) { - case mojom::PolicyValueType::kBool: - return lhs.BoolValue() == rhs.BoolValue(); - case mojom::PolicyValueType::kDecDouble: - return lhs.DoubleValue() == rhs.DoubleValue(); - case mojom::PolicyValueType::kEnum: - return lhs.IntValue() == rhs.IntValue(); - case mojom::PolicyValueType::kNull: - return true; - } - NOTREACHED(); - return false; -} - -bool operator!=(const PolicyValue& lhs, const PolicyValue& rhs) { - return !(lhs == rhs); -} - -bool PolicyValue::IsCompatibleWith(const PolicyValue& required) const { - DCHECK_EQ(type_, required.Type()); - switch (type_) { - case mojom::PolicyValueType::kBool: - return !bool_value_ || required.bool_value_; - case mojom::PolicyValueType::kDecDouble: - return double_value_ <= required.double_value_; - case mojom::PolicyValueType::kEnum: - return int_value_ == required.int_value_; - case mojom::PolicyValueType::kNull: - NOTREACHED(); - break; - } - return false; -} - -void PolicyValue::SetToMax() { - switch (type_) { - case mojom::PolicyValueType::kBool: - bool_value_ = true; - break; - case mojom::PolicyValueType::kDecDouble: - double_value_ = std::numeric_limits<double>::infinity(); - break; - default: - NOTREACHED(); - } - return; -} - -void PolicyValue::SetToMin() { - switch (type_) { - case mojom::PolicyValueType::kBool: - bool_value_ = false; - break; - case mojom::PolicyValueType::kDecDouble: - double_value_ = 0.0; - break; - default: - NOTREACHED(); - } - return; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc b/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc deleted file mode 100644 index 424e9ea..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.cc +++ /dev/null
@@ -1,32 +0,0 @@ -// Copyright 2020 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 "third_party/blink/common/feature_policy/policy_value_mojom_traits.h" - -namespace mojo { - -bool UnionTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue>::Read( - blink::mojom::PolicyValueDataView in, - blink::PolicyValue* out) { - switch (in.tag()) { - case blink::mojom::PolicyValueDataView::Tag::BOOL_VALUE: - out->SetType(blink::mojom::PolicyValueType::kBool); - out->SetBoolValue(in.bool_value()); - return true; - case blink::mojom::PolicyValueDataView::Tag::DEC_DOUBLE_VALUE: - out->SetType(blink::mojom::PolicyValueType::kDecDouble); - out->SetDoubleValue(in.dec_double_value()); - return true; - case blink::mojom::PolicyValueDataView::Tag::ENUM_VALUE: - out->SetType(blink::mojom::PolicyValueType::kEnum); - out->SetIntValue(in.enum_value()); - return true; - case blink::mojom::PolicyValueDataView::Tag::NULL_VALUE: - break; - } - NOTREACHED(); - return false; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.h b/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.h deleted file mode 100644 index 46547a5..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/policy_value_mojom_traits.h +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/feature_policy/policy_value.h" -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - UnionTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue> { - public: - static blink::mojom::PolicyValueDataView::Tag GetTag( - const blink::PolicyValue& value) { - switch (value.Type()) { - case blink::mojom::PolicyValueType::kNull: - return blink::mojom::PolicyValueDataView::Tag::NULL_VALUE; - case blink::mojom::PolicyValueType::kBool: - return blink::mojom::PolicyValueDataView::Tag::BOOL_VALUE; - case blink::mojom::PolicyValueType::kDecDouble: - return blink::mojom::PolicyValueDataView::Tag::DEC_DOUBLE_VALUE; - case blink::mojom::PolicyValueType::kEnum: - return blink::mojom::PolicyValueDataView::Tag::ENUM_VALUE; - } - - NOTREACHED(); - return blink::mojom::PolicyValueDataView::Tag::NULL_VALUE; - } - static bool null_value(const blink::PolicyValue& value) { return false; } - static bool bool_value(const blink::PolicyValue& value) { - return value.BoolValue(); - } - static double dec_double_value(const blink::PolicyValue& value) { - return value.DoubleValue(); - } - static int32_t enum_value(const blink::PolicyValue& value) { - return value.IntValue(); - } - static bool Read(blink::mojom::PolicyValueDataView in, - blink::PolicyValue* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_COMMON_FEATURE_POLICY_POLICY_VALUE_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/common/feature_policy/policy_value_unittest.cc b/chromium/src/third_party/blink/common/feature_policy/policy_value_unittest.cc deleted file mode 100644 index 2191b22..0000000 --- a/chromium/src/third_party/blink/common/feature_policy/policy_value_unittest.cc +++ /dev/null
@@ -1,142 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/feature_policy/policy_value.h" - -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom.h" -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom.h" - -namespace blink { - -class PolicyValueTest : public testing::Test {}; - -TEST_F(PolicyValueTest, TestCanCreateBoolValues) { - PolicyValue false_value = PolicyValue::CreateBool(false); - PolicyValue true_value = PolicyValue::CreateBool(true); - PolicyValue min_value( - PolicyValue::CreateMinPolicyValue(mojom::PolicyValueType::kBool)); - PolicyValue max_value( - PolicyValue::CreateMaxPolicyValue(mojom::PolicyValueType::kBool)); - EXPECT_EQ(false_value.BoolValue(), false); - EXPECT_EQ(true_value.BoolValue(), true); - EXPECT_EQ(min_value.BoolValue(), false); - EXPECT_EQ(max_value.BoolValue(), true); -} - -TEST_F(PolicyValueTest, TestCanModifyBoolValues) { - PolicyValue initially_false_value = PolicyValue::CreateBool(false); - PolicyValue initially_true_value = PolicyValue::CreateBool(true); - initially_false_value.SetBoolValue(true); - initially_true_value.SetBoolValue(false); - EXPECT_EQ(initially_false_value.BoolValue(), true); - EXPECT_EQ(initially_true_value.BoolValue(), false); - - initially_true_value.SetToMax(); - EXPECT_EQ(initially_true_value.BoolValue(), true); - initially_true_value.SetToMin(); - EXPECT_EQ(initially_true_value.BoolValue(), false); -} - -TEST_F(PolicyValueTest, TestCanCompareBoolValues) { - PolicyValue false_value = PolicyValue::CreateBool(false); - PolicyValue true_value = PolicyValue::CreateBool(true); - - EXPECT_TRUE(false_value == false_value); - EXPECT_FALSE(false_value != false_value); - EXPECT_TRUE(false_value.IsCompatibleWith(false_value)); - - EXPECT_FALSE(false_value == true_value); - EXPECT_TRUE(false_value != true_value); - EXPECT_TRUE(false_value.IsCompatibleWith(true_value)); - - EXPECT_FALSE(true_value == false_value); - EXPECT_TRUE(true_value != false_value); - EXPECT_FALSE(true_value.IsCompatibleWith(false_value)); - - EXPECT_TRUE(true_value == true_value); - EXPECT_FALSE(true_value != true_value); - EXPECT_TRUE(true_value.IsCompatibleWith(true_value)); -} - -TEST_F(PolicyValueTest, TestCanCreateDoubleValues) { - PolicyValue zero_value = PolicyValue::CreateDecDouble(0.0); - PolicyValue one_value = PolicyValue::CreateDecDouble(1.0); - PolicyValue min_value( - PolicyValue::CreateMinPolicyValue(mojom::PolicyValueType::kDecDouble)); - PolicyValue max_value( - PolicyValue::CreateMaxPolicyValue(mojom::PolicyValueType::kDecDouble)); - EXPECT_EQ(zero_value.DoubleValue(), 0.0); - EXPECT_EQ(one_value.DoubleValue(), 1.0); - EXPECT_EQ(min_value.DoubleValue(), 0.0); - EXPECT_EQ(max_value.DoubleValue(), std::numeric_limits<double>::infinity()); -} - -TEST_F(PolicyValueTest, TestCanModifyDoubleValues) { - PolicyValue initially_zero_value = PolicyValue::CreateDecDouble(0.0); - initially_zero_value.SetDoubleValue(1.0); - EXPECT_EQ(initially_zero_value.DoubleValue(), 1.0); - initially_zero_value.SetToMax(); - EXPECT_EQ(initially_zero_value.DoubleValue(), - std::numeric_limits<double>::infinity()); - initially_zero_value.SetToMin(); - EXPECT_EQ(initially_zero_value.DoubleValue(), 0.0); -} - -TEST_F(PolicyValueTest, TestCanCompareDoubleValues) { - PolicyValue low_value = PolicyValue::CreateDecDouble(1.0); - PolicyValue high_value = PolicyValue::CreateDecDouble(2.0); - - EXPECT_TRUE(low_value == low_value); - EXPECT_FALSE(low_value != low_value); - EXPECT_TRUE(low_value.IsCompatibleWith(low_value)); - - EXPECT_FALSE(low_value == high_value); - EXPECT_TRUE(low_value != high_value); - EXPECT_TRUE(low_value.IsCompatibleWith(high_value)); - - EXPECT_FALSE(high_value == low_value); - EXPECT_TRUE(high_value != low_value); - EXPECT_FALSE(high_value.IsCompatibleWith(low_value)); - - EXPECT_TRUE(high_value == high_value); - EXPECT_FALSE(high_value != high_value); - EXPECT_TRUE(high_value.IsCompatibleWith(high_value)); -} - -TEST_F(PolicyValueTest, TestCanCreateEnumValues) { - PolicyValue enum_value_a = PolicyValue::CreateEnum(1); - PolicyValue enum_value_b = PolicyValue::CreateEnum(2); - EXPECT_EQ(enum_value_a.IntValue(), 1); - EXPECT_EQ(enum_value_b.IntValue(), 2); -} - -TEST_F(PolicyValueTest, TestCanModifyEnumValues) { - PolicyValue enum_value_a = PolicyValue::CreateEnum(1); - enum_value_a.SetIntValue(2); - EXPECT_EQ(enum_value_a.IntValue(), 2); -} - -TEST_F(PolicyValueTest, TestCanCompareEnumValues) { - PolicyValue enum_value_a = PolicyValue::CreateEnum(1); - PolicyValue enum_value_b = PolicyValue::CreateEnum(2); - - EXPECT_TRUE(enum_value_a == enum_value_a); - EXPECT_FALSE(enum_value_a != enum_value_a); - EXPECT_TRUE(enum_value_a.IsCompatibleWith(enum_value_a)); - - EXPECT_FALSE(enum_value_b == enum_value_a); - EXPECT_TRUE(enum_value_b != enum_value_a); - EXPECT_FALSE(enum_value_b.IsCompatibleWith(enum_value_a)); - - EXPECT_FALSE(enum_value_a == enum_value_b); - EXPECT_TRUE(enum_value_a != enum_value_b); - EXPECT_FALSE(enum_value_a.IsCompatibleWith(enum_value_b)); - - EXPECT_TRUE(enum_value_b == enum_value_b); - EXPECT_FALSE(enum_value_b != enum_value_b); - EXPECT_TRUE(enum_value_b.IsCompatibleWith(enum_value_b)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/features.cc b/chromium/src/third_party/blink/common/features.cc deleted file mode 100644 index cea77cf..0000000 --- a/chromium/src/third_party/blink/common/features.cc +++ /dev/null
@@ -1,881 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/features.h" - -#include "base/feature_list.h" -#include "build/build_config.h" -#include "build/chromeos_buildflags.h" -#include "services/network/public/cpp/features.h" -#include "third_party/blink/public/common/forcedark/forcedark_switches.h" - -namespace blink { -namespace features { - -// Enable intervention for download that was initiated from or occurred in an ad -// frame without user activation. -const base::Feature kBlockingDownloadsInAdFrameWithoutUserActivation{ - "BlockingDownloadsInAdFrameWithoutUserActivation", - base::FEATURE_ENABLED_BY_DEFAULT}; - -const base::Feature kCOLRV1Fonts{"COLRV1Fonts", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable defer commits to avoid flash of unstyled content, for same origin -// navigation only. -const base::Feature kPaintHolding{"PaintHolding", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enable defer commits to avoid flash of unstyled content, for all navigation. -const base::Feature kPaintHoldingCrossOrigin{"PaintHoldingCrossOrigin", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable eagerly setting up a CacheStorage interface pointer and -// passing it to service workers on startup as an optimization. -// TODO(crbug/1077916): Re-enable once the issue with COOP/COEP is fixed. -const base::Feature kEagerCacheStorageSetupForServiceWorkers{ - "EagerCacheStorageSetupForServiceWorkers", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Controls script streaming. -const base::Feature kScriptStreaming{"ScriptStreaming", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Allow streaming small (<30kB) scripts. -const base::Feature kSmallScriptStreaming{"SmallScriptStreaming", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables user level memory pressure signal generation on Android. -const base::Feature kUserLevelMemoryPressureSignal{ - "UserLevelMemoryPressureSignal", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Perform memory purges after freezing only if all pages are frozen. -const base::Feature kFreezePurgeMemoryAllPagesFrozen{ - "FreezePurgeMemoryAllPagesFrozen", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Freezes the user-agent as part of https://github.com/WICG/ua-client-hints. -const base::Feature kFreezeUserAgent{"FreezeUserAgent", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables the frequency capping for detecting overlay popups. Overlay-popups -// are the interstitials that pop up and block the main content of the page. -const base::Feature kFrequencyCappingForOverlayPopupDetection{ - "FrequencyCappingForOverlayPopupDetection", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables the frequency capping for detecting large sticky ads. -// Large-sticky-ads are those ads that stick to the bottom of the page -// regardless of a user’s efforts to scroll, and take up more than 30% of the -// screen’s real estate. -const base::Feature kFrequencyCappingForLargeStickyAdDetection{ - "FrequencyCappingForLargeStickyAdDetection", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables support for FTP URLs. When disabled FTP URLs will behave the same as -// any other URL scheme that's unknown to the UA. See https://crbug.com/333943 -const base::Feature kFtpProtocol{"FtpProtocol", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable Display Locking JavaScript APIs. -const base::Feature kDisplayLocking{"DisplayLocking", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kJSONModules{"JSONModules", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kForceSynchronousHTMLParsing{ - "ForceSynchronousHTMLParsing", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables top-level await in modules. -const base::Feature kTopLevelAwait{"TopLevelAwait", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enable EditingNG by default. This feature is for a kill switch. -const base::Feature kEditingNG{"EditingNG", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enable LayoutNG. -const base::Feature kLayoutNG{"LayoutNG", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enable TableNG -const base::Feature kLayoutNGTable{"LayoutNGTable", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable LayoutNGFieldset by default. This feature is for a kill switch. -const base::Feature kLayoutNGFieldset{"LayoutNGFieldset", - base::FEATURE_ENABLED_BY_DEFAULT}; - -const base::Feature kLayoutNGTextControl{"LayoutNGTextControl", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kMixedContentAutoupgrade{"AutoupgradeMixedContent", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Used to control the collection of anchor element metrics (crbug.com/856683). -// If kNavigationPredictor is enabled, then metrics of anchor elements -// in the first viewport after the page load and the metrics of the clicked -// anchor element will be extracted and recorded. Additionally, navigation -// predictor may preconnect/prefetch to resources/origins to make the -// future navigations faster. -const base::Feature kNavigationPredictor { - "NavigationPredictor", -#if defined(OS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// This feature returns empty arrays for navigator.plugins and -// navigator.mimeTypes. It is disabled for now, due to compat issues. -const base::Feature kNavigatorPluginsEmpty{"NavigatorPluginsEmpty", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable browser-initiated dedicated worker script loading -// (PlzDedicatedWorker). https://crbug.com/906991 -const base::Feature kPlzDedicatedWorker{"PlzDedicatedWorker", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable Portals. https://crbug.com/865123. -// Note that default enabling this does not expose the portal -// element on its own, but does allow its use with an origin trial. This was the -// case for the M85 Android only origin trial (https://crbug.com/1040212). -const base::Feature kPortals { - "Portals", -#if defined(OS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// When kPortals is enabled, allow portals to load content that is third-party -// (cross-origin) to the hosting page. Otherwise has no effect. -// -// https://crbug.com/1013389 -const base::Feature kPortalsCrossOrigin{"PortalsCrossOrigin", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable the prerender2. https://crbug.com/1126305. -const base::Feature kPrerender2{"Prerender2", - base::FEATURE_DISABLED_BY_DEFAULT}; -const base::FeatureParam<Prerender2Implementation>::Option - prerender2_implementation_options[] = { - {Prerender2Implementation::kWebContents, "webcontents"}, - {Prerender2Implementation::kMPArch, "mparch"}}; -const base::FeatureParam<Prerender2Implementation> - kPrerender2ImplementationParam{&kPrerender2, "implementation", - Prerender2Implementation::kWebContents, - &prerender2_implementation_options}; - -bool IsPrerender2Enabled() { - return base::FeatureList::IsEnabled(blink::features::kPrerender2); -} - -// Enable limiting previews loading hints to specific resource types. -const base::Feature kPreviewsResourceLoadingHintsSpecificResourceTypes{ - "PreviewsResourceLoadingHintsSpecificResourceTypes", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Perform a memory purge after a renderer is backgrounded. Formerly labelled as -// the "PurgeAndSuspend" experiment. -// -// TODO(https://crbug.com/926186): Disabled by default on Android for historical -// reasons. Consider enabling by default if experiment results are positive. -const base::Feature kPurgeRendererMemoryWhenBackgrounded { - "PurgeRendererMemoryWhenBackgrounded", -#if defined(OS_ANDROID) - base::FEATURE_DISABLED_BY_DEFAULT -#else - base::FEATURE_ENABLED_BY_DEFAULT -#endif -}; - -// Enables toggling overwrite mode when insert key is pressed. -// https://crbug.com/1030231. -const base::Feature kInsertKeyToggleMode = {"InsertKeyToggleMode", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables Raw Clipboard. https://crbug.com/897289. -const base::Feature kRawClipboard{"RawClipboard", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Kill switch for getCurrentBrowsingContextMedia(), which allows capturing of -// web content from the tab from which it is called. (crbug.com/1136940) -const base::Feature kRTCGetCurrentBrowsingContextMedia{ - "RTCGetCurrentBrowsingContextMedia", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Changes the default RTCPeerConnection constructor behavior to use Unified -// Plan as the SDP semantics. When the feature is enabled, Unified Plan is used -// unless the default is overridden (by passing {sdpSemantics:'plan-b'} as the -// argument). -const base::Feature kRTCUnifiedPlanByDefault{"RTCUnifiedPlanByDefault", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Determines if the SDP attrbute extmap-allow-mixed should be offered by -// default or not. The default value can be overridden by passing -// {offerExtmapAllowMixed:false} as an argument to the RTCPeerConnection -// constructor. -const base::Feature kRTCOfferExtmapAllowMixed{"RTCOfferExtmapAllowMixed", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables waiting for codec support status notification from GPU factory in RTC -// codec factories. -const base::Feature kRTCGpuCodecSupportWaiter{"kRTCGpuCodecSupportWaiter", - base::FEATURE_ENABLED_BY_DEFAULT}; - -const base::FeatureParam<int> kRTCGpuCodecSupportWaiterTimeoutParam{ - &kRTCGpuCodecSupportWaiter, "timeout_ms", 3000}; - -// Prevents workers from sending IsolateInBackgroundNotification to V8 -// and thus instructs V8 to favor performance over memory on workers. -const base::Feature kV8OptimizeWorkersForPerformance{ - "V8OptimizeWorkersForPerformance", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Controls whether the implementation of the performance.measureMemory -// web API uses PerformanceManager or not. -const base::Feature kWebMeasureMemoryViaPerformanceManager{ - "WebMeasureMemoryViaPerformanceManager", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables negotiation of experimental multiplex codec in SDP. -const base::Feature kWebRtcMultiplexCodec{"WebRTC-MultiplexCodec", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Causes WebRTC to replace host ICE candidate IP addresses with generated -// names ending in ".local" and resolve them using mDNS. -// http://crbug.com/878465 -const base::Feature kWebRtcHideLocalIpsWithMdns{ - "WebRtcHideLocalIpsWithMdns", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Causes WebRTC to not set the color space of video frames on the receive side -// in case it's unspecified. Otherwise we will guess that the color space is -// BT709. http://crbug.com/1129243 -const base::Feature kWebRtcIgnoreUnspecifiedColorSpace{ - "WebRtcIgnoreUnspecifiedColorSpace", base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, wake ups from throttleable TaskQueues are limited to 1 per -// minute in a page that has been backgrounded for 5 minutes. -// -// Intensive wake up throttling is enforced in addition to other throttling -// mechanisms: -// - 1 wake up per second in a background page or hidden cross-origin frame -// - 1% CPU time in a page that has been backgrounded for 10 seconds -// -// Feature tracking bug: https://crbug.com/1075553 -// -// Note that the base::Feature should not be read from; -// rather the provided accessors should be used, which also take into account -// the managed policy override of the feature. -const base::Feature kIntensiveWakeUpThrottling{ - "IntensiveWakeUpThrottling", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Name of the parameter that controls the grace period during which there is no -// intensive wake up throttling after a page is hidden. Defined here to allow -// access from about_flags.cc. The FeatureParam is defined in -// third_party/blink/renderer/platform/scheduler/common/features.cc. -const char kIntensiveWakeUpThrottling_GracePeriodSeconds_Name[] = - "grace_period_seconds"; - -#if BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) -// Run-time feature for the |rtc_use_h264| encoder/decoder. -const base::Feature kWebRtcH264WithOpenH264FFmpeg{ - "WebRTC-H264WithOpenH264FFmpeg", base::FEATURE_ENABLED_BY_DEFAULT}; -#endif // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) - -// Experiment of the delay from navigation to starting an update of a service -// worker's script. -const base::Feature kServiceWorkerUpdateDelay{ - "ServiceWorkerUpdateDelay", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Freeze scheduler task queues in background after allowed grace time. -// "stop" is a legacy name. -const base::Feature kStopInBackground { - "stop-in-background", -#if defined(OS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// Freeze scheduler task queues in background on network idle. -// This feature only works if stop-in-background is enabled. -const base::Feature kFreezeBackgroundTabOnNetworkIdle{ - "freeze-background-tab-on-network-idle", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable the Storage Access API. https://crbug.com/989663. -const base::Feature kStorageAccessAPI{"StorageAccessAPI", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable text snippets in URL fragments. https://crbug.com/919204. -const base::Feature kTextFragmentAnchor{"TextFragmentAnchor", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// File handling integration. https://crbug.com/829689 -const base::Feature kFileHandlingAPI{"FileHandlingAPI", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Allows for synchronous XHR requests during page dismissal -const base::Feature kAllowSyncXHRInPageDismissal{ - "AllowSyncXHRInPageDismissal", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Font enumeration and data access. https://crbug.com/535764 -const base::Feature kFontAccess{"FontAccess", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Font enumeration and data access. https://crbug.com/1173275 -const base::Feature kFontAccessPersistent{"FontAccessPersistent", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Compute pressure API. https://crbug.com/1067627 -const base::Feature kComputePressure{"ComputePressure", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Prefetch request properties are updated to be privacy-preserving. See -// crbug.com/988956. -const base::Feature kPrefetchPrivacyChanges{"PrefetchPrivacyChanges", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Decodes jpeg 4:2:0 formatted images to YUV instead of RGBX and stores in this -// format in the image decode cache. See crbug.com/919627 for details on the -// feature. -const base::Feature kDecodeJpeg420ImagesToYUV{"DecodeJpeg420ImagesToYUV", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Decodes lossy WebP images to YUV instead of RGBX and stores in this format -// in the image decode cache. See crbug.com/900264 for details on the feature. -const base::Feature kDecodeLossyWebPImagesToYUV{ - "DecodeLossyWebPImagesToYUV", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables cache-aware WebFonts loading. See https://crbug.com/570205. -// The feature is disabled on Android for WebView API issue discussed at -// https://crbug.com/942440. -const base::Feature kWebFontsCacheAwareTimeoutAdaption { - "WebFontsCacheAwareTimeoutAdaption", -#if defined(OS_ANDROID) - base::FEATURE_DISABLED_BY_DEFAULT -#else - base::FEATURE_ENABLED_BY_DEFAULT -#endif -}; - -// Enabled to block programmatic focus in subframes when not triggered by user -// activation (see htpps://crbug.com/954349). -const base::Feature kBlockingFocusWithoutUserActivation{ - "BlockingFocusWithoutUserActivation", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kAudioWorkletRealtimeThread{ - "AudioWorkletRealtimeThread", base::FEATURE_DISABLED_BY_DEFAULT}; - -// A server-side switch for the REALTIME_AUDIO thread priority of -// RealtimeAudioWorkletThread object. When disabled, it will use the NORMAL -// priority thread. -const base::Feature kAudioWorkletThreadRealtimePriority{ - "AudioWorkletThreadRealtimePriority", base::FEATURE_DISABLED_BY_DEFAULT}; - -// A feature to reduce the set of resources fetched by No-State Prefetch. -const base::Feature kLightweightNoStatePrefetch { - "LightweightNoStatePrefetch", -#if defined(OS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// Automatically convert light-themed pages to use a Blink-generated dark theme -const base::Feature kForceWebContentsDarkMode{ - "WebContentsForceDark", base::FEATURE_DISABLED_BY_DEFAULT}; - -// A feature to enable using the smallest image specified within image srcset -// for users with Save Data enabled. -const base::Feature kSaveDataImgSrcset{"SaveDataImgSrcset", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Which algorithm should be used for color inversion? -const base::FeatureParam<ForceDarkInversionMethod>::Option - forcedark_inversion_method_options[] = { - {ForceDarkInversionMethod::kUseBlinkSettings, - "use_blink_settings_for_method"}, - {ForceDarkInversionMethod::kHslBased, "hsl_based"}, - {ForceDarkInversionMethod::kCielabBased, "cielab_based"}, - {ForceDarkInversionMethod::kRgbBased, "rgb_based"}}; - -const base::FeatureParam<ForceDarkInversionMethod> - kForceDarkInversionMethodParam{&kForceWebContentsDarkMode, - "inversion_method", - ForceDarkInversionMethod::kUseBlinkSettings, - &forcedark_inversion_method_options}; - -// Should images be inverted? -const base::FeatureParam<ForceDarkImageBehavior>::Option - forcedark_image_behavior_options[] = { - {ForceDarkImageBehavior::kUseBlinkSettings, - "use_blink_settings_for_images"}, - {ForceDarkImageBehavior::kInvertNone, "none"}, - {ForceDarkImageBehavior::kInvertSelectively, "selective"}}; - -const base::FeatureParam<ForceDarkImageBehavior> kForceDarkImageBehaviorParam{ - &kForceWebContentsDarkMode, "image_behavior", - ForceDarkImageBehavior::kUseBlinkSettings, - &forcedark_image_behavior_options}; - -// Do not invert text lighter than this. -// Range: 0 (do not invert any text) to 256 (invert all text) -// Can also set to -1 to let Blink's internal settings control the value -const base::FeatureParam<int> kForceDarkTextLightnessThresholdParam{ - &kForceWebContentsDarkMode, "text_lightness_threshold", -1}; - -// Do not invert backgrounds darker than this. -// Range: 0 (invert all backgrounds) to 256 (invert no backgrounds) -// Can also set to -1 to let Blink's internal settings control the value -const base::FeatureParam<int> kForceDarkBackgroundLightnessThresholdParam{ - &kForceWebContentsDarkMode, "background_lightness_threshold", -1}; - -// Instructs WebRTC to honor the Min/Max Video Encode Accelerator dimensions. -const base::Feature kWebRtcUseMinMaxVEADimensions { - "WebRtcUseMinMaxVEADimensions", - // TODO(crbug.com/1008491): enable other platforms. -#if BUILDFLAG(IS_CHROMEOS_ASH) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// Blink garbage collection. -// Enables compaction of backing stores on Blink's heap. -const base::Feature kBlinkHeapCompaction{"BlinkHeapCompaction", - base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables concurrently marking Blink's heap. -const base::Feature kBlinkHeapConcurrentMarking{ - "BlinkHeapConcurrentMarking", base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables concurrently sweeping Blink's heap. -const base::Feature kBlinkHeapConcurrentSweeping{ - "BlinkHeapConcurrentSweeping", base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables incrementally marking Blink's heap. -const base::Feature kBlinkHeapIncrementalMarking{ - "BlinkHeapIncrementalMarking", base::FEATURE_ENABLED_BY_DEFAULT}; -// Enables a marking stress mode that schedules more garbage collections and -// also adds additional verification passes. -const base::Feature kBlinkHeapIncrementalMarkingStress{ - "BlinkHeapIncrementalMarkingStress", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables removing AppCache delays when triggering requests when the HTML was -// not fetched from AppCache. -const base::Feature kVerifyHTMLFetchedFromAppCacheBeforeDelay{ - "VerifyHTMLFetchedFromAppCacheBeforeDelay", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Controls whether we use ThreadPriority::DISPLAY for renderer -// compositor & IO threads. -const base::Feature kBlinkCompositorUseDisplayThreadPriority { - "BlinkCompositorUseDisplayThreadPriority", -#if defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH) || defined(OS_WIN) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -// Ignores cross origin windows in the named property interceptor of Window. -// https://crbug.com/538562 -const base::Feature kIgnoreCrossOriginWindowWhenNamedAccessOnWindow{ - "IgnoreCrossOriginWindowWhenNamedAccessOnWindow", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, scripts in iframes are not force deferred by the DeferAllScript -// intervention. -const base::Feature kDisableForceDeferInChildFrames{ - "DisableForceDeferInChildFrames", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables redirecting subresources in the page to better compressed and -// optimized versions to provide data savings. -const base::Feature kSubresourceRedirect{"SubresourceRedirect", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, enforces new interoperable semantics for 3D transforms. -// See crbug.com/1008483. -const base::Feature kTransformInterop{"TransformInterop", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, beacons (and friends) have ResourceLoadPriority::kLow, -// not ResourceLoadPriority::kVeryLow. -const base::Feature kSetLowPriorityForBeacon{"SetLowPriorityForBeacon", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled allows the header name used in the blink -// CacheStorageCodeCacheHint runtime feature to be modified. This runtime -// feature disables generating full code cache for responses stored in -// cache_storage during a service worker install event. The runtime feature -// must be enabled via the blink runtime feature mechanism, however. -const base::Feature kCacheStorageCodeCacheHintHeader{ - "CacheStorageCodeCacheHintHeader", base::FEATURE_DISABLED_BY_DEFAULT}; -const base::FeatureParam<std::string> kCacheStorageCodeCacheHintHeaderName{ - &kCacheStorageCodeCacheHintHeader, "name", "x-CacheStorageCodeCacheHint"}; - -// When enabled, the beforeunload handler is dispatched when a frame is frozen. -// This allows the browser to know whether discarding the frame could result in -// lost user data, at the cost of extra CPU usage. The feature will be removed -// once we have determine whether the CPU cost is acceptable. -const base::Feature kDispatchBeforeUnloadOnFreeze{ - "DispatchBeforeUnloadOnFreeze", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables the use of GpuMemoryBuffer images for low latency 2d canvas. -// TODO(khushalsagar): Enable this if we're using SurfaceControl and GMBs allow -// us to overlay these resources. -const base::Feature kLowLatencyCanvas2dImageChromium { - "LowLatencyCanvas2dImageChromium", -#if BUILDFLAG(IS_CHROMEOS_ASH) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif // OS_CHROMEOS -}; - -// Enables the use of shared image swap chains for low latency 2d canvas. -const base::Feature kLowLatencyCanvas2dSwapChain{ - "LowLatencyCanvas2dSwapChain", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables the use of shared image swap chains for low latency webgl canvas. -const base::Feature kLowLatencyWebGLSwapChain{"LowLatencyWebGLSwapChain", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables Dawn-accelerated 2D canvas. -const base::Feature kDawn2dCanvas{"Dawn2dCanvas", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables small accelerated canvases for webview (crbug.com/1004304) -const base::Feature kWebviewAccelerateSmallCanvases{ - "WebviewAccelerateSmallCanvases", base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, frees up CachedMetadata after consumption by script resources -// and modules. Needed for the experiment in http://crbug.com/1045052. -const base::Feature kDiscardCodeCacheAfterFirstUse{ - "DiscardCodeCacheAfterFirstUse", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kBlockHTMLParserOnStyleSheets{ - "BlockHTMLParserOnStyleSheets", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Kill switch for the new <link disabled> behavior. -// TODO(crbug.com/1087043): Remove this once the feature has -// landed and no compat issues are reported. -const base::Feature kLinkDisabledNewSpecBehavior{ - "LinkDisabledNewSpecBehavior", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Slightly delays rendering if there are fonts being preloaded, so that -// they don't miss the first paint if they can be loaded fast enough (e.g., -// from the disk cache) -const base::Feature kFontPreloadingDelaysRendering{ - "FontPreloadingDelaysRendering", base::FEATURE_ENABLED_BY_DEFAULT}; -// 50ms is the overall best performing value in our experiments. -const base::FeatureParam<int> kFontPreloadingDelaysRenderingParam{ - &kFontPreloadingDelaysRendering, "delay-in-ms", 50}; - -const base::Feature kKeepScriptResourceAlive{"KeepScriptResourceAlive", - base::FEATURE_DISABLED_BY_DEFAULT}; -const base::Feature kDelayAsyncScriptExecution{ - "DelayAsyncScriptExecution", base::FEATURE_DISABLED_BY_DEFAULT}; -const base::FeatureParam<DelayAsyncScriptDelayType>::Option - delay_async_script_execution_delay_types[] = { - {DelayAsyncScriptDelayType::kFinishedParsing, "finished_parsing"}, - {DelayAsyncScriptDelayType::kFirstPaintOrFinishedParsing, - "first_paint_or_finished_parsing"}, - {DelayAsyncScriptDelayType::kUseOptimizationGuide, - "use_optimization_guide"}}; -const base::FeatureParam<DelayAsyncScriptDelayType> - kDelayAsyncScriptExecutionDelayParam{ - &kDelayAsyncScriptExecution, "delay_type", - DelayAsyncScriptDelayType::kFinishedParsing, - &delay_async_script_execution_delay_types}; - -// Feature and parameters for delaying low priority requests behind "important" -// (either high or medium priority requests). There are two parameters -// highlighted below. -const base::Feature kDelayCompetingLowPriorityRequests{ - "DelayCompetingLowPriorityRequests", base::FEATURE_DISABLED_BY_DEFAULT}; -// The delay type: We don't want to delay low priority requests behind -// "important" requests forever. Rather, it makes sense to have this behavior up -// *until* some relevant loading milestone, which this parameter specifies. -const base::FeatureParam<DelayCompetingLowPriorityRequestsDelayType>::Option - delay_competing_low_priority_requests_delay_types[] = { - {DelayCompetingLowPriorityRequestsDelayType::kFirstPaint, - "first_paint"}, - {DelayCompetingLowPriorityRequestsDelayType::kFirstContentfulPaint, - "first_contentful_paint"}, - {DelayCompetingLowPriorityRequestsDelayType::kAlways, "always"}, - {DelayCompetingLowPriorityRequestsDelayType::kUseOptimizationGuide, - "use_optimization_guide"}}; -const base::FeatureParam<DelayCompetingLowPriorityRequestsDelayType> - kDelayCompetingLowPriorityRequestsDelayParam{ - &kDelayCompetingLowPriorityRequests, "until", - DelayCompetingLowPriorityRequestsDelayType::kFirstContentfulPaint, - &delay_competing_low_priority_requests_delay_types}; -// The priority threshold: indicates which ResourceLoadPriority should be -// considered "important", such that low priority requests are delayed behind -// in-flight "important" requests. -const base::FeatureParam<DelayCompetingLowPriorityRequestsThreshold>::Option - delay_competing_low_priority_requests_thresholds[] = { - {DelayCompetingLowPriorityRequestsThreshold::kMedium, "medium"}, - {DelayCompetingLowPriorityRequestsThreshold::kHigh, "high"}}; -const base::FeatureParam<DelayCompetingLowPriorityRequestsThreshold> - kDelayCompetingLowPriorityRequestsThresholdParam{ - &kDelayCompetingLowPriorityRequests, "priority_threshold", - DelayCompetingLowPriorityRequestsThreshold::kHigh, - &delay_competing_low_priority_requests_thresholds}; - -// The AppCache feature is a kill-switch for the entire AppCache feature, -// both backend and API. If disabled, then it will turn off the backend and -// api, regardless of the presence of valid origin trial tokens. Disabling -// AppCache will also delete any AppCache data from the profile directory. -const base::Feature kAppCache{"AppCache", base::FEATURE_ENABLED_BY_DEFAULT}; -// If AppCacheRequireOriginTrial is enabled, then the AppCache backend in the -// browser will require origin trial tokens in order to load or store manifests -// and their contents. -const base::Feature kAppCacheRequireOriginTrial{ - "AppCacheRequireOriginTrial", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Make all pending 'display: auto' web fonts enter the swap or failure period -// immediately before reaching the LCP time limit (~2500ms), so that web fonts -// do not become a source of bad LCP. -const base::Feature kAlignFontDisplayAutoTimeoutWithLCPGoal{ - "AlignFontDisplayAutoTimeoutWithLCPGoal", base::FEATURE_ENABLED_BY_DEFAULT}; - -// The amount of time allowed for 'display: auto' web fonts to load without -// intervention, counted from navigation start. -const base::FeatureParam<int> - kAlignFontDisplayAutoTimeoutWithLCPGoalTimeoutParam{ - &kAlignFontDisplayAutoTimeoutWithLCPGoal, "lcp-limit-in-ms", 2000}; - -const base::FeatureParam<AlignFontDisplayAutoTimeoutWithLCPGoalMode>::Option - align_font_display_auto_timeout_with_lcp_goal_modes[] = { - {AlignFontDisplayAutoTimeoutWithLCPGoalMode::kToFailurePeriod, - "failure"}, - {AlignFontDisplayAutoTimeoutWithLCPGoalMode::kToSwapPeriod, "swap"}}; -const base::FeatureParam<AlignFontDisplayAutoTimeoutWithLCPGoalMode> - kAlignFontDisplayAutoTimeoutWithLCPGoalModeParam{ - &kAlignFontDisplayAutoTimeoutWithLCPGoal, "intervention-mode", - AlignFontDisplayAutoTimeoutWithLCPGoalMode::kToSwapPeriod, - &align_font_display_auto_timeout_with_lcp_goal_modes}; - -// Enable throttling of fetch() requests from service workers in the -// installing state. The limit of 3 was chosen to match the limit -// in background main frames. In addition, trials showed that this -// did not cause excessive timeouts and resulted in a net improvement -// in successful install rate on some platforms. -const base::Feature kThrottleInstallingServiceWorker{ - "ThrottleInstallingServiceWorker", base::FEATURE_ENABLED_BY_DEFAULT}; -const base::FeatureParam<int> kInstallingServiceWorkerOutstandingThrottledLimit{ - &kThrottleInstallingServiceWorker, "limit", 3}; - -// Enables storing and loading security policies (for now, referrer policy) in -// the policy container. The policy container for the current document is -// attached to the RenderFrameHost and mirrored to the LocalFrame in Blink. -const base::Feature kPolicyContainer{"PolicyContainer", - base::FEATURE_ENABLED_BY_DEFAULT}; - -const base::Feature kInputPredictorTypeChoice{ - "InputPredictorTypeChoice", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kResamplingInputEvents{"ResamplingInputEvents", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kResamplingScrollEvents{"ResamplingScrollEvents", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables the device-memory, resource-width, viewport-width and DPR client -// hints to be sent to third-party origins if the first-party has opted in to -// receiving client hints, regardless of Feature Policy. -const base::Feature kAllowClientHintsToThirdParty{ - "AllowClientHintsToThirdParty", -#if defined(OS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -}; - -const base::Feature kFilteringScrollPrediction{ - "FilteringScrollPrediction", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kKalmanHeuristics{"KalmanHeuristics", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kKalmanDirectionCutOff{"KalmanDirectionCutOff", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kSkipTouchEventFilter{"SkipTouchEventFilter", - base::FEATURE_ENABLED_BY_DEFAULT}; -const char kSkipTouchEventFilterTypeParamName[] = "type"; -const char kSkipTouchEventFilterTypeParamValueDiscrete[] = "discrete"; -const char kSkipTouchEventFilterTypeParamValueAll[] = "all"; -const char kSkipTouchEventFilterFilteringProcessParamName[] = - "skip_filtering_process"; -const char kSkipTouchEventFilterFilteringProcessParamValueBrowser[] = "browser"; -const char kSkipTouchEventFilterFilteringProcessParamValueBrowserAndRenderer[] = - "browser_and_renderer"; - -// Disabling this will cause parkable strings to never be compressed. -// This is useful for headless mode + virtual time. Since virtual time advances -// quickly, strings may be parked too eagerly in that mode. -const base::Feature kCompressParkableStrings{"CompressParkableStrings", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Whether ParkableStrings can be written out to disk. -// Depends on compression above. -const base::Feature kParkableStringsToDisk{"ParkableStringsToDisk", - base::FEATURE_ENABLED_BY_DEFAULT}; - -bool IsParkableStringsToDiskEnabled() { - return base::FeatureList::IsEnabled(kParkableStringsToDisk) && - base::FeatureList::IsEnabled(kCompressParkableStrings); -} - -// Controls whether to auto select on contextual menu click in Chrome OS. -const base::Feature kCrOSAutoSelect{"CrOSAutoSelect", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kCompositingOptimizations{ - "CompositingOptimizations", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Reduce the amount of information in the default 'referer' header for -// cross-origin requests. -const base::Feature kReducedReferrerGranularity{ - "ReducedReferrerGranularity", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables the constant streaming in the ContentCapture task. -const base::Feature kContentCaptureConstantStreaming = { - "ContentCaptureConstantStreaming", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables the user activated exponential delay in the ContentCapture task. -const base::Feature kContentCaptureUserActivatedDelay = { - "ContentCaptureUserActivatedDelay", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Dispatches a fake fetch event to a service worker to check the offline -// capability of the site before promoting installation. -// See https://crbug.com/965802 for more details. -const base::Feature kCheckOfflineCapability{"CheckOfflineCapability", - base::FEATURE_DISABLED_BY_DEFAULT}; -const base::FeatureParam<CheckOfflineCapabilityMode>::Option - check_offline_capability_types[] = { - {CheckOfflineCapabilityMode::kWarnOnly, "warn_only"}, - {CheckOfflineCapabilityMode::kEnforce, "enforce"}}; -const base::FeatureParam<CheckOfflineCapabilityMode> - kCheckOfflineCapabilityParam{&kCheckOfflineCapability, "check_mode", - CheckOfflineCapabilityMode::kWarnOnly, - &check_offline_capability_types}; - -// The "BackForwardCacheABExperimentControl" feature indicates the state of the -// same-site BackForwardCache experiment. This information is used when sending -// the "Sec-bfcache-experiment" HTTP Header on resource requests. The header -// value is determined by the value of the "experiment_group_for_http_header" -// feature parameter. -const base::Feature kBackForwardCacheABExperimentControl{ - "BackForwardCacheABExperimentControl", base::FEATURE_DISABLED_BY_DEFAULT}; -const char kBackForwardCacheABExperimentGroup[] = - "experiment_group_for_http_header"; - -// Whether we should composite a PLSA (paint layer scrollable area) even if it -// means losing lcd text. -const base::Feature kPreferCompositingToLCDText = { - "PreferCompositingToLCDText", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kLogUnexpectedIPCPostedToBackForwardCachedDocuments{ - "LogUnexpectedIPCPostedToBackForwardCachedDocuments", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Enables declarative link capturing in web apps. -// Explainer: -// https://github.com/WICG/sw-launch/blob/master/declarative_link_capturing.md -const base::Feature kWebAppEnableLinkCapturing{ - "WebAppEnableLinkCapturing", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Controls URL handling feature in web apps. Controls parsing of "url_handlers" -// field in web app manifests. See explainer for more information: -// https://github.com/WICG/pwa-url-handler/blob/master/explainer.md -const base::Feature kWebAppEnableUrlHandlers{"WebAppEnableUrlHandlers", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables Protocol handling feature in web apps. Controls parsing of -// "protocol_handlers" field in web app manifests. See explainer for more -// information: -// https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/URLProtocolHandler/explainer.md -const base::Feature kWebAppEnableProtocolHandlers{ - "WebAppEnableProtocolHandlers", base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled NV12 frames on a GPU will be forwarded to libvpx encoders -// without conversion to I420. -const base::Feature kWebRtcLibvpxEncodeNV12{"WebRtcLibvpxEncodeNV12", - base::FEATURE_ENABLED_BY_DEFAULT}; - -// Makes network loading tasks unfreezable so that they can be processed while -// the page is frozen. -const base::Feature kLoadingTasksUnfreezable{"LoadingTasksUnfreezable", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Kill switch for the new behavior whereby anchors with target=_blank get -// noopener behavior by default. TODO(crbug.com/898942): Remove in Chrome 95. -const base::Feature kTargetBlankImpliesNoOpener{ - "TargetBlankImpliesNoOpener", base::FEATURE_ENABLED_BY_DEFAULT}; - -// Controls how max frame rates are enforced in MediaStreamTracks. -// TODO(crbug.com/1152307): Remove in M91. -const base::Feature kMediaStreamTrackUseConfigMaxFrameRate{ - "MediaStreamTrackUseConfigMaxFrameRate", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Kill switch for the new behavior whereby noopener windows no longer get their -// sessionStorage cloned from their originator. TODO(crbug.com/1151381): Remove -// in Chrome 92. -const base::Feature kCloneSessionStorageForNoOpener{ - "CloneSessionStorageForNoOpener", base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, WebRTC's worker thread will run on a thread context distinct -// from the WebRTC signaling and network threads. -const base::Feature kWebRtcDistinctWorkerThread{ - "WebRtcDistinctWorkerThread", base::FEATURE_DISABLED_BY_DEFAULT}; - -// When enabled, the SubresourceFilter receives calls from the ResourceLoader -// to perform additional checks against any aliases found from DNS CNAME records -// for the requested URL. -const base::Feature kSendCnameAliasesToSubresourceFilterFromRenderer{ - "SendCnameAliasesToSubresourceFilterFromRenderer", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enables the declarative Shadow DOM feature. -const base::Feature kDeclarativeShadowDOM{"DeclarativeShadowDOM", - base::FEATURE_DISABLED_BY_DEFAULT}; - -// Kill switch for the InterestCohort API origin trial, i.e. if disabled, the -// API exposure will be disabled regardless of the OT config. -// (See https://github.com/WICG/floc.) -const base::Feature kInterestCohortAPIOriginTrial{ - "InterestCohortAPIOriginTrial", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Enable the availability of the "interest-cohort" feature policy. -const base::Feature kInterestCohortFeaturePolicy{ - "InterestCohortFeaturePolicy", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Changes the default background color of the Text Fragment from -// bright yellow rgb(255, 255, 0) to light purple rgb(233, 210, 253) -const base::Feature kTextFragmentColorChange{"TextFragmentColorChange", - base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kDisableDocumentDomainByDefault{ - "DisableDocumentDomainByDefault", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Scopes the memory cache to a fetcher i.e. document/frame. Any resource cached -// in the blink cache will only be reused if the most recent fetcher that -// fetched it was the same as the current document. -const base::Feature kScopeMemoryCachePerContext{ - "ScopeMemoryCachePerContext", base::FEATURE_DISABLED_BY_DEFAULT}; - -// Allow image context menu selections to penetrate through transparent -// elements. -const base::Feature kEnablePenetratingImageSelection{ - "EnablePenetratingImageSelection", base::FEATURE_DISABLED_BY_DEFAULT}; - -const base::Feature kCLSM90Improvements{"CLSM90Improvements", - base::FEATURE_ENABLED_BY_DEFAULT}; - -} // namespace features -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/fetch/OWNERS b/chromium/src/third_party/blink/common/fetch/OWNERS deleted file mode 100644 index fd7b644..0000000 --- a/chromium/src/third_party/blink/common/fetch/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://third_party/blink/renderer/core/fetch/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/font_unique_name_lookup/OWNERS b/chromium/src/third_party/blink/common/font_unique_name_lookup/OWNERS deleted file mode 100644 index f196c82..0000000 --- a/chromium/src/third_party/blink/common/font_unique_name_lookup/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -drott@chromium.org
diff --git a/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher.cc b/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher.cc deleted file mode 100644 index ea1db1d..0000000 --- a/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher.cc +++ /dev/null
@@ -1,89 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h" -#include "base/strings/utf_string_conversions.h" -#include "third_party/blink/public/common/font_unique_name_lookup/icu_fold_case_util.h" - -#include <algorithm> - -namespace blink { - -FontTableMatcher::FontTableMatcher( - const base::ReadOnlySharedMemoryMapping& mapping) { - font_table_.ParseFromArray(mapping.memory(), mapping.size()); -} - -// static -base::ReadOnlySharedMemoryMapping -FontTableMatcher::MemoryMappingFromFontUniqueNameTable( - const FontUniqueNameTable& font_unique_name_table) { - size_t serialization_size = font_unique_name_table.ByteSizeLong(); - CHECK(serialization_size); - base::MappedReadOnlyRegion mapped_region = - base::ReadOnlySharedMemoryRegion::Create(serialization_size); - font_unique_name_table.SerializeToArray(mapped_region.mapping.memory(), - mapped_region.mapping.mapped_size()); - return mapped_region.region.Map(); -} - -base::Optional<FontTableMatcher::MatchResult> FontTableMatcher::MatchName( - const std::string& name_request) const { - std::string folded_name_request = IcuFoldCase(name_request); - - const auto& name_map = font_table_.name_map(); - - auto find_result = std::lower_bound( - name_map.begin(), name_map.end(), folded_name_request, - [](const blink::FontUniqueNameTable_UniqueNameToFontMapping& a, - const std::string& b) { - // Comp predicate for std::lower_bound needs to return whether a < b, - // so that it can find a match for "not less than". - return a.font_name() < b; - }); - if (find_result == name_map.end() || - find_result->font_name() != folded_name_request || - static_cast<int>(find_result->font_index()) > font_table_.fonts_size()) { - return {}; - } - - const auto& found_font = font_table_.fonts()[find_result->font_index()]; - - if (found_font.file_path().empty()) - return {}; - return base::Optional<MatchResult>( - {found_font.file_path(), found_font.ttc_index()}); -} - -size_t FontTableMatcher::AvailableFonts() const { - return font_table_.fonts_size(); -} - -bool FontTableMatcher::FontListIsDisjointFrom( - const FontTableMatcher& other) const { - std::vector<std::string> paths_self, paths_other, intersection_result; - for (const auto& indexed_font : font_table_.fonts()) { - paths_self.push_back(indexed_font.file_path()); - } - for (const auto& indexed_font_other : other.font_table_.fonts()) { - paths_other.push_back(indexed_font_other.file_path()); - } - std::sort(paths_self.begin(), paths_self.end()); - std::sort(paths_other.begin(), paths_other.end()); - std::set_intersection(paths_self.begin(), paths_self.end(), - paths_other.begin(), paths_other.end(), - std::back_inserter(intersection_result)); - return intersection_result.empty(); -} - -void FontTableMatcher::SortUniqueNameTableForSearch( - FontUniqueNameTable* font_table) { - std::sort(font_table->mutable_name_map()->begin(), - font_table->mutable_name_map()->end(), - [](const auto& a, const auto& b) { - return a.font_name() < b.font_name(); - }); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher_unittest.cc b/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher_unittest.cc deleted file mode 100644 index a0103f4..0000000 --- a/chromium/src/third_party/blink/common/font_unique_name_lookup/font_table_matcher_unittest.cc +++ /dev/null
@@ -1,99 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/font_unique_name_lookup/icu_fold_case_util.h" - -namespace { -const char kTestFilePath1[] = "tmp/test/font1.ttf"; -const char kDummyAndroidBuildFingerPrint[] = "A"; - -void PopulateFontUniqueNameEntry( - blink::FontUniqueNameTable* font_unique_name_table, - const std::string& path, - int32_t ttc_index, - const std::set<std::string>& names) { - auto* font_entry = font_unique_name_table->add_fonts(); - font_entry->set_file_path(path); - font_entry->set_ttc_index(ttc_index); - - std::set<std::string> names_folded; - for (auto& name : names) { - names_folded.insert(blink::IcuFoldCase(name)); - } - - // Set iteration will return values in sorted order. - for (auto& name : names_folded) { - auto* names_entry = font_unique_name_table->add_name_map(); - names_entry->set_font_name(name); - names_entry->set_font_index(0); - } -} - -} // namespace - -namespace blink { - -class FontTableMatcherTest : public ::testing::Test { - protected: - void SetUp() override { - FontUniqueNameTable font_unique_name_table; - font_unique_name_table.set_stored_for_platform_version_identifier( - kDummyAndroidBuildFingerPrint); - PopulateFontUniqueNameEntry( - &font_unique_name_table, kTestFilePath1, 0, - {u8"FONT NAME UPPERCASE", u8"எழுத்துரு பெயர்", u8"字體名稱", - u8"FONT-NAME-UPPERCASE", u8"எழுத்துரு-பெயர்", u8"字體名稱"}); - base::ReadOnlySharedMemoryMapping mapping = - FontTableMatcher::MemoryMappingFromFontUniqueNameTable( - std::move(font_unique_name_table)); - - matcher_ = std::make_unique<FontTableMatcher>(mapping); - } - - std::unique_ptr<FontTableMatcher> matcher_; -}; - -TEST_F(FontTableMatcherTest, CaseInsensitiveMatchingBothNames) { - ASSERT_EQ(matcher_->AvailableFonts(), 1u); - base::Optional<FontTableMatcher::MatchResult> result = - matcher_->MatchName("font name uppercase"); - ASSERT_TRUE(result.has_value()); - ASSERT_EQ(result->font_path, kTestFilePath1); - ASSERT_EQ(result->ttc_index, 0u); - - result = matcher_->MatchName("font-name-uppercase"); - ASSERT_TRUE(result.has_value()); - ASSERT_EQ(result->font_path, kTestFilePath1); - ASSERT_EQ(result->ttc_index, 0u); -} - -TEST_F(FontTableMatcherTest, MatchTamilChinese) { - ASSERT_EQ(matcher_->AvailableFonts(), 1u); - for (std::string font_name : - {u8"எழுத்துரு பெயர்", u8"எழுத்துரு-பெயர்", u8"字體名稱"}) { - base::Optional<FontTableMatcher::MatchResult> result = - matcher_->MatchName(font_name); - ASSERT_TRUE(result.has_value()); - ASSERT_EQ(result->font_path, kTestFilePath1); - ASSERT_EQ(result->ttc_index, 0u); - - base::Optional<FontTableMatcher::MatchResult> result_for_substring = - matcher_->MatchName(font_name.substr(0, font_name.size() - 2u)); - ASSERT_FALSE(result_for_substring.has_value()); - } -} - -TEST_F(FontTableMatcherTest, NoSubStringMatching) { - ASSERT_EQ(matcher_->AvailableFonts(), 1u); - base::Optional<FontTableMatcher::MatchResult> result = - matcher_->MatchName("font name"); - ASSERT_FALSE(result.has_value()); - - result = matcher_->MatchName("font-name"); - ASSERT_FALSE(result.has_value()); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/frame/OWNERS b/chromium/src/third_party/blink/common/frame/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/frame/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/frame/frame_policy.cc b/chromium/src/third_party/blink/common/frame/frame_policy.cc deleted file mode 100644 index bebf6b5..0000000 --- a/chromium/src/third_party/blink/common/frame/frame_policy.cc +++ /dev/null
@@ -1,30 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/frame/frame_policy.h" -#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h" - -namespace blink { - -FramePolicy::FramePolicy() - : sandbox_flags(network::mojom::WebSandboxFlags::kNone), - container_policy({}), - required_document_policy({}), - disallow_document_access(false) {} - -FramePolicy::FramePolicy( - network::mojom::WebSandboxFlags sandbox_flags, - const ParsedFeaturePolicy& container_policy, - const DocumentPolicyFeatureState& required_document_policy, - bool disallow_document_access) - : sandbox_flags(sandbox_flags), - container_policy(container_policy), - required_document_policy(required_document_policy), - disallow_document_access(disallow_document_access) {} - -FramePolicy::FramePolicy(const FramePolicy& lhs) = default; - -FramePolicy::~FramePolicy() = default; - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/frame/frame_policy_mojom_traits.h b/chromium/src/third_party/blink/common/frame/frame_policy_mojom_traits.h deleted file mode 100644 index b68844b..0000000 --- a/chromium/src/third_party/blink/common/frame/frame_policy_mojom_traits.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_COMMON_FRAME_FRAME_POLICY_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_COMMON_FRAME_FRAME_POLICY_MOJOM_TRAITS_H_ - -#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h" -#include "third_party/blink/common/feature_policy/feature_policy_mojom_traits.h" -#include "third_party/blink/public/common/frame/frame_policy.h" -#include "third_party/blink/public/mojom/frame/frame_policy.mojom-shared.h" - -namespace mojo { - -template <> -class BLINK_COMMON_EXPORT - StructTraits<blink::mojom::FramePolicyDataView, blink::FramePolicy> { - public: - static bool disallow_document_access(const blink::FramePolicy& frame_policy) { - return frame_policy.disallow_document_access; - } - - static const std::vector<blink::ParsedFeaturePolicyDeclaration>& - container_policy(const blink::FramePolicy& frame_policy) { - return frame_policy.container_policy; - } - - static network::mojom::WebSandboxFlags sandbox_flags( - const blink::FramePolicy& frame_policy) { - return frame_policy.sandbox_flags; - } - - static const blink::DocumentPolicyFeatureState& required_document_policy( - const blink::FramePolicy& frame_policy) { - return frame_policy.required_document_policy; - } - - static bool Read(blink::mojom::FramePolicyDataView in, - blink::FramePolicy* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_COMMON_FRAME_FRAME_POLICY_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/common/indexeddb/OWNERS b/chromium/src/third_party/blink/common/indexeddb/OWNERS deleted file mode 100644 index a2789c2..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -file://content/browser/indexed_db/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS -per-file *.typemap=set noparent -per-file *.typemap=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/indexeddb/indexed_db_default_mojom_traits.cc b/chromium/src/third_party/blink/common/indexeddb/indexed_db_default_mojom_traits.cc deleted file mode 100644 index 2ceea02..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/indexed_db_default_mojom_traits.cc +++ /dev/null
@@ -1,230 +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. - -#include "third_party/blink/public/common/indexeddb/indexed_db_default_mojom_traits.h" - -#include <utility> - -#include "base/stl_util.h" -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_key.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_key_range.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_metadata.h" -#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom.h" - -namespace mojo { - -using blink::mojom::IDBOperationType; - -// static -bool StructTraits<blink::mojom::IDBDatabaseMetadataDataView, - blink::IndexedDBDatabaseMetadata>:: - Read(blink::mojom::IDBDatabaseMetadataDataView data, - blink::IndexedDBDatabaseMetadata* out) { - out->id = data.id(); - if (!data.ReadName(&out->name)) - return false; - out->version = data.version(); - out->max_object_store_id = data.max_object_store_id(); - MapDataView<int64_t, blink::mojom::IDBObjectStoreMetadataDataView> - object_stores; - data.GetObjectStoresDataView(&object_stores); - for (size_t i = 0; i < object_stores.size(); ++i) { - const int64_t key = object_stores.keys()[i]; - blink::IndexedDBObjectStoreMetadata object_store; - if (!object_stores.values().Read(i, &object_store)) - return false; - DCHECK_EQ(out->object_stores.count(key), 0UL); - out->object_stores[key] = object_store; - } - out->was_cold_open = data.was_cold_open(); - return true; -} - -// static -bool StructTraits< - blink::mojom::IDBIndexKeysDataView, - blink::IndexedDBIndexKeys>::Read(blink::mojom::IDBIndexKeysDataView data, - blink::IndexedDBIndexKeys* out) { - out->id = data.index_id(); - return data.ReadIndexKeys(&out->keys); -} - -// static -bool StructTraits<blink::mojom::IDBIndexMetadataDataView, - blink::IndexedDBIndexMetadata>:: - Read(blink::mojom::IDBIndexMetadataDataView data, - blink::IndexedDBIndexMetadata* out) { - out->id = data.id(); - if (!data.ReadName(&out->name)) - return false; - if (!data.ReadKeyPath(&out->key_path)) - return false; - out->unique = data.unique(); - out->multi_entry = data.multi_entry(); - return true; -} - -// static -blink::mojom::IDBKeyDataView::Tag -UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::GetTag( - const blink::IndexedDBKey& key) { - switch (key.type()) { - case blink::mojom::IDBKeyType::Array: - return blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY; - case blink::mojom::IDBKeyType::Binary: - return blink::mojom::IDBKeyDataView::Tag::BINARY; - case blink::mojom::IDBKeyType::String: - return blink::mojom::IDBKeyDataView::Tag::STRING; - case blink::mojom::IDBKeyType::Date: - return blink::mojom::IDBKeyDataView::Tag::DATE; - case blink::mojom::IDBKeyType::Number: - return blink::mojom::IDBKeyDataView::Tag::NUMBER; - case blink::mojom::IDBKeyType::None: - return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE; - - // Not used, fall through to NOTREACHED. - case blink::mojom::IDBKeyType::Invalid: // Only used in blink. - case blink::mojom::IDBKeyType::Min:; // Only used in the browser. - } - NOTREACHED(); - return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE; -} - -// static -bool UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::Read( - blink::mojom::IDBKeyDataView data, - blink::IndexedDBKey* out) { - switch (data.tag()) { - case blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY: { - std::vector<blink::IndexedDBKey> array; - if (!data.ReadKeyArray(&array)) - return false; - *out = blink::IndexedDBKey(std::move(array)); - return true; - } - case blink::mojom::IDBKeyDataView::Tag::BINARY: { - ArrayDataView<uint8_t> bytes; - data.GetBinaryDataView(&bytes); - std::string binary(bytes.data(), bytes.data() + bytes.size()); - *out = blink::IndexedDBKey(std::move(binary)); - return true; - } - case blink::mojom::IDBKeyDataView::Tag::STRING: { - base::string16 string; - if (!data.ReadString(&string)) - return false; - *out = blink::IndexedDBKey(std::move(string)); - return true; - } - case blink::mojom::IDBKeyDataView::Tag::DATE: - *out = blink::IndexedDBKey(data.date(), blink::mojom::IDBKeyType::Date); - return true; - case blink::mojom::IDBKeyDataView::Tag::NUMBER: - *out = - blink::IndexedDBKey(data.number(), blink::mojom::IDBKeyType::Number); - return true; - case blink::mojom::IDBKeyDataView::Tag::OTHER_NONE: - *out = blink::IndexedDBKey(blink::mojom::IDBKeyType::None); - return true; - } - - return false; -} - -// static -blink::mojom::IDBKeyPathDataPtr -StructTraits<blink::mojom::IDBKeyPathDataView, blink::IndexedDBKeyPath>::data( - const blink::IndexedDBKeyPath& key_path) { - if (key_path.IsNull()) - return nullptr; - - auto data = blink::mojom::IDBKeyPathData::New(); - switch (key_path.type()) { - case blink::mojom::IDBKeyPathType::String: - data->set_string(key_path.string()); - return data; - case blink::mojom::IDBKeyPathType::Array: - data->set_string_array(key_path.array()); - return data; - - // The following key path types are not used. - case blink::mojom::IDBKeyPathType::Null:; // No-op, fall out of switch - // block to NOTREACHED(). - } - NOTREACHED(); - return data; -} - -// static -bool StructTraits<blink::mojom::IDBKeyPathDataView, blink::IndexedDBKeyPath>:: - Read(blink::mojom::IDBKeyPathDataView data, blink::IndexedDBKeyPath* out) { - blink::mojom::IDBKeyPathDataDataView data_view; - data.GetDataDataView(&data_view); - - if (data_view.is_null()) { - *out = blink::IndexedDBKeyPath(); - return true; - } - - switch (data_view.tag()) { - case blink::mojom::IDBKeyPathDataDataView::Tag::STRING: { - base::string16 string; - if (!data_view.ReadString(&string)) - return false; - *out = blink::IndexedDBKeyPath(string); - return true; - } - case blink::mojom::IDBKeyPathDataDataView::Tag::STRING_ARRAY: { - std::vector<base::string16> array; - if (!data_view.ReadStringArray(&array)) - return false; - *out = blink::IndexedDBKeyPath(array); - return true; - } - } - - return false; -} - -// static -bool StructTraits<blink::mojom::IDBKeyRangeDataView, blink::IndexedDBKeyRange>:: - Read(blink::mojom::IDBKeyRangeDataView data, - blink::IndexedDBKeyRange* out) { - blink::IndexedDBKey lower; - blink::IndexedDBKey upper; - if (!data.ReadLower(&lower) || !data.ReadUpper(&upper)) - return false; - - *out = blink::IndexedDBKeyRange(lower, upper, data.lower_open(), - data.upper_open()); - return true; -} - -// static -bool StructTraits<blink::mojom::IDBObjectStoreMetadataDataView, - blink::IndexedDBObjectStoreMetadata>:: - Read(blink::mojom::IDBObjectStoreMetadataDataView data, - blink::IndexedDBObjectStoreMetadata* out) { - out->id = data.id(); - if (!data.ReadName(&out->name)) - return false; - if (!data.ReadKeyPath(&out->key_path)) - return false; - out->auto_increment = data.auto_increment(); - out->max_index_id = data.max_index_id(); - MapDataView<int64_t, blink::mojom::IDBIndexMetadataDataView> indexes; - data.GetIndexesDataView(&indexes); - for (size_t i = 0; i < indexes.size(); ++i) { - const int64_t key = indexes.keys()[i]; - blink::IndexedDBIndexMetadata index; - if (!indexes.values().Read(i, &index)) - return false; - DCHECK_EQ(out->indexes.count(key), 0UL); - out->indexes[key] = index; - } - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key.cc b/chromium/src/third_party/blink/common/indexeddb/indexeddb_key.cc deleted file mode 100644 index ff88659..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key.cc +++ /dev/null
@@ -1,214 +0,0 @@ -// Copyright (c) 2012 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 "third_party/blink/public/common/indexeddb/indexeddb_key.h" - -#include <sstream> -#include <string> -#include <utility> - -namespace blink { - -namespace { -std::string string_to_hex(const std::string& input) { - static const char* const lut = "0123456789ABCDEF"; - size_t len = input.length(); - - std::string output; - output.reserve(2 * len); - for (size_t i = 0; i < len; ++i) { - const unsigned char c = input[i]; - output.push_back(lut[c >> 4]); - output.push_back(lut[c & 0xFF]); - } - return output; -} - -// Very rough estimate of minimum key size overhead. -const size_t kOverheadSize = 16; - -size_t CalculateArraySize(const IndexedDBKey::KeyArray& keys) { - size_t size(0); - for (const auto& key : keys) - size += key.size_estimate(); - return size; -} - -template <typename T> -int Compare(const T& a, const T& b) { - // Using '<' for both comparisons here is as generic as possible (for e.g. - // objects which only define operator<() and not operator>() or operator==()) - // and also allows e.g. floating point NaNs to compare equal. - if (a < b) - return -1; - return (b < a) ? 1 : 0; -} - -} // namespace - -IndexedDBKey::IndexedDBKey() - : type_(mojom::IDBKeyType::None), size_estimate_(kOverheadSize) {} - -IndexedDBKey::IndexedDBKey(mojom::IDBKeyType type) - : type_(type), size_estimate_(kOverheadSize) { - DCHECK(type == mojom::IDBKeyType::None || - type == mojom::IDBKeyType::Invalid || type == mojom::IDBKeyType::Min); -} - -IndexedDBKey::IndexedDBKey(double number, mojom::IDBKeyType type) - : type_(type), - number_(number), - size_estimate_(kOverheadSize + sizeof(number)) { - DCHECK(type == blink::mojom::IDBKeyType::Number || - type == blink::mojom::IDBKeyType::Date); -} - -IndexedDBKey::IndexedDBKey(KeyArray array) - : type_(blink::mojom::IDBKeyType::Array), - array_(std::move(array)), - size_estimate_(kOverheadSize + CalculateArraySize(array_)) {} - -IndexedDBKey::IndexedDBKey(std::string binary) - : type_(blink::mojom::IDBKeyType::Binary), - binary_(std::move(binary)), - size_estimate_(kOverheadSize + - (binary_.length() * sizeof(std::string::value_type))) {} - -IndexedDBKey::IndexedDBKey(base::string16 string) - : type_(mojom::IDBKeyType::String), - string_(std::move(string)), - size_estimate_(kOverheadSize + - (string_.length() * sizeof(base::string16::value_type))) {} - -IndexedDBKey::IndexedDBKey(const IndexedDBKey& other) = default; -IndexedDBKey::~IndexedDBKey() = default; -IndexedDBKey& IndexedDBKey::operator=(const IndexedDBKey& other) = default; - -bool IndexedDBKey::IsValid() const { - if (type_ == mojom::IDBKeyType::Invalid || type_ == mojom::IDBKeyType::None) - return false; - - if (type_ == blink::mojom::IDBKeyType::Array) { - for (size_t i = 0; i < array_.size(); i++) { - if (!array_[i].IsValid()) - return false; - } - } - - return true; -} - -bool IndexedDBKey::IsLessThan(const IndexedDBKey& other) const { - return CompareTo(other) < 0; -} - -bool IndexedDBKey::Equals(const IndexedDBKey& other) const { - return !CompareTo(other); -} - -bool IndexedDBKey::HasHoles() const { - if (type_ != mojom::IDBKeyType::Array) - return false; - - for (const auto& subkey : array_) { - if (subkey.type() == mojom::IDBKeyType::None) - return true; - } - return false; -} - -IndexedDBKey IndexedDBKey::FillHoles(const IndexedDBKey& primary_key) const { - if (type_ != mojom::IDBKeyType::Array) - return IndexedDBKey(*this); - - std::vector<IndexedDBKey> subkeys; - subkeys.reserve(array_.size()); - for (const auto& subkey : array_) { - if (subkey.type() == mojom::IDBKeyType::None) { - subkeys.push_back(primary_key); - } else { - // "Holes" can only exist at the top level of an array key, as (1) they - // are produced by an index's array keypath when a member matches the - // store's keypath, and (2) array keypaths are flat (no - // arrays-of-arrays). - DCHECK(!subkey.HasHoles()); - subkeys.push_back(subkey); - } - } - return IndexedDBKey(subkeys); -} - -std::string IndexedDBKey::DebugString() const { - std::stringstream result; - result << "IDBKey{"; - switch (type_) { - case mojom::IDBKeyType::Array: { - result << "array: ["; - for (size_t i = 0; i < array_.size(); ++i) { - result << array_[i].DebugString(); - if (i != array_.size() - 1) - result << ", "; - } - result << "]"; - break; - } - case mojom::IDBKeyType::Binary: - result << "binary: 0x" << string_to_hex(binary_); - break; - case mojom::IDBKeyType::String: - result << "string: " << string_; - break; - case mojom::IDBKeyType::Date: - result << "date: " << number_; - break; - case mojom::IDBKeyType::Number: - result << "number: " << number_; - break; - case mojom::IDBKeyType::Invalid: - result << "Invalid"; - break; - case mojom::IDBKeyType::None: - result << "None"; - break; - case mojom::IDBKeyType::Min: - result << "Min"; - break; - default: - result << "InvalidKey"; - } - result << "}"; - return result.str(); -} - -int IndexedDBKey::CompareTo(const IndexedDBKey& other) const { - DCHECK(IsValid()); - DCHECK(other.IsValid()); - if (type_ != other.type_) - return type_ > other.type_ ? -1 : 1; - - switch (type_) { - case mojom::IDBKeyType::Array: - for (size_t i = 0; i < array_.size() && i < other.array_.size(); ++i) { - int result = array_[i].CompareTo(other.array_[i]); - if (result != 0) - return result; - } - return Compare(array_.size(), other.array_.size()); - case mojom::IDBKeyType::Binary: - return binary_.compare(other.binary_); - case mojom::IDBKeyType::String: - return string_.compare(other.string_); - case mojom::IDBKeyType::Date: - case mojom::IDBKeyType::Number: - return Compare(number_, other.number_); - case mojom::IDBKeyType::Invalid: - case mojom::IDBKeyType::None: - case mojom::IDBKeyType::Min: - default: - NOTREACHED(); - return 0; - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_path.cc b/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_path.cc deleted file mode 100644 index 661815b..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_path.cc +++ /dev/null
@@ -1,55 +0,0 @@ -// Copyright (c) 2012 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 "third_party/blink/public/common/indexeddb/indexeddb_key_path.h" - -#include "base/check.h" -#include "base/notreached.h" -#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-shared.h" - -namespace blink { - -IndexedDBKeyPath::IndexedDBKeyPath() : type_(mojom::IDBKeyPathType::Null) {} - -IndexedDBKeyPath::IndexedDBKeyPath(const base::string16& string) - : type_(mojom::IDBKeyPathType::String), string_(string) {} - -IndexedDBKeyPath::IndexedDBKeyPath(const std::vector<base::string16>& array) - : type_(mojom::IDBKeyPathType::Array), array_(array) {} - -IndexedDBKeyPath::IndexedDBKeyPath(const IndexedDBKeyPath& other) = default; -IndexedDBKeyPath::IndexedDBKeyPath(IndexedDBKeyPath&& other) = default; -IndexedDBKeyPath::~IndexedDBKeyPath() = default; -IndexedDBKeyPath& IndexedDBKeyPath::operator=(const IndexedDBKeyPath& other) = - default; -IndexedDBKeyPath& IndexedDBKeyPath::operator=(IndexedDBKeyPath&& other) = - default; - -const std::vector<base::string16>& IndexedDBKeyPath::array() const { - DCHECK(type_ == blink::mojom::IDBKeyPathType::Array); - return array_; -} - -const base::string16& IndexedDBKeyPath::string() const { - DCHECK(type_ == blink::mojom::IDBKeyPathType::String); - return string_; -} - -bool IndexedDBKeyPath::operator==(const IndexedDBKeyPath& other) const { - if (type_ != other.type_) - return false; - - switch (type_) { - case mojom::IDBKeyPathType::Null: - return true; - case mojom::IDBKeyPathType::String: - return string_ == other.string_; - case mojom::IDBKeyPathType::Array: - return array_ == other.array_; - } - NOTREACHED(); - return false; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_unittest.cc b/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_unittest.cc deleted file mode 100644 index 17aec06..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/indexeddb_key_unittest.cc +++ /dev/null
@@ -1,60 +0,0 @@ -// Copyright 2013 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 "third_party/blink/public/common/indexeddb/indexeddb_key.h" - -#include <stddef.h> - -#include <utility> -#include <vector> - -#include "base/strings/string16.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -namespace { - -TEST(IndexedDBKeyTest, KeySizeEstimates) { - std::vector<IndexedDBKey> keys; - std::vector<size_t> estimates; - - keys.push_back(IndexedDBKey()); - estimates.push_back(16u); // Overhead. - - keys.push_back(IndexedDBKey(mojom::IDBKeyType::None)); - estimates.push_back(16u); - - double number = 3.14159; - keys.push_back(IndexedDBKey(number, mojom::IDBKeyType::Number)); - estimates.push_back(24u); // Overhead + sizeof(double). - - double date = 1370884329.0; - keys.push_back(IndexedDBKey(date, mojom::IDBKeyType::Date)); - estimates.push_back(24u); // Overhead + sizeof(double). - - const base::string16 string(1024, static_cast<base::char16>('X')); - keys.push_back(IndexedDBKey(std::move(string))); - // Overhead + string length * sizeof(base::char16). - estimates.push_back(2064u); - - const size_t array_size = 1024; - IndexedDBKey::KeyArray array; - double value = 123.456; - for (size_t i = 0; i < array_size; ++i) { - array.push_back(IndexedDBKey(value, mojom::IDBKeyType::Number)); - } - keys.push_back(IndexedDBKey(std::move(array))); - // Overhead + array length * (Overhead + sizeof(double)). - estimates.push_back(24592u); - - ASSERT_EQ(keys.size(), estimates.size()); - for (size_t i = 0; i < keys.size(); ++i) { - EXPECT_EQ(estimates[i], keys[i].size_estimate()); - } -} - -} // namespace - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/indexeddb/indexeddb_metadata.cc b/chromium/src/third_party/blink/common/indexeddb/indexeddb_metadata.cc deleted file mode 100644 index 9349732..0000000 --- a/chromium/src/third_party/blink/common/indexeddb/indexeddb_metadata.cc +++ /dev/null
@@ -1,106 +0,0 @@ -// Copyright (c) 2013 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 "third_party/blink/public/common/indexeddb/indexeddb_metadata.h" - -using blink::IndexedDBKeyPath; - -namespace blink { - -IndexedDBIndexMetadata::IndexedDBIndexMetadata() = default; - -IndexedDBIndexMetadata::IndexedDBIndexMetadata(const base::string16& name, - int64_t id, - const IndexedDBKeyPath& key_path, - bool unique, - bool multi_entry) - : name(name), - id(id), - key_path(key_path), - unique(unique), - multi_entry(multi_entry) {} - -IndexedDBIndexMetadata::IndexedDBIndexMetadata( - const IndexedDBIndexMetadata& other) = default; -IndexedDBIndexMetadata::IndexedDBIndexMetadata(IndexedDBIndexMetadata&& other) = - default; - -IndexedDBIndexMetadata::~IndexedDBIndexMetadata() = default; - -IndexedDBIndexMetadata& IndexedDBIndexMetadata::operator=( - const IndexedDBIndexMetadata& other) = default; -IndexedDBIndexMetadata& IndexedDBIndexMetadata::operator=( - IndexedDBIndexMetadata&& other) = default; - -bool IndexedDBIndexMetadata::operator==( - const IndexedDBIndexMetadata& other) const { - return name == other.name && id == other.id && key_path == other.key_path && - unique == other.unique && multi_entry == other.multi_entry; -} - -IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata( - const base::string16& name, - int64_t id, - const IndexedDBKeyPath& key_path, - bool auto_increment, - int64_t max_index_id) - : name(name), - id(id), - key_path(key_path), - auto_increment(auto_increment), - max_index_id(max_index_id) {} - -IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata() = default; - -IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata( - const IndexedDBObjectStoreMetadata& other) = default; -IndexedDBObjectStoreMetadata::IndexedDBObjectStoreMetadata( - IndexedDBObjectStoreMetadata&& other) = default; - -IndexedDBObjectStoreMetadata::~IndexedDBObjectStoreMetadata() = default; - -IndexedDBObjectStoreMetadata& IndexedDBObjectStoreMetadata::operator=( - const IndexedDBObjectStoreMetadata& other) = default; -IndexedDBObjectStoreMetadata& IndexedDBObjectStoreMetadata::operator=( - IndexedDBObjectStoreMetadata&& other) = default; - -bool IndexedDBObjectStoreMetadata::operator==( - const IndexedDBObjectStoreMetadata& other) const { - return name == other.name && id == other.id && key_path == other.key_path && - auto_increment == other.auto_increment && - max_index_id == other.max_index_id && indexes == other.indexes; -} - -IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata() : version(NO_VERSION) {} - -IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata( - const base::string16& name, - int64_t id, - int64_t version, - int64_t max_object_store_id) - : name(name), - id(id), - version(version), - max_object_store_id(max_object_store_id) {} - -IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata( - const IndexedDBDatabaseMetadata& other) = default; -IndexedDBDatabaseMetadata::IndexedDBDatabaseMetadata( - IndexedDBDatabaseMetadata&& other) = default; - -IndexedDBDatabaseMetadata::~IndexedDBDatabaseMetadata() = default; - -IndexedDBDatabaseMetadata& IndexedDBDatabaseMetadata::operator=( - const IndexedDBDatabaseMetadata& other) = default; -IndexedDBDatabaseMetadata& IndexedDBDatabaseMetadata::operator=( - IndexedDBDatabaseMetadata&& other) = default; - -bool IndexedDBDatabaseMetadata::operator==( - const IndexedDBDatabaseMetadata& other) const { - return name == other.name && id == other.id && version == other.version && - max_object_store_id == other.max_object_store_id && - object_stores == other.object_stores; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/input/OWNERS b/chromium/src/third_party/blink/common/input/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/input/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders.cc b/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders.cc deleted file mode 100644 index 1d0e962..0000000 --- a/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders.cc +++ /dev/null
@@ -1,263 +0,0 @@ -// Copyright 2013 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 "third_party/blink/public/common/input/synthetic_web_input_event_builders.h" - -#include "base/check_op.h" -#include "ui/events/base_event_utils.h" - -namespace blink { - -WebMouseEvent SyntheticWebMouseEventBuilder::Build( - blink::WebInputEvent::Type type) { - return WebMouseEvent(type, WebInputEvent::kNoModifiers, - ui::EventTimeForNow()); -} - -WebMouseEvent SyntheticWebMouseEventBuilder::Build( - blink::WebInputEvent::Type type, - float window_x, - float window_y, - int modifiers, - blink::WebPointerProperties::PointerType pointer_type) { - DCHECK(WebInputEvent::IsMouseEventType(type)); - WebMouseEvent result(type, modifiers, ui::EventTimeForNow()); - result.SetPositionInWidget(window_x, window_y); - result.SetPositionInScreen(window_x, window_y); - result.SetModifiers(modifiers); - result.pointer_type = pointer_type; - result.id = WebMouseEvent::kMousePointerId; - return result; -} - -WebMouseWheelEvent SyntheticWebMouseWheelEventBuilder::Build( - WebMouseWheelEvent::Phase phase) { - WebMouseWheelEvent result(WebInputEvent::Type::kMouseWheel, - WebInputEvent::kNoModifiers, ui::EventTimeForNow()); - result.phase = phase; - result.event_action = - WebMouseWheelEvent::GetPlatformSpecificDefaultEventAction(result); - return result; -} - -WebMouseWheelEvent SyntheticWebMouseWheelEventBuilder::Build( - float x, - float y, - float dx, - float dy, - int modifiers, - ui::ScrollGranularity delta_units) { - return Build(x, y, 0, 0, dx, dy, modifiers, delta_units); -} - -WebMouseWheelEvent SyntheticWebMouseWheelEventBuilder::Build( - float x, - float y, - float global_x, - float global_y, - float dx, - float dy, - int modifiers, - ui::ScrollGranularity delta_units) { - WebMouseWheelEvent result(WebInputEvent::Type::kMouseWheel, modifiers, - ui::EventTimeForNow()); - result.SetPositionInScreen(global_x, global_y); - result.SetPositionInWidget(x, y); - result.delta_units = delta_units; - result.delta_x = dx; - result.delta_y = dy; - if (dx) - result.wheel_ticks_x = dx > 0.0f ? 1.0f : -1.0f; - if (dy) - result.wheel_ticks_y = dy > 0.0f ? 1.0f : -1.0f; - - result.event_action = - WebMouseWheelEvent::GetPlatformSpecificDefaultEventAction(result); - return result; -} - -WebGestureEvent SyntheticWebGestureEventBuilder::Build( - WebInputEvent::Type type, - blink::WebGestureDevice source_device, - int modifiers) { - DCHECK(WebInputEvent::IsGestureEventType(type)); - WebGestureEvent result(type, modifiers, ui::EventTimeForNow(), source_device); - if (type == WebInputEvent::Type::kGestureTap || - type == WebInputEvent::Type::kGestureTapUnconfirmed || - type == WebInputEvent::Type::kGestureDoubleTap) { - result.data.tap.tap_count = 1; - result.data.tap.width = 10; - result.data.tap.height = 10; - } - - result.SetNeedsWheelEvent(result.IsTouchpadZoomEvent()); - - return result; -} - -WebGestureEvent SyntheticWebGestureEventBuilder::BuildScrollBegin( - float dx_hint, - float dy_hint, - blink::WebGestureDevice source_device, - int pointer_count) { - WebGestureEvent result = - Build(WebInputEvent::Type::kGestureScrollBegin, source_device); - result.data.scroll_begin.delta_x_hint = dx_hint; - result.data.scroll_begin.delta_y_hint = dy_hint; - result.data.scroll_begin.pointer_count = pointer_count; - return result; -} - -WebGestureEvent SyntheticWebGestureEventBuilder::BuildScrollUpdate( - float dx, - float dy, - int modifiers, - blink::WebGestureDevice source_device) { - WebGestureEvent result = Build(WebInputEvent::Type::kGestureScrollUpdate, - source_device, modifiers); - result.data.scroll_update.delta_x = dx; - result.data.scroll_update.delta_y = dy; - return result; -} - -WebGestureEvent SyntheticWebGestureEventBuilder::BuildPinchUpdate( - float scale, - float anchor_x, - float anchor_y, - int modifiers, - blink::WebGestureDevice source_device) { - WebGestureEvent result = - Build(WebInputEvent::Type::kGesturePinchUpdate, source_device, modifiers); - result.data.pinch_update.scale = scale; - result.SetPositionInWidget(gfx::PointF(anchor_x, anchor_y)); - result.SetPositionInScreen(gfx::PointF(anchor_x, anchor_y)); - return result; -} - -WebGestureEvent SyntheticWebGestureEventBuilder::BuildFling( - float velocity_x, - float velocity_y, - blink::WebGestureDevice source_device) { - WebGestureEvent result = - Build(WebInputEvent::Type::kGestureFlingStart, source_device); - result.data.fling_start.velocity_x = velocity_x; - result.data.fling_start.velocity_y = velocity_y; - return result; -} - -SyntheticWebTouchEvent::SyntheticWebTouchEvent() : WebTouchEvent() { - unique_touch_event_id = ui::GetNextTouchEventId(); - SetTimestamp(ui::EventTimeForNow()); - pointer_id_ = 0; -} - -void SyntheticWebTouchEvent::ResetPoints() { - int activePointCount = 0; - unsigned count = 0; - for (unsigned int i = 0; i < kTouchesLengthCap; ++i) { - switch (touches[i].state) { - case WebTouchPoint::State::kStatePressed: - case WebTouchPoint::State::kStateMoved: - case WebTouchPoint::State::kStateStationary: - touches[i].state = WebTouchPoint::State::kStateStationary; - ++activePointCount; - ++count; - break; - case WebTouchPoint::State::kStateReleased: - case WebTouchPoint::State::kStateCancelled: - touches[i] = WebTouchPoint(); - ++count; - break; - case WebTouchPoint::State::kStateUndefined: - break; - } - if (count >= touches_length) - break; - } - touches_length = activePointCount; - type_ = WebInputEvent::Type::kUndefined; - moved_beyond_slop_region = false; - unique_touch_event_id = ui::GetNextTouchEventId(); -} - -int SyntheticWebTouchEvent::PressPoint(float x, - float y, - float radius_x, - float radius_y, - float rotation_angle, - float force) { - int index = FirstFreeIndex(); - if (index == -1) - return -1; - WebTouchPoint& point = touches[index]; - point.id = pointer_id_++; - point.SetPositionInWidget(x, y); - point.SetPositionInScreen(x, y); - point.state = WebTouchPoint::State::kStatePressed; - point.radius_x = radius_x; - point.radius_y = radius_y; - point.rotation_angle = rotation_angle; - point.force = force; - point.tilt_x = point.tilt_y = 0; - point.pointer_type = blink::WebPointerProperties::PointerType::kTouch; - ++touches_length; - SetType(WebInputEvent::Type::kTouchStart); - dispatch_type = WebInputEvent::DispatchType::kBlocking; - return index; -} - -void SyntheticWebTouchEvent::MovePoint(int index, - float x, - float y, - float radius_x, - float radius_y, - float rotation_angle, - float force) { - CHECK_GE(index, 0); - CHECK_LT(index, kTouchesLengthCap); - // Always set this bit to avoid otherwise unexpected touchmove suppression. - // The caller can opt-out explicitly, if necessary. - moved_beyond_slop_region = true; - WebTouchPoint& point = touches[index]; - point.SetPositionInWidget(x, y); - point.SetPositionInScreen(x, y); - point.state = WebTouchPoint::State::kStateMoved; - point.radius_x = radius_x; - point.radius_y = radius_y; - point.rotation_angle = rotation_angle; - point.force = force; - SetType(WebInputEvent::Type::kTouchMove); - dispatch_type = WebInputEvent::DispatchType::kBlocking; -} - -void SyntheticWebTouchEvent::ReleasePoint(int index) { - CHECK_GE(index, 0); - CHECK_LT(index, kTouchesLengthCap); - touches[index].state = WebTouchPoint::State::kStateReleased; - touches[index].force = 0.f; - SetType(WebInputEvent::Type::kTouchEnd); - dispatch_type = WebInputEvent::DispatchType::kBlocking; -} - -void SyntheticWebTouchEvent::CancelPoint(int index) { - CHECK_GE(index, 0); - CHECK_LT(index, kTouchesLengthCap); - touches[index].state = WebTouchPoint::State::kStateCancelled; - SetType(WebInputEvent::Type::kTouchCancel); - dispatch_type = WebInputEvent::DispatchType::kEventNonBlocking; -} - -void SyntheticWebTouchEvent::SetTimestamp(base::TimeTicks timestamp) { - SetTimeStamp(timestamp); -} - -int SyntheticWebTouchEvent::FirstFreeIndex() { - for (size_t i = 0; i < kTouchesLengthCap; ++i) { - if (touches[i].state == WebTouchPoint::State::kStateUndefined) - return i; - } - return -1; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders_unittest.cc b/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders_unittest.cc deleted file mode 100644 index 87e5dd7..0000000 --- a/chromium/src/third_party/blink/common/input/synthetic_web_input_event_builders_unittest.cc +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/input/synthetic_web_input_event_builders.h" - -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -TEST(SyntheticWebInputEventBuilders, BuildWebTouchEvent) { - SyntheticWebTouchEvent event; - - event.PressPoint(1, 2); - EXPECT_EQ(1U, event.touches_length); - EXPECT_EQ(0, event.touches[0].id); - EXPECT_EQ(WebTouchPoint::State::kStatePressed, event.touches[0].state); - EXPECT_EQ(gfx::PointF(1, 2), event.touches[0].PositionInWidget()); - event.ResetPoints(); - - event.PressPoint(3, 4); - EXPECT_EQ(2U, event.touches_length); - EXPECT_EQ(1, event.touches[1].id); - EXPECT_EQ(WebTouchPoint::State::kStatePressed, event.touches[1].state); - EXPECT_EQ(gfx::PointF(3, 4), event.touches[1].PositionInWidget()); - event.ResetPoints(); - - event.MovePoint(1, 5, 6); - EXPECT_EQ(2U, event.touches_length); - EXPECT_EQ(1, event.touches[1].id); - EXPECT_EQ(WebTouchPoint::State::kStateMoved, event.touches[1].state); - EXPECT_EQ(gfx::PointF(5, 6), event.touches[1].PositionInWidget()); - event.ResetPoints(); - - event.ReleasePoint(0); - EXPECT_EQ(2U, event.touches_length); - EXPECT_EQ(0, event.touches[0].id); - EXPECT_EQ(WebTouchPoint::State::kStateReleased, event.touches[0].state); - event.ResetPoints(); - - event.MovePoint(1, 7, 8); - EXPECT_EQ(1U, event.touches_length); - EXPECT_EQ(1, event.touches[1].id); - EXPECT_EQ(WebTouchPoint::State::kStateMoved, event.touches[1].state); - EXPECT_EQ(gfx::PointF(7, 8), event.touches[1].PositionInWidget()); - EXPECT_EQ(WebTouchPoint::State::kStateUndefined, event.touches[0].state); - event.ResetPoints(); - - event.PressPoint(9, 10); - EXPECT_EQ(2U, event.touches_length); - EXPECT_EQ(2, event.touches[0].id); - EXPECT_EQ(WebTouchPoint::State::kStatePressed, event.touches[0].state); - EXPECT_EQ(gfx::PointF(9, 10), event.touches[0].PositionInWidget()); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc b/chromium/src/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc deleted file mode 100644 index 06c3f54..0000000 --- a/chromium/src/third_party/blink/common/input/web_coalesced_input_event_mojom_traits.cc +++ /dev/null
@@ -1,545 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/input/web_coalesced_input_event_mojom_traits.h" - -#include "base/i18n/char_iterator.h" -#include "mojo/public/cpp/base/time_mojom_traits.h" -#include "third_party/blink/public/common/input/web_gesture_event.h" -#include "third_party/blink/public/common/input/web_keyboard_event.h" -#include "third_party/blink/public/common/input/web_mouse_wheel_event.h" -#include "ui/latency/mojom/latency_info_mojom_traits.h" - -namespace mojo { -namespace { - -void CopyString(base::char16* dst, const base::string16& text) { - size_t pos = 0; - for (base::i18n::UTF16CharIterator iter(text); - !iter.end() && pos < blink::WebKeyboardEvent::kTextLengthCap - 1; - iter.Advance()) { - dst[pos++] = iter.get(); - } - dst[pos] = '\0'; -} - -blink::mojom::PointerDataPtr PointerDataFromPointerProperties( - const blink::WebPointerProperties& pointer, - blink::mojom::MouseDataPtr mouse_data) { - return blink::mojom::PointerData::New( - pointer.id, pointer.force, pointer.tilt_x, pointer.tilt_y, - pointer.tangential_pressure, pointer.twist, pointer.button, - pointer.pointer_type, pointer.movement_x, pointer.movement_y, - pointer.is_raw_movement_event, pointer.PositionInWidget(), - pointer.PositionInScreen(), std::move(mouse_data)); -} - -void PointerPropertiesFromPointerData( - const blink::mojom::PointerDataPtr& pointer_data, - blink::WebPointerProperties* pointer_properties) { - pointer_properties->id = pointer_data->pointer_id; - pointer_properties->force = pointer_data->force; - pointer_properties->tilt_x = pointer_data->tilt_x; - pointer_properties->tilt_y = pointer_data->tilt_y; - pointer_properties->tangential_pressure = pointer_data->tangential_pressure; - pointer_properties->twist = pointer_data->twist; - pointer_properties->button = pointer_data->button; - pointer_properties->pointer_type = pointer_data->pointer_type; - pointer_properties->movement_x = pointer_data->movement_x; - pointer_properties->movement_y = pointer_data->movement_y; - pointer_properties->is_raw_movement_event = - pointer_data->is_raw_movement_event; -} - -void TouchPointPropertiesFromPointerData( - const blink::mojom::TouchPointPtr& mojo_touch_point, - blink::WebTouchPoint* touch_point) { - PointerPropertiesFromPointerData(mojo_touch_point->pointer_data, touch_point); - touch_point->state = mojo_touch_point->state; - touch_point->radius_x = mojo_touch_point->radius_x; - touch_point->radius_y = mojo_touch_point->radius_y; - touch_point->rotation_angle = mojo_touch_point->rotation_angle; - touch_point->SetPositionInWidget( - mojo_touch_point->pointer_data->widget_position.x(), - mojo_touch_point->pointer_data->widget_position.y()); - touch_point->SetPositionInScreen( - mojo_touch_point->pointer_data->screen_position.x(), - mojo_touch_point->pointer_data->screen_position.y()); -} - -// TODO(dtapuska): Remove once SetPositionInXXX moves to WebPointerProperties. -void MouseEventPropertiesFromPointerData( - const blink::mojom::PointerDataPtr& pointer_data, - blink::WebMouseEvent* mouse_event) { - PointerPropertiesFromPointerData(pointer_data, mouse_event); - mouse_event->SetPositionInWidget(pointer_data->widget_position.x(), - pointer_data->widget_position.y()); - mouse_event->SetPositionInScreen(pointer_data->screen_position.x(), - pointer_data->screen_position.y()); -} - -} // namespace - -bool StructTraits<blink::mojom::EventDataView, - std::unique_ptr<blink::WebCoalescedInputEvent>>:: - Read(blink::mojom::EventDataView event, - std::unique_ptr<blink::WebCoalescedInputEvent>* out) { - DCHECK(!out->get()); - - blink::WebInputEvent::Type type; - if (!event.ReadType(&type)) - return false; - - base::TimeTicks timestamp; - if (!event.ReadTimestamp(×tamp)) - return false; - - std::unique_ptr<blink::WebInputEvent> input_event; - if (blink::WebInputEvent::IsKeyboardEventType(type)) { - blink::mojom::KeyDataPtr key_data; - if (!event.ReadKeyData<blink::mojom::KeyDataPtr>(&key_data)) - return false; - - input_event.reset( - new blink::WebKeyboardEvent(type, event.modifiers(), timestamp)); - - blink::WebKeyboardEvent* key_event = - static_cast<blink::WebKeyboardEvent*>(input_event.get()); - key_event->windows_key_code = key_data->windows_key_code; - key_event->native_key_code = key_data->native_key_code; - key_event->dom_code = key_data->dom_code; - key_event->dom_key = key_data->dom_key; - key_event->is_system_key = key_data->is_system_key; - key_event->is_browser_shortcut = key_data->is_browser_shortcut; - CopyString(key_event->text, key_data->text); - CopyString(key_event->unmodified_text, key_data->unmodified_text); - } else if (blink::WebInputEvent::IsGestureEventType(type)) { - blink::mojom::GestureDataPtr gesture_data; - if (!event.ReadGestureData<blink::mojom::GestureDataPtr>(&gesture_data)) - return false; - input_event.reset(new blink::WebGestureEvent( - type, event.modifiers(), timestamp, gesture_data->source_device)); - - blink::WebGestureEvent* gesture_event = - static_cast<blink::WebGestureEvent*>(input_event.get()); - gesture_event->SetPositionInWidget(gesture_data->widget_position); - gesture_event->SetPositionInScreen(gesture_data->screen_position); - gesture_event->is_source_touch_event_set_blocking = - gesture_data->is_source_touch_event_set_blocking; - gesture_event->primary_pointer_type = gesture_data->primary_pointer_type; - gesture_event->SetSourceDevice(gesture_data->source_device); - gesture_event->unique_touch_event_id = gesture_data->unique_touch_event_id; - - if (gesture_data->contact_size) { - switch (type) { - default: - break; - case blink::WebInputEvent::Type::kGestureTapDown: - gesture_event->data.tap_down.width = - gesture_data->contact_size->width(); - gesture_event->data.tap_down.height = - gesture_data->contact_size->height(); - break; - case blink::WebInputEvent::Type::kGestureShowPress: - gesture_event->data.show_press.width = - gesture_data->contact_size->width(); - gesture_event->data.show_press.height = - gesture_data->contact_size->height(); - break; - case blink::WebInputEvent::Type::kGestureTap: - case blink::WebInputEvent::Type::kGestureTapUnconfirmed: - case blink::WebInputEvent::Type::kGestureDoubleTap: - gesture_event->data.tap.width = gesture_data->contact_size->width(); - gesture_event->data.tap.height = gesture_data->contact_size->height(); - break; - case blink::WebInputEvent::Type::kGestureLongPress: - case blink::WebInputEvent::Type::kGestureLongTap: - gesture_event->data.long_press.width = - gesture_data->contact_size->width(); - gesture_event->data.long_press.height = - gesture_data->contact_size->height(); - break; - case blink::WebInputEvent::Type::kGestureTwoFingerTap: - gesture_event->data.two_finger_tap.first_finger_width = - gesture_data->contact_size->width(); - gesture_event->data.two_finger_tap.first_finger_height = - gesture_data->contact_size->height(); - break; - } - } - - if (gesture_data->scroll_data) { - switch (type) { - default: - break; - case blink::WebInputEvent::Type::kGestureScrollBegin: - gesture_event->data.scroll_begin.delta_x_hint = - gesture_data->scroll_data->delta_x; - gesture_event->data.scroll_begin.delta_y_hint = - gesture_data->scroll_data->delta_y; - gesture_event->data.scroll_begin.delta_hint_units = - gesture_data->scroll_data->delta_units; - gesture_event->data.scroll_begin.target_viewport = - gesture_data->scroll_data->target_viewport; - gesture_event->data.scroll_begin.inertial_phase = - gesture_data->scroll_data->inertial_phase; - gesture_event->data.scroll_begin.synthetic = - gesture_data->scroll_data->synthetic; - gesture_event->data.scroll_begin.pointer_count = - gesture_data->scroll_data->pointer_count; - gesture_event->data.scroll_begin.cursor_control = - gesture_data->scroll_data->cursor_control; - break; - case blink::WebInputEvent::Type::kGestureScrollEnd: - gesture_event->data.scroll_end.delta_units = - gesture_data->scroll_data->delta_units; - gesture_event->data.scroll_end.inertial_phase = - gesture_data->scroll_data->inertial_phase; - gesture_event->data.scroll_end.synthetic = - gesture_data->scroll_data->synthetic; - break; - case blink::WebInputEvent::Type::kGestureScrollUpdate: - gesture_event->data.scroll_update.delta_x = - gesture_data->scroll_data->delta_x; - gesture_event->data.scroll_update.delta_y = - gesture_data->scroll_data->delta_y; - gesture_event->data.scroll_update.delta_units = - gesture_data->scroll_data->delta_units; - gesture_event->data.scroll_update.inertial_phase = - gesture_data->scroll_data->inertial_phase; - if (gesture_data->scroll_data->update_details) { - gesture_event->data.scroll_update.velocity_x = - gesture_data->scroll_data->update_details->velocity_x; - gesture_event->data.scroll_update.velocity_y = - gesture_data->scroll_data->update_details->velocity_y; - } - break; - } - } - - if (gesture_data->pinch_begin_data && - type == blink::WebInputEvent::Type::kGesturePinchBegin) { - gesture_event->data.pinch_begin.needs_wheel_event = - gesture_data->pinch_begin_data->needs_wheel_event; - } - - if (gesture_data->pinch_update_data && - type == blink::WebInputEvent::Type::kGesturePinchUpdate) { - gesture_event->data.pinch_update.zoom_disabled = - gesture_data->pinch_update_data->zoom_disabled; - gesture_event->data.pinch_update.scale = - gesture_data->pinch_update_data->scale; - gesture_event->data.pinch_update.needs_wheel_event = - gesture_data->pinch_update_data->needs_wheel_event; - } - - if (gesture_data->pinch_end_data && - type == blink::WebInputEvent::Type::kGesturePinchEnd) { - gesture_event->data.pinch_end.needs_wheel_event = - gesture_data->pinch_end_data->needs_wheel_event; - } - - if (gesture_data->tap_data) { - switch (type) { - default: - break; - case blink::WebInputEvent::Type::kGestureTap: - case blink::WebInputEvent::Type::kGestureTapUnconfirmed: - case blink::WebInputEvent::Type::kGestureDoubleTap: - gesture_event->data.tap.tap_count = gesture_data->tap_data->tap_count; - gesture_event->data.tap.needs_wheel_event = - gesture_data->tap_data->needs_wheel_event; - break; - } - } - - if (gesture_data->fling_data) { - switch (type) { - default: - break; - case blink::WebInputEvent::Type::kGestureFlingStart: - gesture_event->data.fling_start.velocity_x = - gesture_data->fling_data->velocity_x; - gesture_event->data.fling_start.velocity_y = - gesture_data->fling_data->velocity_y; - gesture_event->data.fling_start.target_viewport = - gesture_data->fling_data->target_viewport; - break; - case blink::WebInputEvent::Type::kGestureFlingCancel: - gesture_event->data.fling_cancel.target_viewport = - gesture_data->fling_data->target_viewport; - gesture_event->data.fling_cancel.prevent_boosting = - gesture_data->fling_data->prevent_boosting; - break; - } - } - - } else if (blink::WebInputEvent::IsTouchEventType(type)) { - blink::mojom::TouchDataPtr touch_data; - if (!event.ReadTouchData<blink::mojom::TouchDataPtr>(&touch_data)) - return false; - - input_event.reset( - new blink::WebTouchEvent(type, event.modifiers(), timestamp)); - - blink::WebTouchEvent* touch_event = - static_cast<blink::WebTouchEvent*>(input_event.get()); - std::vector<blink::mojom::TouchPointPtr> touches; - unsigned i; - for (i = 0; i < touch_data->touches.size() && - i < blink::WebTouchEvent::kTouchesLengthCap; - ++i) { - blink::WebTouchPoint& touch_point = touch_event->touches[i]; - TouchPointPropertiesFromPointerData(touch_data->touches[i], &touch_point); - } - - touch_event->touches_length = i; - touch_event->dispatch_type = touch_data->cancelable; - touch_event->moved_beyond_slop_region = - touch_data->moved_beyond_slop_region; - touch_event->hovering = touch_data->hovering; - touch_event->touch_start_or_first_touch_move = - touch_data->touch_start_or_first_move; - touch_event->unique_touch_event_id = touch_data->unique_touch_event_id; - } else if (blink::WebInputEvent::IsMouseEventType(type) || - type == blink::WebInputEvent::Type::kMouseWheel) { - blink::mojom::PointerDataPtr pointer_data; - if (!event.ReadPointerData<blink::mojom::PointerDataPtr>(&pointer_data)) - return false; - - if (blink::WebInputEvent::IsMouseEventType(type)) { - input_event.reset( - new blink::WebMouseEvent(type, event.modifiers(), timestamp)); - } else { - input_event.reset( - new blink::WebMouseWheelEvent(type, event.modifiers(), timestamp)); - } - - blink::WebMouseEvent* mouse_event = - static_cast<blink::WebMouseEvent*>(input_event.get()); - - MouseEventPropertiesFromPointerData(pointer_data, mouse_event); - if (pointer_data->mouse_data) { - mouse_event->click_count = pointer_data->mouse_data->click_count; - - if (type == blink::WebInputEvent::Type::kMouseWheel && - pointer_data->mouse_data->wheel_data) { - blink::WebMouseWheelEvent* wheel_event = - static_cast<blink::WebMouseWheelEvent*>(mouse_event); - blink::mojom::WheelDataPtr& wheel_data = - pointer_data->mouse_data->wheel_data; - wheel_event->delta_x = wheel_data->delta_x; - wheel_event->delta_y = wheel_data->delta_y; - wheel_event->wheel_ticks_x = wheel_data->wheel_ticks_x; - wheel_event->wheel_ticks_y = wheel_data->wheel_ticks_y; - wheel_event->acceleration_ratio_x = wheel_data->acceleration_ratio_x; - wheel_event->acceleration_ratio_y = wheel_data->acceleration_ratio_y; - wheel_event->phase = - static_cast<blink::WebMouseWheelEvent::Phase>(wheel_data->phase); - wheel_event->momentum_phase = - static_cast<blink::WebMouseWheelEvent::Phase>( - wheel_data->momentum_phase); - wheel_event->dispatch_type = wheel_data->cancelable; - wheel_event->event_action = - static_cast<blink::WebMouseWheelEvent::EventAction>( - wheel_data->event_action); - wheel_event->delta_units = - static_cast<ui::ScrollGranularity>(wheel_data->delta_units); - } - } - - } else { - return false; - } - - ui::LatencyInfo latency_info; - if (!event.ReadLatency(&latency_info)) - return false; - out->reset( - new blink::WebCoalescedInputEvent(std::move(input_event), latency_info)); - return true; -} - -// static -blink::mojom::KeyDataPtr -StructTraits<blink::mojom::EventDataView, - std::unique_ptr<blink::WebCoalescedInputEvent>>:: - key_data(const std::unique_ptr<blink::WebCoalescedInputEvent>& event) { - if (!blink::WebInputEvent::IsKeyboardEventType(event->Event().GetType())) - return nullptr; - const blink::WebKeyboardEvent* key_event = - static_cast<const blink::WebKeyboardEvent*>(event->EventPointer()); - return blink::mojom::KeyData::New( - key_event->dom_key, key_event->dom_code, key_event->windows_key_code, - key_event->native_key_code, key_event->is_system_key, - key_event->is_browser_shortcut, key_event->text, - key_event->unmodified_text); -} - -// static -blink::mojom::PointerDataPtr -StructTraits<blink::mojom::EventDataView, - std::unique_ptr<blink::WebCoalescedInputEvent>>:: - pointer_data(const std::unique_ptr<blink::WebCoalescedInputEvent>& event) { - bool is_wheel_event = - event->Event().GetType() == blink::WebInputEvent::Type::kMouseWheel; - if (!blink::WebInputEvent::IsMouseEventType(event->Event().GetType()) && - !is_wheel_event) { - return nullptr; - } - const blink::WebMouseEvent* mouse_event = - static_cast<const blink::WebMouseEvent*>(event->EventPointer()); - - blink::mojom::WheelDataPtr wheel_data; - if (is_wheel_event) { - const blink::WebMouseWheelEvent* wheel_event = - static_cast<const blink::WebMouseWheelEvent*>(mouse_event); - wheel_data = blink::mojom::WheelData::New( - wheel_event->delta_x, wheel_event->delta_y, wheel_event->wheel_ticks_x, - wheel_event->wheel_ticks_y, wheel_event->acceleration_ratio_x, - wheel_event->acceleration_ratio_y, wheel_event->phase, - wheel_event->momentum_phase, wheel_event->dispatch_type, - static_cast<uint8_t>(wheel_event->event_action), - static_cast<uint8_t>(wheel_event->delta_units)); - } - - return PointerDataFromPointerProperties( - *mouse_event, blink::mojom::MouseData::New(mouse_event->click_count, - std::move(wheel_data))); -} - -// static -blink::mojom::GestureDataPtr -StructTraits<blink::mojom::EventDataView, - std::unique_ptr<blink::WebCoalescedInputEvent>>:: - gesture_data(const std::unique_ptr<blink::WebCoalescedInputEvent>& event) { - if (!blink::WebInputEvent::IsGestureEventType(event->Event().GetType())) - return nullptr; - const blink::WebGestureEvent* gesture_event = - static_cast<const blink::WebGestureEvent*>(event->EventPointer()); - auto gesture_data = blink::mojom::GestureData::New(); - gesture_data->screen_position = gesture_event->PositionInScreen(); - gesture_data->widget_position = gesture_event->PositionInWidget(); - gesture_data->source_device = gesture_event->SourceDevice(); - gesture_data->is_source_touch_event_set_blocking = - gesture_event->is_source_touch_event_set_blocking; - gesture_data->primary_pointer_type = gesture_event->primary_pointer_type; - gesture_data->unique_touch_event_id = gesture_event->unique_touch_event_id; - switch (gesture_event->GetType()) { - default: - break; - case blink::WebInputEvent::Type::kGestureTapDown: - gesture_data->contact_size = - gfx::Size(gesture_event->data.tap_down.width, - gesture_event->data.tap_down.height); - break; - case blink::WebInputEvent::Type::kGestureShowPress: - gesture_data->contact_size = - gfx::Size(gesture_event->data.show_press.width, - gesture_event->data.show_press.height); - break; - case blink::WebInputEvent::Type::kGestureTap: - case blink::WebInputEvent::Type::kGestureTapUnconfirmed: - case blink::WebInputEvent::Type::kGestureDoubleTap: - gesture_data->contact_size = gfx::Size(gesture_event->data.tap.width, - gesture_event->data.tap.height); - gesture_data->tap_data = - blink::mojom::TapData::New(gesture_event->data.tap.tap_count, - gesture_event->data.tap.needs_wheel_event); - break; - case blink::WebInputEvent::Type::kGestureLongPress: - case blink::WebInputEvent::Type::kGestureLongTap: - gesture_data->contact_size = - gfx::Size(gesture_event->data.long_press.width, - gesture_event->data.long_press.height); - break; - - case blink::WebInputEvent::Type::kGestureTwoFingerTap: - gesture_data->contact_size = - gfx::Size(gesture_event->data.two_finger_tap.first_finger_width, - gesture_event->data.two_finger_tap.first_finger_height); - break; - case blink::WebInputEvent::Type::kGestureScrollBegin: - gesture_data->scroll_data = blink::mojom::ScrollData::New( - gesture_event->data.scroll_begin.delta_x_hint, - gesture_event->data.scroll_begin.delta_y_hint, - gesture_event->data.scroll_begin.delta_hint_units, - gesture_event->data.scroll_begin.target_viewport, - gesture_event->data.scroll_begin.inertial_phase, - gesture_event->data.scroll_begin.synthetic, - gesture_event->data.scroll_begin.pointer_count, - gesture_event->data.scroll_begin.cursor_control, nullptr); - break; - case blink::WebInputEvent::Type::kGestureScrollEnd: - gesture_data->scroll_data = blink::mojom::ScrollData::New( - 0, 0, gesture_event->data.scroll_end.delta_units, false, - gesture_event->data.scroll_end.inertial_phase, - gesture_event->data.scroll_end.synthetic, 0, false, nullptr); - break; - case blink::WebInputEvent::Type::kGestureScrollUpdate: - gesture_data->scroll_data = blink::mojom::ScrollData::New( - gesture_event->data.scroll_update.delta_x, - gesture_event->data.scroll_update.delta_y, - gesture_event->data.scroll_update.delta_units, false, - gesture_event->data.scroll_update.inertial_phase, false, 0, false, - blink::mojom::ScrollUpdate::New( - gesture_event->data.scroll_update.velocity_x, - gesture_event->data.scroll_update.velocity_y)); - break; - case blink::WebInputEvent::Type::kGestureFlingStart: - gesture_data->fling_data = blink::mojom::FlingData::New( - gesture_event->data.fling_start.velocity_x, - gesture_event->data.fling_start.velocity_y, - gesture_event->data.fling_start.target_viewport, false); - break; - case blink::WebInputEvent::Type::kGestureFlingCancel: - gesture_data->fling_data = blink::mojom::FlingData::New( - 0, 0, gesture_event->data.fling_cancel.target_viewport, - gesture_event->data.fling_cancel.prevent_boosting); - break; - case blink::WebInputEvent::Type::kGesturePinchBegin: - gesture_data->pinch_begin_data = blink::mojom::PinchBeginData::New( - gesture_event->data.pinch_begin.needs_wheel_event); - break; - case blink::WebInputEvent::Type::kGesturePinchUpdate: - gesture_data->pinch_update_data = blink::mojom::PinchUpdateData::New( - gesture_event->data.pinch_update.scale, - gesture_event->data.pinch_update.zoom_disabled, - gesture_event->data.pinch_update.needs_wheel_event); - break; - case blink::WebInputEvent::Type::kGesturePinchEnd: - gesture_data->pinch_end_data = blink::mojom::PinchEndData::New( - gesture_event->data.pinch_end.needs_wheel_event); - break; - } - return gesture_data; -} - -// static -blink::mojom::TouchDataPtr -StructTraits<blink::mojom::EventDataView, - std::unique_ptr<blink::WebCoalescedInputEvent>>:: - touch_data(const std::unique_ptr<blink::WebCoalescedInputEvent>& event) { - if (!blink::WebInputEvent::IsTouchEventType(event->Event().GetType())) - return nullptr; - - const blink::WebTouchEvent* touch_event = - static_cast<const blink::WebTouchEvent*>(event->EventPointer()); - auto touch_data = blink::mojom::TouchData::New( - touch_event->dispatch_type, touch_event->moved_beyond_slop_region, - touch_event->touch_start_or_first_touch_move, touch_event->hovering, - touch_event->unique_touch_event_id, - std::vector<blink::mojom::TouchPointPtr>()); - for (unsigned i = 0; i < touch_event->touches_length; ++i) { - blink::mojom::PointerDataPtr pointer_data = - PointerDataFromPointerProperties(touch_event->touches[i], nullptr); - touch_data->touches.emplace_back(blink::mojom::TouchPoint::New( - touch_event->touches[i].state, touch_event->touches[i].radius_x, - touch_event->touches[i].radius_y, - touch_event->touches[i].rotation_angle, std::move(pointer_data))); - } - return touch_data; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/input/web_gesture_event.cc b/chromium/src/third_party/blink/common/input/web_gesture_event.cc deleted file mode 100644 index fccaee7..0000000 --- a/chromium/src/third_party/blink/common/input/web_gesture_event.cc +++ /dev/null
@@ -1,385 +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. - -#include "third_party/blink/public/common/input/web_gesture_event.h" - -#include <limits> - -#include "ui/gfx/transform.h" - -namespace blink { - -namespace { - -bool IsContinuousGestureEvent(WebInputEvent::Type type) { - switch (type) { - case WebGestureEvent::Type::kGestureScrollUpdate: - case WebGestureEvent::Type::kGesturePinchUpdate: - return true; - default: - return false; - } -} - -// Returns the transform matrix corresponding to the gesture event. -gfx::Transform GetTransformForEvent(const WebGestureEvent& gesture_event) { - gfx::Transform gesture_transform; - if (gesture_event.GetType() == WebInputEvent::Type::kGestureScrollUpdate) { - gesture_transform.Translate(gesture_event.data.scroll_update.delta_x, - gesture_event.data.scroll_update.delta_y); - } else if (gesture_event.GetType() == - WebInputEvent::Type::kGesturePinchUpdate) { - float scale = gesture_event.data.pinch_update.scale; - gesture_transform.Translate(-gesture_event.PositionInWidget().x(), - -gesture_event.PositionInWidget().y()); - gesture_transform.Scale(scale, scale); - gesture_transform.Translate(gesture_event.PositionInWidget().x(), - gesture_event.PositionInWidget().y()); - } else { - NOTREACHED() << "Invalid event type for transform retrieval: " - << WebInputEvent::GetName(gesture_event.GetType()); - } - return gesture_transform; -} - -} // namespace - -std::unique_ptr<WebInputEvent> WebGestureEvent::Clone() const { - return std::make_unique<WebGestureEvent>(*this); -} - -bool WebGestureEvent::CanCoalesce(const WebInputEvent& event) const { - if (!IsGestureEventType(event.GetType())) - return false; - const WebGestureEvent& gesture_event = - static_cast<const WebGestureEvent&>(event); - if (GetType() != gesture_event.GetType() || - SourceDevice() != gesture_event.SourceDevice() || - GetModifiers() != gesture_event.GetModifiers()) - return false; - - if (GetType() == WebInputEvent::Type::kGestureScrollUpdate) - return true; - - // GesturePinchUpdate scales can be combined only if they share a focal point, - // e.g., with double-tap drag zoom. - // Due to the imprecision of OOPIF coordinate conversions, the positions may - // not be exactly equal, so we only require approximate equality. - constexpr float kAnchorTolerance = 1.f; - if (GetType() == WebInputEvent::Type::kGesturePinchUpdate && - (std::abs(PositionInWidget().x() - gesture_event.PositionInWidget().x()) < - kAnchorTolerance) && - (std::abs(PositionInWidget().y() - gesture_event.PositionInWidget().y()) < - kAnchorTolerance)) { - return true; - } - - return false; -} - -void WebGestureEvent::Coalesce(const WebInputEvent& event) { - DCHECK(CanCoalesce(event)); - const WebGestureEvent& gesture_event = - static_cast<const WebGestureEvent&>(event); - if (GetType() == WebInputEvent::Type::kGestureScrollUpdate) { - data.scroll_update.delta_x += gesture_event.data.scroll_update.delta_x; - data.scroll_update.delta_y += gesture_event.data.scroll_update.delta_y; - } else if (GetType() == WebInputEvent::Type::kGesturePinchUpdate) { - data.pinch_update.scale *= gesture_event.data.pinch_update.scale; - // Ensure the scale remains bounded above 0 and below Infinity so that - // we can reliably perform operations like log on the values. - if (data.pinch_update.scale < std::numeric_limits<float>::min()) - data.pinch_update.scale = std::numeric_limits<float>::min(); - else if (data.pinch_update.scale > std::numeric_limits<float>::max()) - data.pinch_update.scale = std::numeric_limits<float>::max(); - } -} - -base::Optional<ui::ScrollInputType> WebGestureEvent::GetScrollInputType() - const { - if (!IsGestureScroll()) - return base::nullopt; - switch (SourceDevice()) { - case WebGestureDevice::kTouchpad: - return ui::ScrollInputType::kWheel; - case WebGestureDevice::kTouchscreen: - return ui::ScrollInputType::kTouchscreen; - case WebGestureDevice::kSyntheticAutoscroll: - return ui::ScrollInputType::kAutoscroll; - case WebGestureDevice::kScrollbar: - return ui::ScrollInputType::kScrollbar; - case WebGestureDevice::kUninitialized: - return base::nullopt; - } -} - -float WebGestureEvent::DeltaXInRootFrame() const { - float delta_x = (type_ == WebInputEvent::Type::kGestureScrollBegin) - ? data.scroll_begin.delta_x_hint - : data.scroll_update.delta_x; - - bool is_percent = (type_ == WebInputEvent::Type::kGestureScrollBegin) - ? data.scroll_begin.delta_hint_units == - ui::ScrollGranularity::kScrollByPercentage - : data.scroll_update.delta_units == - ui::ScrollGranularity::kScrollByPercentage; - - return is_percent ? delta_x : delta_x / frame_scale_; -} - -float WebGestureEvent::DeltaYInRootFrame() const { - float delta_y = (type_ == WebInputEvent::Type::kGestureScrollBegin) - ? data.scroll_begin.delta_y_hint - : data.scroll_update.delta_y; - - bool is_percent = (type_ == WebInputEvent::Type::kGestureScrollBegin) - ? data.scroll_begin.delta_hint_units == - ui::ScrollGranularity::kScrollByPercentage - : data.scroll_update.delta_units == - ui::ScrollGranularity::kScrollByPercentage; - - return is_percent ? delta_y : delta_y / frame_scale_; -} - -ui::ScrollGranularity WebGestureEvent::DeltaUnits() const { - if (type_ == WebInputEvent::Type::kGestureScrollBegin) - return data.scroll_begin.delta_hint_units; - if (type_ == WebInputEvent::Type::kGestureScrollUpdate) - return data.scroll_update.delta_units; - DCHECK(type_ == WebInputEvent::Type::kGestureScrollEnd); - return data.scroll_end.delta_units; -} - -WebGestureEvent::InertialPhaseState WebGestureEvent::InertialPhase() const { - if (type_ == WebInputEvent::Type::kGestureScrollBegin) - return data.scroll_begin.inertial_phase; - if (type_ == WebInputEvent::Type::kGestureScrollUpdate) - return data.scroll_update.inertial_phase; - DCHECK(type_ == WebInputEvent::Type::kGestureScrollEnd); - return data.scroll_end.inertial_phase; -} - -bool WebGestureEvent::Synthetic() const { - if (type_ == WebInputEvent::Type::kGestureScrollBegin) - return data.scroll_begin.synthetic; - DCHECK(type_ == WebInputEvent::Type::kGestureScrollEnd); - return data.scroll_end.synthetic; -} - -float WebGestureEvent::VelocityX() const { - if (type_ == WebInputEvent::Type::kGestureScrollUpdate) - return data.scroll_update.velocity_x; - DCHECK(type_ == WebInputEvent::Type::kGestureFlingStart); - return data.fling_start.velocity_x; -} - -float WebGestureEvent::VelocityY() const { - if (type_ == WebInputEvent::Type::kGestureScrollUpdate) - return data.scroll_update.velocity_y; - DCHECK(type_ == WebInputEvent::Type::kGestureFlingStart); - return data.fling_start.velocity_y; -} - -gfx::SizeF WebGestureEvent::TapAreaInRootFrame() const { - if (type_ == WebInputEvent::Type::kGestureTwoFingerTap) { - return gfx::SizeF(data.two_finger_tap.first_finger_width / frame_scale_, - data.two_finger_tap.first_finger_height / frame_scale_); - } else if (type_ == WebInputEvent::Type::kGestureLongPress || - type_ == WebInputEvent::Type::kGestureLongTap) { - return gfx::SizeF(data.long_press.width / frame_scale_, - data.long_press.height / frame_scale_); - } else if (type_ == WebInputEvent::Type::kGestureTap || - type_ == WebInputEvent::Type::kGestureTapUnconfirmed || - type_ == WebInputEvent::Type::kGestureDoubleTap) { - return gfx::SizeF(data.tap.width / frame_scale_, - data.tap.height / frame_scale_); - } else if (type_ == WebInputEvent::Type::kGestureTapDown) { - return gfx::SizeF(data.tap_down.width / frame_scale_, - data.tap_down.height / frame_scale_); - } else if (type_ == WebInputEvent::Type::kGestureShowPress) { - return gfx::SizeF(data.show_press.width / frame_scale_, - data.show_press.height / frame_scale_); - } - // This function is called for all gestures and determined if the tap - // area is empty or not; so return an empty rect here. - return gfx::SizeF(); -} - -gfx::PointF WebGestureEvent::PositionInRootFrame() const { - return gfx::ScalePoint(position_in_widget_, 1 / frame_scale_) + - frame_translate_; -} - -int WebGestureEvent::TapCount() const { - DCHECK(type_ == WebInputEvent::Type::kGestureTap); - return data.tap.tap_count; -} - -void WebGestureEvent::ApplyTouchAdjustment( - const gfx::PointF& root_frame_coords) { - // Update the window-relative position of the event so that the node that - // was ultimately hit is under this point (i.e. elementFromPoint for the - // client co-ordinates in a 'click' event should yield the target). The - // global position is intentionally left unmodified because it's intended to - // reflect raw co-ordinates unrelated to any content. - frame_translate_ = root_frame_coords - - gfx::ScalePoint(position_in_widget_, 1 / frame_scale_); -} - -void WebGestureEvent::FlattenTransform() { - if (frame_scale_ != 1) { - switch (type_) { - case WebInputEvent::Type::kGestureScrollBegin: - if (data.scroll_begin.delta_hint_units != - ui::ScrollGranularity::kScrollByPercentage) { - data.scroll_begin.delta_x_hint /= frame_scale_; - data.scroll_begin.delta_y_hint /= frame_scale_; - } - break; - case WebInputEvent::Type::kGestureScrollUpdate: - if (data.scroll_update.delta_units != - ui::ScrollGranularity::kScrollByPercentage) { - data.scroll_update.delta_x /= frame_scale_; - data.scroll_update.delta_y /= frame_scale_; - } - break; - case WebInputEvent::Type::kGestureTwoFingerTap: - data.two_finger_tap.first_finger_width /= frame_scale_; - data.two_finger_tap.first_finger_height /= frame_scale_; - break; - case WebInputEvent::Type::kGestureLongPress: - case WebInputEvent::Type::kGestureLongTap: - data.long_press.width /= frame_scale_; - data.long_press.height /= frame_scale_; - break; - case WebInputEvent::Type::kGestureTap: - case WebInputEvent::Type::kGestureTapUnconfirmed: - case WebInputEvent::Type::kGestureDoubleTap: - data.tap.width /= frame_scale_; - data.tap.height /= frame_scale_; - break; - case WebInputEvent::Type::kGestureTapDown: - data.tap_down.width /= frame_scale_; - data.tap_down.height /= frame_scale_; - break; - case WebInputEvent::Type::kGestureShowPress: - data.show_press.width /= frame_scale_; - data.show_press.height /= frame_scale_; - break; - default: - break; - } - } - - SetPositionInWidget(PositionInRootFrame()); - frame_translate_ = gfx::Vector2dF(); - frame_scale_ = 1; -} - -// Whether |event_in_queue| is a touchscreen GesturePinchUpdate or -// GestureScrollUpdate and has the same modifiers/source as the new -// scroll/pinch event. Compatible touchscreen scroll and pinch event pairs -// can be logically coalesced. -bool WebGestureEvent::IsCompatibleScrollorPinch( - const WebGestureEvent& new_event, - const WebGestureEvent& event_in_queue) { - DCHECK(new_event.GetType() == WebInputEvent::Type::kGestureScrollUpdate || - new_event.GetType() == WebInputEvent::Type::kGesturePinchUpdate) - << "Invalid event type for pinch/scroll coalescing: " - << WebInputEvent::GetName(new_event.GetType()); - DLOG_IF(WARNING, new_event.TimeStamp() < event_in_queue.TimeStamp()) - << "Event time not monotonic?\n"; - return (event_in_queue.GetType() == - WebInputEvent::Type::kGestureScrollUpdate || - event_in_queue.GetType() == - WebInputEvent::Type::kGesturePinchUpdate) && - event_in_queue.GetModifiers() == new_event.GetModifiers() && - event_in_queue.SourceDevice() == WebGestureDevice::kTouchscreen && - new_event.SourceDevice() == WebGestureDevice::kTouchscreen; -} - -std::pair<std::unique_ptr<WebGestureEvent>, std::unique_ptr<WebGestureEvent>> -WebGestureEvent::CoalesceScrollAndPinch( - const WebGestureEvent* second_last_event, - const WebGestureEvent& last_event, - const WebGestureEvent& new_event) { - DCHECK(!last_event.CanCoalesce(new_event)) - << "New event can't be coalesced with the last event in queue directly."; - DCHECK(IsContinuousGestureEvent(new_event.GetType())); - DCHECK(IsCompatibleScrollorPinch(new_event, last_event)); - DCHECK(!second_last_event || - IsCompatibleScrollorPinch(new_event, *second_last_event)); - - auto scroll_event = std::make_unique<WebGestureEvent>( - WebInputEvent::Type::kGestureScrollUpdate, new_event.GetModifiers(), - new_event.TimeStamp(), new_event.SourceDevice()); - scroll_event->primary_pointer_type = new_event.primary_pointer_type; - auto pinch_event = std::make_unique<WebGestureEvent>(*scroll_event); - pinch_event->SetType(WebInputEvent::Type::kGesturePinchUpdate); - pinch_event->SetPositionInWidget( - new_event.GetType() == WebInputEvent::Type::kGesturePinchUpdate - ? new_event.PositionInWidget() - : last_event.PositionInWidget()); - - gfx::Transform combined_scroll_pinch = GetTransformForEvent(last_event); - if (second_last_event) { - combined_scroll_pinch.PreconcatTransform( - GetTransformForEvent(*second_last_event)); - } - combined_scroll_pinch.ConcatTransform(GetTransformForEvent(new_event)); - - float combined_scale = - SkScalarToFloat(combined_scroll_pinch.matrix().get(0, 0)); - float combined_scroll_pinch_x = - SkScalarToFloat(combined_scroll_pinch.matrix().get(0, 3)); - float combined_scroll_pinch_y = - SkScalarToFloat(combined_scroll_pinch.matrix().get(1, 3)); - scroll_event->data.scroll_update.delta_x = - (combined_scroll_pinch_x + pinch_event->PositionInWidget().x()) / - combined_scale - - pinch_event->PositionInWidget().x(); - scroll_event->data.scroll_update.delta_y = - (combined_scroll_pinch_y + pinch_event->PositionInWidget().y()) / - combined_scale - - pinch_event->PositionInWidget().y(); - pinch_event->data.pinch_update.scale = combined_scale; - - return std::make_pair(std::move(scroll_event), std::move(pinch_event)); -} - -std::unique_ptr<blink::WebGestureEvent> -WebGestureEvent::GenerateInjectedScrollGesture( - WebInputEvent::Type type, - base::TimeTicks timestamp, - WebGestureDevice device, - gfx::PointF position_in_widget, - gfx::Vector2dF scroll_delta, - ui::ScrollGranularity granularity) { - std::unique_ptr<WebGestureEvent> generated_gesture_event = - std::make_unique<WebGestureEvent>(type, WebInputEvent::kNoModifiers, - timestamp, device); - DCHECK(generated_gesture_event->IsGestureScroll()); - - if (type == WebInputEvent::Type::kGestureScrollBegin) { - // Gesture events expect the scroll delta to be flipped. Gesture events' - // scroll deltas are interpreted as the finger's delta in relation to the - // screen (which is the reverse of the scrolling direction). - generated_gesture_event->data.scroll_begin.delta_x_hint = -scroll_delta.x(); - generated_gesture_event->data.scroll_begin.delta_y_hint = -scroll_delta.y(); - generated_gesture_event->data.scroll_begin.inertial_phase = - WebGestureEvent::InertialPhaseState::kNonMomentum; - generated_gesture_event->data.scroll_begin.delta_hint_units = granularity; - } else if (type == WebInputEvent::Type::kGestureScrollUpdate) { - generated_gesture_event->data.scroll_update.delta_x = -scroll_delta.x(); - generated_gesture_event->data.scroll_update.delta_y = -scroll_delta.y(); - generated_gesture_event->data.scroll_update.inertial_phase = - WebGestureEvent::InertialPhaseState::kNonMomentum; - generated_gesture_event->data.scroll_update.delta_units = granularity; - } - - generated_gesture_event->SetPositionInWidget(position_in_widget); - return generated_gesture_event; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/input/web_input_event.cc b/chromium/src/third_party/blink/common/input/web_input_event.cc deleted file mode 100644 index d94f718..0000000 --- a/chromium/src/third_party/blink/common/input/web_input_event.cc +++ /dev/null
@@ -1,114 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/input/web_input_event.h" - -namespace blink { -namespace { -constexpr int kButtonModifiers = - WebInputEvent::kLeftButtonDown | WebInputEvent::kMiddleButtonDown | - WebInputEvent::kRightButtonDown | WebInputEvent::kBackButtonDown | - WebInputEvent::kForwardButtonDown; -} - -base::Optional<ui::ScrollInputType> WebInputEvent::GetScrollInputType() const { - return base::nullopt; -} - -WebInputEvent::DispatchType WebInputEvent::MergeDispatchTypes( - DispatchType type_1, - DispatchType type_2) { - static_assert(DispatchType::kBlocking < DispatchType::kEventNonBlocking, - "Enum not ordered correctly"); - static_assert(DispatchType::kEventNonBlocking < - DispatchType::kListenersNonBlockingPassive, - "Enum not ordered correctly"); - static_assert(DispatchType::kListenersNonBlockingPassive < - DispatchType::kListenersForcedNonBlockingDueToFling, - "Enum not ordered correctly"); - return std::min(type_1, type_2); -} - -ui::EventType WebInputEvent::GetTypeAsUiEventType() const { - switch (type_) { - case WebInputEvent::Type::kMouseDown: - return ui::EventType::ET_MOUSE_PRESSED; - case WebInputEvent::Type::kMouseUp: - return ui::EventType::ET_MOUSE_RELEASED; - case WebInputEvent::Type::kMouseMove: - return modifiers_ & kButtonModifiers ? ui::EventType::ET_MOUSE_DRAGGED - : ui::EventType::ET_MOUSE_MOVED; - case WebInputEvent::Type::kMouseEnter: - return ui::EventType::ET_MOUSE_ENTERED; - case WebInputEvent::Type::kMouseLeave: - return ui::EventType::ET_MOUSE_EXITED; - case WebInputEvent::Type::kContextMenu: - return ui::EventType::ET_UNKNOWN; - case WebInputEvent::Type::kMouseWheel: - return ui::EventType::ET_MOUSEWHEEL; - case WebInputEvent::Type::kRawKeyDown: - return ui::EventType::ET_KEY_PRESSED; - case WebInputEvent::Type::kKeyDown: - return ui::EventType::ET_KEY_PRESSED; - case WebInputEvent::Type::kKeyUp: - return ui::EventType::ET_KEY_RELEASED; - case WebInputEvent::Type::kChar: - return ui::EventType::ET_KEY_PRESSED; - case WebInputEvent::Type::kGestureScrollBegin: - return ui::EventType::ET_GESTURE_SCROLL_BEGIN; - case WebInputEvent::Type::kGestureScrollEnd: - return ui::EventType::ET_GESTURE_SCROLL_END; - case WebInputEvent::Type::kGestureScrollUpdate: - return ui::EventType::ET_GESTURE_SCROLL_UPDATE; - case WebInputEvent::Type::kGestureFlingStart: - return ui::EventType::ET_SCROLL_FLING_START; - case WebInputEvent::Type::kGestureFlingCancel: - return ui::EventType::ET_SCROLL_FLING_CANCEL; - case WebInputEvent::Type::kGesturePinchBegin: - return ui::EventType::ET_GESTURE_PINCH_BEGIN; - case WebInputEvent::Type::kGesturePinchEnd: - return ui::EventType::ET_GESTURE_PINCH_END; - case WebInputEvent::Type::kGesturePinchUpdate: - return ui::EventType::ET_GESTURE_PINCH_UPDATE; - case WebInputEvent::Type::kGestureTapDown: - return ui::EventType::ET_GESTURE_TAP_DOWN; - case WebInputEvent::Type::kGestureShowPress: - return ui::EventType::ET_GESTURE_SHOW_PRESS; - case WebInputEvent::Type::kGestureTap: - return ui::EventType::ET_GESTURE_TAP; - case WebInputEvent::Type::kGestureTapCancel: - return ui::EventType::ET_GESTURE_TAP_CANCEL; - case WebInputEvent::Type::kGestureLongPress: - return ui::EventType::ET_GESTURE_LONG_PRESS; - case WebInputEvent::Type::kGestureLongTap: - return ui::EventType::ET_GESTURE_LONG_TAP; - case WebInputEvent::Type::kGestureTwoFingerTap: - return ui::EventType::ET_GESTURE_TWO_FINGER_TAP; - case WebInputEvent::Type::kGestureTapUnconfirmed: - return ui::EventType::ET_GESTURE_TAP_UNCONFIRMED; - case WebInputEvent::Type::kGestureDoubleTap: - return ui::EventType::ET_GESTURE_DOUBLE_TAP; - case WebInputEvent::Type::kTouchStart: - return ui::EventType::ET_TOUCH_PRESSED; - case WebInputEvent::Type::kTouchMove: - return ui::EventType::ET_TOUCH_MOVED; - case WebInputEvent::Type::kTouchEnd: - return ui::EventType::ET_TOUCH_RELEASED; - case WebInputEvent::Type::kTouchCancel: - return ui::EventType::ET_TOUCH_CANCELLED; - case WebInputEvent::Type::kTouchScrollStarted: - case WebInputEvent::Type::kPointerDown: - return ui::EventType::ET_TOUCH_PRESSED; - case WebInputEvent::Type::kPointerUp: - return ui::EventType::ET_TOUCH_RELEASED; - case WebInputEvent::Type::kPointerMove: - return ui::EventType::ET_TOUCH_MOVED; - case WebInputEvent::Type::kPointerCancel: - return ui::EventType::ET_TOUCH_CANCELLED; - default: - return ui::EventType::ET_UNKNOWN; - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/input/web_keyboard_event.cc b/chromium/src/third_party/blink/common/input/web_keyboard_event.cc deleted file mode 100644 index 3cd1fa7..0000000 --- a/chromium/src/third_party/blink/common/input/web_keyboard_event.cc +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/input/web_keyboard_event.h" - -namespace blink { - -std::unique_ptr<WebInputEvent> WebKeyboardEvent::Clone() const { - return std::make_unique<WebKeyboardEvent>(*this); -} - -bool WebKeyboardEvent::CanCoalesce(const WebInputEvent& event) const { - return false; -} - -void WebKeyboardEvent::Coalesce(const WebInputEvent& event) { - NOTREACHED(); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/OWNERS b/chromium/src/third_party/blink/common/loader/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/loader/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/loader/mime_sniffing_throttle.cc b/chromium/src/third_party/blink/common/loader/mime_sniffing_throttle.cc deleted file mode 100644 index 7bbb392..0000000 --- a/chromium/src/third_party/blink/common/loader/mime_sniffing_throttle.cc +++ /dev/null
@@ -1,76 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/loader/mime_sniffing_throttle.h" - -#include "base/threading/thread_task_runner_handle.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "net/base/mime_sniffer.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "third_party/blink/public/common/loader/mime_sniffing_url_loader.h" - -namespace blink { - -MimeSniffingThrottle::MimeSniffingThrottle( - scoped_refptr<base::SequencedTaskRunner> task_runner) - : task_runner_(std::move(task_runner)) { - DCHECK(task_runner_); -} - -MimeSniffingThrottle::~MimeSniffingThrottle() = default; - -void MimeSniffingThrottle::DetachFromCurrentSequence() { - // This should only happen when the throttle loader runs on its own sequenced - // task runner (so getting the current sequenced runner later should be - // fine). - task_runner_ = nullptr; -} - -void MimeSniffingThrottle::WillProcessResponse( - const GURL& response_url, - network::mojom::URLResponseHead* response_head, - bool* defer) { - // No need to do mime sniffing again. - if (response_head->did_mime_sniff) - return; - - bool blocked_sniffing_mime = false; - std::string content_type_options; - if (response_head->headers && - response_head->headers->GetNormalizedHeader("x-content-type-options", - &content_type_options)) { - blocked_sniffing_mime = - base::LowerCaseEqualsASCII(content_type_options, "nosniff"); - } - - if (!blocked_sniffing_mime && - net::ShouldSniffMimeType(response_url, response_head->mime_type)) { - // Pause the response until the mime type becomes ready. - *defer = true; - - mojo::PendingRemote<network::mojom::URLLoader> new_remote; - mojo::PendingReceiver<network::mojom::URLLoaderClient> new_receiver; - mojo::PendingRemote<network::mojom::URLLoader> source_loader; - mojo::PendingReceiver<network::mojom::URLLoaderClient> - source_client_receiver; - MimeSniffingURLLoader* mime_sniffing_loader; - std::tie(new_remote, new_receiver, mime_sniffing_loader) = - MimeSniffingURLLoader::CreateLoader( - weak_factory_.GetWeakPtr(), response_url, response_head->Clone(), - task_runner_ ? task_runner_ : base::ThreadTaskRunnerHandle::Get()); - delegate_->InterceptResponse(std::move(new_remote), std::move(new_receiver), - &source_loader, &source_client_receiver); - mime_sniffing_loader->Start(std::move(source_loader), - std::move(source_client_receiver)); - } -} - -void MimeSniffingThrottle::ResumeWithNewResponseHead( - network::mojom::URLResponseHeadPtr new_response_head) { - delegate_->UpdateDeferredResponseHead(std::move(new_response_head)); - delegate_->Resume(); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/mime_sniffing_url_loader.cc b/chromium/src/third_party/blink/common/loader/mime_sniffing_url_loader.cc deleted file mode 100644 index 4e71d72..0000000 --- a/chromium/src/third_party/blink/common/loader/mime_sniffing_url_loader.cc +++ /dev/null
@@ -1,376 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/loader/mime_sniffing_url_loader.h" - -#include "base/bind.h" -#include "base/memory/ptr_util.h" -#include "base/strings/string_piece.h" -#include "mojo/public/cpp/bindings/self_owned_receiver.h" -#include "net/base/mime_sniffer.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "third_party/blink/public/common/loader/mime_sniffing_throttle.h" - -namespace blink { - -// static -const char MimeSniffingURLLoader::kDefaultMimeType[] = "text/plain"; - -// static -std::tuple<mojo::PendingRemote<network::mojom::URLLoader>, - mojo::PendingReceiver<network::mojom::URLLoaderClient>, - MimeSniffingURLLoader*> -MimeSniffingURLLoader::CreateLoader( - base::WeakPtr<MimeSniffingThrottle> throttle, - const GURL& response_url, - network::mojom::URLResponseHeadPtr response_head, - scoped_refptr<base::SequencedTaskRunner> task_runner) { - mojo::PendingRemote<network::mojom::URLLoader> url_loader; - mojo::PendingRemote<network::mojom::URLLoaderClient> url_loader_client; - mojo::PendingReceiver<network::mojom::URLLoaderClient> - url_loader_client_receiver = - url_loader_client.InitWithNewPipeAndPassReceiver(); - - auto loader = base::WrapUnique(new MimeSniffingURLLoader( - std::move(throttle), response_url, std::move(response_head), - std::move(url_loader_client), std::move(task_runner))); - MimeSniffingURLLoader* loader_rawptr = loader.get(); - mojo::MakeSelfOwnedReceiver(std::move(loader), - url_loader.InitWithNewPipeAndPassReceiver()); - return std::make_tuple(std::move(url_loader), - std::move(url_loader_client_receiver), loader_rawptr); -} - -MimeSniffingURLLoader::MimeSniffingURLLoader( - base::WeakPtr<MimeSniffingThrottle> throttle, - const GURL& response_url, - network::mojom::URLResponseHeadPtr response_head, - mojo::PendingRemote<network::mojom::URLLoaderClient> - destination_url_loader_client, - scoped_refptr<base::SequencedTaskRunner> task_runner) - : throttle_(throttle), - destination_url_loader_client_(std::move(destination_url_loader_client)), - response_url_(response_url), - response_head_(std::move(response_head)), - task_runner_(task_runner), - body_consumer_watcher_(FROM_HERE, - mojo::SimpleWatcher::ArmingPolicy::MANUAL, - task_runner), - body_producer_watcher_(FROM_HERE, - mojo::SimpleWatcher::ArmingPolicy::MANUAL, - std::move(task_runner)) {} - -MimeSniffingURLLoader::~MimeSniffingURLLoader() = default; - -void MimeSniffingURLLoader::Start( - mojo::PendingRemote<network::mojom::URLLoader> source_url_loader_remote, - mojo::PendingReceiver<network::mojom::URLLoaderClient> - source_url_client_receiver) { - source_url_loader_.Bind(std::move(source_url_loader_remote)); - source_url_client_receiver_.Bind(std::move(source_url_client_receiver), - task_runner_); -} - -void MimeSniffingURLLoader::OnReceiveResponse( - network::mojom::URLResponseHeadPtr response_head) { - // OnReceiveResponse() shouldn't be called because MimeSniffingURLLoader is - // created by MimeSniffingThrottle::WillProcessResponse(), which is equivalent - // to OnReceiveResponse(). - NOTREACHED(); -} - -void MimeSniffingURLLoader::OnReceiveRedirect( - const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr response_head) { - // OnReceiveRedirect() shouldn't be called because MimeSniffingURLLoader is - // created by MimeSniffingThrottle::WillProcessResponse(), which is equivalent - // to OnReceiveResponse(). - NOTREACHED(); -} - -void MimeSniffingURLLoader::OnUploadProgress( - int64_t current_position, - int64_t total_size, - OnUploadProgressCallback ack_callback) { - destination_url_loader_client_->OnUploadProgress(current_position, total_size, - std::move(ack_callback)); -} - -void MimeSniffingURLLoader::OnReceiveCachedMetadata(mojo_base::BigBuffer data) { - destination_url_loader_client_->OnReceiveCachedMetadata(std::move(data)); -} - -void MimeSniffingURLLoader::OnTransferSizeUpdated(int32_t transfer_size_diff) { - destination_url_loader_client_->OnTransferSizeUpdated(transfer_size_diff); -} - -void MimeSniffingURLLoader::OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) { - state_ = State::kSniffing; - body_consumer_handle_ = std::move(body); - body_consumer_watcher_.Watch( - body_consumer_handle_.get(), - MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, - base::BindRepeating(&MimeSniffingURLLoader::OnBodyReadable, - base::Unretained(this))); - body_consumer_watcher_.ArmOrNotify(); -} - -void MimeSniffingURLLoader::OnComplete( - const network::URLLoaderCompletionStatus& status) { - DCHECK(!complete_status_.has_value()); - switch (state_) { - case State::kWaitForBody: - // An error occured before receiving any data. - DCHECK_NE(net::OK, status.error_code); - state_ = State::kCompleted; - response_head_->mime_type = kDefaultMimeType; - if (!throttle_) { - Abort(); - return; - } - throttle_->ResumeWithNewResponseHead(std::move(response_head_)); - destination_url_loader_client_->OnComplete(status); - return; - case State::kSniffing: - case State::kSending: - // Defer calling OnComplete() until mime sniffing has finished and all - // data is sent. - complete_status_ = status; - return; - case State::kCompleted: - destination_url_loader_client_->OnComplete(status); - return; - case State::kAborted: - NOTREACHED(); - return; - } - NOTREACHED(); -} - -void MimeSniffingURLLoader::FollowRedirect( - const std::vector<std::string>& removed_headers, - const net::HttpRequestHeaders& modified_headers, - const net::HttpRequestHeaders& modified_cors_exempt_headers, - const base::Optional<GURL>& new_url) { - // MimeSniffingURLLoader starts handling the request after - // OnReceivedResponse(). A redirect response is not expected. - NOTREACHED(); -} - -void MimeSniffingURLLoader::SetPriority(net::RequestPriority priority, - int32_t intra_priority_value) { - if (state_ == State::kAborted) - return; - source_url_loader_->SetPriority(priority, intra_priority_value); -} - -void MimeSniffingURLLoader::PauseReadingBodyFromNet() { - if (state_ == State::kAborted) - return; - source_url_loader_->PauseReadingBodyFromNet(); -} - -void MimeSniffingURLLoader::ResumeReadingBodyFromNet() { - if (state_ == State::kAborted) - return; - source_url_loader_->ResumeReadingBodyFromNet(); -} - -void MimeSniffingURLLoader::OnBodyReadable(MojoResult) { - if (state_ == State::kSending) { - // The pipe becoming readable when kSending means all buffered body has - // already been sent. - ForwardBodyToClient(); - return; - } - DCHECK_EQ(State::kSniffing, state_); - - size_t start_size = buffered_body_.size(); - uint32_t read_bytes = net::kMaxBytesToSniff; - buffered_body_.resize(start_size + read_bytes); - MojoResult result = - body_consumer_handle_->ReadData(buffered_body_.data() + start_size, - &read_bytes, MOJO_READ_DATA_FLAG_NONE); - switch (result) { - case MOJO_RESULT_OK: - break; - case MOJO_RESULT_FAILED_PRECONDITION: - // Finished the body before mime type is completely decided. - buffered_body_.resize(start_size); - CompleteSniffing(); - return; - case MOJO_RESULT_SHOULD_WAIT: - body_consumer_watcher_.ArmOrNotify(); - return; - default: - NOTREACHED(); - return; - } - - DCHECK_EQ(MOJO_RESULT_OK, result); - buffered_body_.resize(start_size + read_bytes); - std::string new_type; - bool made_final_decision = net::SniffMimeType( - base::StringPiece(buffered_body_.data(), buffered_body_.size()), - response_url_, response_head_->mime_type, - net::ForceSniffFileUrlsForHtml::kDisabled, &new_type); - response_head_->mime_type = new_type; - response_head_->did_mime_sniff = true; - if (made_final_decision) { - CompleteSniffing(); - return; - } - body_consumer_watcher_.ArmOrNotify(); -} - -void MimeSniffingURLLoader::OnBodyWritable(MojoResult) { - DCHECK_EQ(State::kSending, state_); - if (bytes_remaining_in_buffer_ > 0) { - SendReceivedBodyToClient(); - } else { - ForwardBodyToClient(); - } -} - -void MimeSniffingURLLoader::CompleteSniffing() { - DCHECK_EQ(State::kSniffing, state_); - if (buffered_body_.empty()) { - // The URLLoader ended before sending any data. There is not enough - // information to determine the MIME type. - response_head_->mime_type = kDefaultMimeType; - } - - state_ = State::kSending; - bytes_remaining_in_buffer_ = buffered_body_.size(); - if (!throttle_) { - Abort(); - return; - } - throttle_->ResumeWithNewResponseHead(std::move(response_head_)); - mojo::ScopedDataPipeConsumerHandle body_to_send; - MojoResult result = - mojo::CreateDataPipe(nullptr, body_producer_handle_, body_to_send); - if (result != MOJO_RESULT_OK) { - Abort(); - return; - } - // Set up the watcher for the producer handle. - body_producer_watcher_.Watch( - body_producer_handle_.get(), - MOJO_HANDLE_SIGNAL_WRITABLE | MOJO_HANDLE_SIGNAL_PEER_CLOSED, - base::BindRepeating(&MimeSniffingURLLoader::OnBodyWritable, - base::Unretained(this))); - - // Send deferred message. - destination_url_loader_client_->OnStartLoadingResponseBody( - std::move(body_to_send)); - - if (bytes_remaining_in_buffer_) { - SendReceivedBodyToClient(); - return; - } - - CompleteSending(); -} - -void MimeSniffingURLLoader::CompleteSending() { - DCHECK_EQ(State::kSending, state_); - state_ = State::kCompleted; - // Call client's OnComplete() if |this|'s OnComplete() has already been - // called. - if (complete_status_.has_value()) - destination_url_loader_client_->OnComplete(complete_status_.value()); - - body_consumer_watcher_.Cancel(); - body_producer_watcher_.Cancel(); - body_consumer_handle_.reset(); - body_producer_handle_.reset(); -} - -void MimeSniffingURLLoader::SendReceivedBodyToClient() { - DCHECK_EQ(State::kSending, state_); - // Send the buffered data first. - DCHECK_GT(bytes_remaining_in_buffer_, 0u); - size_t start_position = buffered_body_.size() - bytes_remaining_in_buffer_; - uint32_t bytes_sent = bytes_remaining_in_buffer_; - MojoResult result = - body_producer_handle_->WriteData(buffered_body_.data() + start_position, - &bytes_sent, MOJO_WRITE_DATA_FLAG_NONE); - switch (result) { - case MOJO_RESULT_OK: - break; - case MOJO_RESULT_FAILED_PRECONDITION: - // The pipe is closed unexpectedly. |this| should be deleted once - // URLLoader on the destination is released. - Abort(); - return; - case MOJO_RESULT_SHOULD_WAIT: - body_producer_watcher_.ArmOrNotify(); - return; - default: - NOTREACHED(); - return; - } - bytes_remaining_in_buffer_ -= bytes_sent; - body_producer_watcher_.ArmOrNotify(); -} - -void MimeSniffingURLLoader::ForwardBodyToClient() { - DCHECK_EQ(0u, bytes_remaining_in_buffer_); - // Send the body from the consumer to the producer. - const void* buffer; - uint32_t buffer_size = 0; - MojoResult result = body_consumer_handle_->BeginReadData( - &buffer, &buffer_size, MOJO_BEGIN_READ_DATA_FLAG_NONE); - switch (result) { - case MOJO_RESULT_OK: - break; - case MOJO_RESULT_SHOULD_WAIT: - body_consumer_watcher_.ArmOrNotify(); - return; - case MOJO_RESULT_FAILED_PRECONDITION: - // All data has been sent. - CompleteSending(); - return; - default: - NOTREACHED(); - return; - } - - result = body_producer_handle_->WriteData(buffer, &buffer_size, - MOJO_WRITE_DATA_FLAG_NONE); - switch (result) { - case MOJO_RESULT_OK: - break; - case MOJO_RESULT_FAILED_PRECONDITION: - // The pipe is closed unexpectedly. |this| should be deleted once - // URLLoader on the destination is released. - Abort(); - return; - case MOJO_RESULT_SHOULD_WAIT: - body_consumer_handle_->EndReadData(0); - body_producer_watcher_.ArmOrNotify(); - return; - default: - NOTREACHED(); - return; - } - - body_consumer_handle_->EndReadData(buffer_size); - body_consumer_watcher_.ArmOrNotify(); -} - -void MimeSniffingURLLoader::Abort() { - state_ = State::kAborted; - body_consumer_watcher_.Cancel(); - body_producer_watcher_.Cancel(); - source_url_loader_.reset(); - source_url_client_receiver_.reset(); - destination_url_loader_client_.reset(); - // |this| should be removed since the owner will destroy |this| or the owner - // has already been destroyed by some reason. -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/network_utils.cc b/chromium/src/third_party/blink/common/loader/network_utils.cc deleted file mode 100644 index fcc8d6c..0000000 --- a/chromium/src/third_party/blink/common/loader/network_utils.cc +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/loader/network_utils.h" - -#include "base/feature_list.h" -#include "build/build_config.h" -#include "net/net_buildflags.h" -#include "services/network/public/cpp/is_potentially_trustworthy.h" -#include "third_party/blink/public/common/features.h" -#include "url/url_constants.h" - -namespace blink { -namespace network_utils { - -bool AlwaysAccessNetwork( - const scoped_refptr<net::HttpResponseHeaders>& headers) { - if (!headers) - return false; - - // RFC 2616, section 14.9. - return headers->HasHeaderValue("cache-control", "no-cache") || - headers->HasHeaderValue("cache-control", "no-store") || - headers->HasHeaderValue("pragma", "no-cache") || - headers->HasHeaderValue("vary", "*"); -} - -bool IsURLHandledByNetworkService(const GURL& url) { - if (url.SchemeIsHTTPOrHTTPS() || url.SchemeIsWSOrWSS()) - return true; -#if !BUILDFLAG(DISABLE_FTP_SUPPORT) - if (url.SchemeIs(url::kFtpScheme) && - base::FeatureList::IsEnabled(features::kFtpProtocol)) - return true; -#endif - return false; -} - -} // namespace network_utils -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/record_load_histograms.cc b/chromium/src/third_party/blink/common/loader/record_load_histograms.cc deleted file mode 100644 index 2823576..0000000 --- a/chromium/src/third_party/blink/common/loader/record_load_histograms.cc +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2018 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 "third_party/blink/public/common/loader/record_load_histograms.h" - -#include "base/metrics/histogram_functions.h" -#include "base/metrics/histogram_macros.h" -#include "base/strings/string_piece.h" -#include "net/base/net_errors.h" -#include "net/base/url_util.h" -#include "url/gurl.h" - -namespace blink { - -void RecordLoadHistograms(const url::Origin& origin, - network::mojom::RequestDestination destination, - int net_error) { - // Requests shouldn't complete with net::ERR_IO_PENDING. - DCHECK_NE(net::ERR_IO_PENDING, net_error); - - if (destination == network::mojom::RequestDestination::kDocument) { - base::UmaHistogramSparse("Net.ErrorCodesForMainFrame4", -net_error); - if (GURL::SchemeIsCryptographic(origin.scheme())) { - if (origin.host() == "www.google.com") { - base::UmaHistogramSparse("Net.ErrorCodesForHTTPSGoogleMainFrame3", - -net_error); - } - - if (net::IsTLS13ExperimentHost(origin.host())) { - base::UmaHistogramSparse("Net.ErrorCodesForTLS13ExperimentMainFrame2", - -net_error); - } - } - } else { - if (destination == network::mojom::RequestDestination::kImage) { - base::UmaHistogramSparse("Net.ErrorCodesForImages2", -net_error); - } - base::UmaHistogramSparse("Net.ErrorCodesForSubresources3", -net_error); - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/throttling_url_loader.cc b/chromium/src/third_party/blink/common/loader/throttling_url_loader.cc deleted file mode 100644 index 07eca9c..0000000 --- a/chromium/src/third_party/blink/common/loader/throttling_url_loader.cc +++ /dev/null
@@ -1,1063 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/loader/throttling_url_loader.h" - -#include "base/bind.h" -#include "base/metrics/histogram_functions.h" -#include "base/single_thread_task_runner.h" -#include "base/strings/stringprintf.h" -#include "base/threading/thread_task_runner_handle.h" -#include "base/trace_event/trace_event.h" -#include "net/http/http_status_code.h" -#include "net/http/http_util.h" -#include "net/url_request/redirect_info.h" -#include "net/url_request/redirect_util.h" -#include "services/network/public/cpp/cors/cors.h" -#include "services/network/public/cpp/features.h" -#include "services/network/public/mojom/url_response_head.mojom.h" - -namespace blink { - -namespace { - -// Merges |removed_headers_B| into |removed_headers_A|. -void MergeRemovedHeaders(std::vector<std::string>* removed_headers_A, - const std::vector<std::string>& removed_headers_B) { - for (auto& header : removed_headers_B) { - if (!base::Contains(*removed_headers_A, header)) - removed_headers_A->emplace_back(std::move(header)); - } -} - -#if DCHECK_IS_ON() -void CheckThrottleWillNotCauseCorsPreflight( - const std::set<std::string>& initial_headers, - const std::set<std::string>& initial_cors_exempt_headers, - const net::HttpRequestHeaders& headers, - const net::HttpRequestHeaders& cors_exempt_headers, - const std::vector<std::string> cors_exempt_header_list) { - base::flat_set<std::string> cors_exempt_header_flat_set( - cors_exempt_header_list); - for (auto& header : headers.GetHeaderVector()) { - if (initial_headers.find(header.key) == initial_headers.end() && - !network::cors::IsCorsSafelistedHeader(header.key, header.value)) { - bool is_cors_exempt = cors_exempt_header_flat_set.count(header.key); - NOTREACHED() - << "Throttle added cors unsafe header " << header.key - << (is_cors_exempt - ? " . Header is cors exempt so should have " - "been added to RequestHeaders::cors_exempt_headers " - "instead of " - "of RequestHeaders::cors_exempt_headers." - : ""); - } - } - - for (auto& header : cors_exempt_headers.GetHeaderVector()) { - if (cors_exempt_header_flat_set.count(header.key) == 0 && - initial_cors_exempt_headers.find(header.key) == - initial_cors_exempt_headers.end()) { - NOTREACHED() - << "Throttle added cors exempt header " << header.key - << " but it wasn't configured as cors exempt by the browser. See " - "content::StoragePartitionImpl::InitNetworkContext() and " - "content::ContentBrowserClient::ConfigureNetworkContextParams()."; - } - } -} -#endif - -void RecordHistogram(const std::string& stage, - base::Time start, - const std::string& metric_type) { - base::TimeDelta delta = base::Time::Now() - start; - base::UmaHistogramTimes( - base::StrCat({"Net.URLLoaderThrottle", metric_type, ".", stage}), delta); -} - -void RecordDeferTimeHistogram(const std::string& stage, base::Time start) { - RecordHistogram(stage, start, "DeferTime"); -} - -void RecordExecutionTimeHistogram(const std::string& stage, base::Time start) { - RecordHistogram(stage, start, "ExecutionTime"); -} - -} // namespace - -const char ThrottlingURLLoader::kFollowRedirectReason[] = "FollowRedirect"; - -class ThrottlingURLLoader::ForwardingThrottleDelegate - : public URLLoaderThrottle::Delegate { - public: - ForwardingThrottleDelegate(ThrottlingURLLoader* loader, - URLLoaderThrottle* throttle) - : loader_(loader), throttle_(throttle) {} - ~ForwardingThrottleDelegate() override = default; - - // URLLoaderThrottle::Delegate: - void CancelWithError(int error_code, - base::StringPiece custom_reason) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->CancelWithError(error_code, custom_reason); - } - - void Resume() override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->StopDeferringForThrottle(throttle_); - } - - void SetPriority(net::RequestPriority priority) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->SetPriority(priority); - } - - void UpdateDeferredRequestHeaders( - const net::HttpRequestHeaders& modified_request_headers, - const net::HttpRequestHeaders& modified_cors_exempt_request_headers) - override { - if (!loader_) - return; - ScopedDelegateCall scoped_delegate_call(this); - loader_->UpdateDeferredRequestHeaders(modified_request_headers, - modified_cors_exempt_request_headers); - } - - void UpdateDeferredResponseHead( - network::mojom::URLResponseHeadPtr new_response_head) override { - if (!loader_) - return; - ScopedDelegateCall scoped_delegate_call(this); - loader_->UpdateDeferredResponseHead(std::move(new_response_head)); - } - - void PauseReadingBodyFromNet() override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->PauseReadingBodyFromNet(throttle_); - } - - void ResumeReadingBodyFromNet() override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->ResumeReadingBodyFromNet(throttle_); - } - - void InterceptResponse( - mojo::PendingRemote<network::mojom::URLLoader> new_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient> - new_client_receiver, - mojo::PendingRemote<network::mojom::URLLoader>* original_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient>* - original_client_receiver) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->InterceptResponse(std::move(new_loader), - std::move(new_client_receiver), original_loader, - original_client_receiver); - } - - void RestartWithFlags(int additional_load_flags) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->RestartWithFlags(additional_load_flags); - } - - void RestartWithURLResetAndFlags(int additional_load_flags) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->RestartWithURLResetAndFlags(additional_load_flags); - } - - void RestartWithURLResetAndFlagsNow(int additional_load_flags) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->RestartWithURLResetAndFlagsNow(additional_load_flags); - } - - void RestartWithModifiedHeadersNow( - const net::HttpRequestHeaders& modified_headers) override { - if (!loader_) - return; - - ScopedDelegateCall scoped_delegate_call(this); - loader_->RestartWithModifiedHeadersNow(modified_headers); - } - - void Detach() { loader_ = nullptr; } - - private: - // This class helps ThrottlingURLLoader to keep track of whether it is being - // called by its throttles. - // If ThrottlingURLLoader is destoyed while any of the throttles is calling - // into it, it delays destruction of the throttles. That way throttles don't - // need to worry about any delegate calls may destory them synchronously. - class ScopedDelegateCall { - public: - explicit ScopedDelegateCall(ForwardingThrottleDelegate* owner) - : owner_(owner) { - DCHECK(owner_->loader_); - - owner_->loader_->inside_delegate_calls_++; - } - - ~ScopedDelegateCall() { - // The loader may have been detached and destroyed. - if (owner_->loader_) - owner_->loader_->inside_delegate_calls_--; - } - - private: - ForwardingThrottleDelegate* const owner_; - DISALLOW_COPY_AND_ASSIGN(ScopedDelegateCall); - }; - - ThrottlingURLLoader* loader_; - URLLoaderThrottle* const throttle_; - - DISALLOW_COPY_AND_ASSIGN(ForwardingThrottleDelegate); -}; - -ThrottlingURLLoader::StartInfo::StartInfo( - scoped_refptr<network::SharedURLLoaderFactory> in_url_loader_factory, - int32_t in_routing_id, - int32_t in_request_id, - uint32_t in_options, - network::ResourceRequest* in_url_request, - scoped_refptr<base::SingleThreadTaskRunner> in_task_runner, - base::Optional<std::vector<std::string>> in_cors_exempt_header_list) - : url_loader_factory(std::move(in_url_loader_factory)), - routing_id(in_routing_id), - request_id(in_request_id), - options(in_options), - url_request(*in_url_request), - task_runner(std::move(in_task_runner)) { - cors_exempt_header_list = std::move(in_cors_exempt_header_list); -} - -ThrottlingURLLoader::StartInfo::~StartInfo() = default; - -ThrottlingURLLoader::ResponseInfo::ResponseInfo( - network::mojom::URLResponseHeadPtr in_response_head) - : response_head(std::move(in_response_head)) {} - -ThrottlingURLLoader::ResponseInfo::~ResponseInfo() = default; - -ThrottlingURLLoader::RedirectInfo::RedirectInfo( - const net::RedirectInfo& in_redirect_info, - network::mojom::URLResponseHeadPtr in_response_head) - : redirect_info(in_redirect_info), - response_head(std::move(in_response_head)) {} - -ThrottlingURLLoader::RedirectInfo::~RedirectInfo() = default; - -ThrottlingURLLoader::PriorityInfo::PriorityInfo( - net::RequestPriority in_priority, - int32_t in_intra_priority_value) - : priority(in_priority), intra_priority_value(in_intra_priority_value) {} - -// static -std::unique_ptr<ThrottlingURLLoader> ThrottlingURLLoader::CreateLoaderAndStart( - scoped_refptr<network::SharedURLLoaderFactory> factory, - std::vector<std::unique_ptr<URLLoaderThrottle>> throttles, - int32_t routing_id, - int32_t request_id, - uint32_t options, - network::ResourceRequest* url_request, - network::mojom::URLLoaderClient* client, - const net::NetworkTrafficAnnotationTag& traffic_annotation, - scoped_refptr<base::SingleThreadTaskRunner> task_runner, - base::Optional<std::vector<std::string>> cors_exempt_header_list) { - DCHECK(url_request); - std::unique_ptr<ThrottlingURLLoader> loader(new ThrottlingURLLoader( - std::move(throttles), client, traffic_annotation)); - loader->Start(std::move(factory), routing_id, request_id, options, - url_request, std::move(task_runner), - std::move(cors_exempt_header_list)); - return loader; -} - -ThrottlingURLLoader::~ThrottlingURLLoader() { - if (inside_delegate_calls_ > 0) { - // A throttle is calling into this object. In this case, delay destruction - // of the throttles, so that throttles don't need to worry about any - // delegate calls may destroy them synchronously. - for (auto& entry : throttles_) - entry.delegate->Detach(); - - auto throttles = - std::make_unique<std::vector<ThrottleEntry>>(std::move(throttles_)); - base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, - std::move(throttles)); - } -} - -void ThrottlingURLLoader::FollowRedirectForcingRestart() { - ResetForFollowRedirect(); - client_receiver_.reset(); - CHECK(throttle_will_redirect_redirect_url_.is_empty()); - - for (const std::string& header : removed_headers_) { - start_info_->url_request.headers.RemoveHeader(header); - start_info_->url_request.cors_exempt_headers.RemoveHeader(header); - } - start_info_->url_request.headers.MergeFrom(modified_headers_); - start_info_->url_request.cors_exempt_headers.MergeFrom( - modified_cors_exempt_headers_); - - removed_headers_.clear(); - modified_headers_.Clear(); - modified_cors_exempt_headers_.Clear(); - - StartNow(); -} - -void ThrottlingURLLoader::ResetForFollowRedirect() { - url_loader_.ResetWithReason( - network::mojom::URLLoader::kClientDisconnectReason, - kFollowRedirectReason); -} - -void ThrottlingURLLoader::RestartWithFactory( - scoped_refptr<network::SharedURLLoaderFactory> factory, - uint32_t url_loader_options) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - url_loader_.reset(); - client_receiver_.reset(); - start_info_->url_loader_factory = std::move(factory); - start_info_->options = url_loader_options; - StartNow(); -} - -void ThrottlingURLLoader::FollowRedirect( - const std::vector<std::string>& removed_headers, - const net::HttpRequestHeaders& modified_headers, - const net::HttpRequestHeaders& modified_cors_exempt_headers) { - MergeRemovedHeaders(&removed_headers_, removed_headers); - modified_headers_.MergeFrom(modified_headers); - modified_cors_exempt_headers_.MergeFrom(modified_cors_exempt_headers); - - if (!throttle_will_start_redirect_url_.is_empty()) { - throttle_will_start_redirect_url_ = GURL(); - // This is a synthesized redirect, so no need to tell the URLLoader. - StartNow(); - return; - } - - if (url_loader_) { - base::Optional<GURL> new_url; - if (!throttle_will_redirect_redirect_url_.is_empty()) - new_url = throttle_will_redirect_redirect_url_; - url_loader_->FollowRedirect(removed_headers_, modified_headers_, - modified_cors_exempt_headers_, new_url); - throttle_will_redirect_redirect_url_ = GURL(); - } - - removed_headers_.clear(); - modified_headers_.Clear(); - modified_cors_exempt_headers_.Clear(); -} - -void ThrottlingURLLoader::SetPriority(net::RequestPriority priority, - int32_t intra_priority_value) { - if (!url_loader_) { - if (!loader_completed_) { - // Only check |deferred_stage_| if this resource has not been redirected - // by a throttle. - if (throttle_will_start_redirect_url_.is_empty() && - throttle_will_redirect_redirect_url_.is_empty()) { - DCHECK_EQ(DEFERRED_START, deferred_stage_); - } - - priority_info_ = - std::make_unique<PriorityInfo>(priority, intra_priority_value); - } - return; - } - - url_loader_->SetPriority(priority, intra_priority_value); -} - -void ThrottlingURLLoader::PauseReadingBodyFromNet() { - PauseReadingBodyFromNet(/*throttle=*/nullptr); -} - -void ThrottlingURLLoader::ResumeReadingBodyFromNet() { - ResumeReadingBodyFromNet(/*throttle=*/nullptr); -} - -network::mojom::URLLoaderClientEndpointsPtr ThrottlingURLLoader::Unbind() { - return network::mojom::URLLoaderClientEndpoints::New( - url_loader_.Unbind(), client_receiver_.Unbind()); -} - -ThrottlingURLLoader::ThrottlingURLLoader( - std::vector<std::unique_ptr<URLLoaderThrottle>> throttles, - network::mojom::URLLoaderClient* client, - const net::NetworkTrafficAnnotationTag& traffic_annotation) - : forwarding_client_(client), traffic_annotation_(traffic_annotation) { - throttles_.reserve(throttles.size()); - for (auto& throttle : throttles) - throttles_.emplace_back(this, std::move(throttle)); -} - -void ThrottlingURLLoader::Start( - scoped_refptr<network::SharedURLLoaderFactory> factory, - int32_t routing_id, - int32_t request_id, - uint32_t options, - network::ResourceRequest* url_request, - scoped_refptr<base::SingleThreadTaskRunner> task_runner, - base::Optional<std::vector<std::string>> cors_exempt_header_list) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - - bool deferred = false; - DCHECK(deferring_throttles_.empty()); - if (!throttles_.empty()) { - original_url_ = url_request->url; - for (auto& entry : throttles_) { - auto* throttle = entry.throttle.get(); - bool throttle_deferred = false; - -#if DCHECK_IS_ON() - std::set<std::string> initial_headers, initial_cors_exempt_headers; - if (cors_exempt_header_list) { - for (auto& header : url_request->headers.GetHeaderVector()) - initial_headers.insert(header.key); - - for (auto& header : url_request->cors_exempt_headers.GetHeaderVector()) - initial_cors_exempt_headers.insert(header.key); - } -#endif - - base::Time start = base::Time::Now(); - throttle->WillStartRequest(url_request, &throttle_deferred); - RecordExecutionTimeHistogram(GetStageNameForHistogram(DEFERRED_START), - start); - -#if DCHECK_IS_ON() - if (cors_exempt_header_list) { - CheckThrottleWillNotCauseCorsPreflight( - initial_headers, initial_cors_exempt_headers, url_request->headers, - url_request->cors_exempt_headers, *cors_exempt_header_list); - } -#endif - - if (original_url_ != url_request->url) { - DCHECK(throttle_will_start_redirect_url_.is_empty()) - << "ThrottlingURLLoader doesn't support multiple throttles " - "changing the URL."; - if (original_url_.SchemeIsHTTPOrHTTPS() && - !url_request->url.SchemeIsHTTPOrHTTPS() && - !throttle->makes_unsafe_redirect()) { - NOTREACHED() << "A URLLoaderThrottle can't redirect from http(s) to " - << "a non http(s) scheme."; - } else { - throttle_will_start_redirect_url_ = url_request->url; - } - // Restore the original URL so that all throttles see the same original - // URL. - url_request->url = original_url_; - } - if (!HandleThrottleResult(throttle, throttle_deferred, &deferred)) - return; - } - } - - start_info_ = std::make_unique<StartInfo>( - factory, routing_id, request_id, options, url_request, - std::move(task_runner), std::move(cors_exempt_header_list)); - if (deferred) - deferred_stage_ = DEFERRED_START; - else - StartNow(); -} - -void ThrottlingURLLoader::StartNow() { - DCHECK(start_info_); - if (throttle_will_start_original_url_) { - throttle_will_start_redirect_url_ = original_url_; - throttle_will_start_original_url_ = false; - } - if (!throttle_will_start_redirect_url_.is_empty()) { - auto first_party_url_policy = - start_info_->url_request.update_first_party_url_on_redirect - ? net::RedirectInfo::FirstPartyURLPolicy::UPDATE_URL_ON_REDIRECT - : net::RedirectInfo::FirstPartyURLPolicy::NEVER_CHANGE_URL; - - net::RedirectInfo redirect_info = net::RedirectInfo::ComputeRedirectInfo( - start_info_->url_request.method, start_info_->url_request.url, - start_info_->url_request.site_for_cookies, first_party_url_policy, - start_info_->url_request.referrer_policy, - start_info_->url_request.referrer.spec(), - // Use status code 307 to preserve the method, so POST requests work. - net::HTTP_TEMPORARY_REDIRECT, throttle_will_start_redirect_url_, - base::nullopt, false, false, false); - - bool should_clear_upload = false; - net::RedirectUtil::UpdateHttpRequest( - start_info_->url_request.url, start_info_->url_request.method, - redirect_info, base::nullopt, base::nullopt, - &start_info_->url_request.headers, &should_clear_upload); - - if (should_clear_upload) - start_info_->url_request.request_body = nullptr; - - // Set the new URL in the ResourceRequest struct so that it is the URL - // that's requested. - start_info_->url_request.url = throttle_will_start_redirect_url_; - - auto response_head = network::mojom::URLResponseHead::New(); - std::string header_string = base::StringPrintf( - "HTTP/1.1 %i Internal Redirect\n" - "Location: %s", - net::HTTP_TEMPORARY_REDIRECT, - throttle_will_start_redirect_url_.spec().c_str()); - - response_head->headers = base::MakeRefCounted<net::HttpResponseHeaders>( - net::HttpUtil::AssembleRawHeaders(header_string)); - response_head->encoded_data_length = header_string.size(); - start_info_->task_runner->PostTask( - FROM_HERE, - base::BindOnce(&ThrottlingURLLoader::OnReceiveRedirect, - weak_factory_.GetWeakPtr(), std::move(redirect_info), - std::move(response_head))); - return; - } - - DCHECK(start_info_->url_loader_factory); - start_info_->url_loader_factory->CreateLoaderAndStart( - url_loader_.BindNewPipeAndPassReceiver(start_info_->task_runner), - start_info_->routing_id, start_info_->request_id, start_info_->options, - start_info_->url_request, - client_receiver_.BindNewPipeAndPassRemote(start_info_->task_runner), - net::MutableNetworkTrafficAnnotationTag(traffic_annotation_)); - - // TODO(https://crbug.com/919736): Remove this call. - client_receiver_.internal_state()->EnableBatchDispatch(); - - client_receiver_.set_disconnect_handler(base::BindOnce( - &ThrottlingURLLoader::OnClientConnectionError, base::Unretained(this))); - - if (!pausing_reading_body_from_net_throttles_.empty()) - url_loader_->PauseReadingBodyFromNet(); - - if (priority_info_) { - auto priority_info = std::move(priority_info_); - url_loader_->SetPriority(priority_info->priority, - priority_info->intra_priority_value); - } - - // Initialize with the request URL, may be updated when on redirects - response_url_ = start_info_->url_request.url; -} - -void ThrottlingURLLoader::RestartWithFlagsNow() { - DCHECK(has_pending_restart_); - url_loader_.reset(); - client_receiver_.reset(); - start_info_->url_request.load_flags |= pending_restart_flags_; - has_pending_restart_ = false; - pending_restart_flags_ = 0; - StartNow(); -} - -bool ThrottlingURLLoader::HandleThrottleResult(URLLoaderThrottle* throttle, - bool throttle_deferred, - bool* should_defer) { - DCHECK(!deferring_throttles_.count(throttle)); - if (loader_completed_) - return false; - *should_defer |= throttle_deferred; - if (throttle_deferred) - deferring_throttles_.insert({throttle, base::Time::Now()}); - return true; -} - -void ThrottlingURLLoader::StopDeferringForThrottle( - URLLoaderThrottle* throttle) { - auto iter = deferring_throttles_.find(throttle); - if (iter == deferring_throttles_.end()) - return; - - if (deferred_stage_ != DEFERRED_NONE) { - RecordDeferTimeHistogram(GetStageNameForHistogram(deferred_stage_), - iter->second); - } - deferring_throttles_.erase(iter); - if (deferring_throttles_.empty() && !loader_completed_) - Resume(); -} - -void ThrottlingURLLoader::RestartWithFlags(int additional_load_flags) { - pending_restart_flags_ |= additional_load_flags; - has_pending_restart_ = true; -} - -void ThrottlingURLLoader::RestartWithURLResetAndFlags( - int additional_load_flags) { - pending_restart_flags_ |= additional_load_flags; - throttle_will_start_original_url_ = true; - has_pending_restart_ = true; -} - -void ThrottlingURLLoader::RestartWithURLResetAndFlagsNow( - int additional_load_flags) { - RestartWithURLResetAndFlags(additional_load_flags); - if (!did_receive_response_) - RestartWithFlagsNow(); -} - -void ThrottlingURLLoader::RestartWithModifiedHeadersNow( - const net::HttpRequestHeaders& modified_headers) { - modified_headers_.MergeFrom(modified_headers); - // While not actually redirecting, the mechanism here is very similar to an - // internal redirect to the same url. - FollowRedirectForcingRestart(); -} - -void ThrottlingURLLoader::OnReceiveResponse( - network::mojom::URLResponseHeadPtr response_head) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - DCHECK(deferring_throttles_.empty()); - TRACE_EVENT1("loading", "ThrottlingURLLoader::OnReceiveResponse", "url", - response_url_.possibly_invalid_spec()); - did_receive_response_ = true; - - // Dispatch BeforeWillProcessResponse(). - if (!throttles_.empty()) { - pending_restart_flags_ = 0; - has_pending_restart_ = false; - bool deferred = false; - for (auto& entry : throttles_) { - auto* throttle = entry.throttle.get(); - bool throttle_deferred = false; - base::Time start = base::Time::Now(); - throttle->BeforeWillProcessResponse(response_url_, *response_head, - &throttle_deferred); - RecordExecutionTimeHistogram( - GetStageNameForHistogram(DEFERRED_BEFORE_RESPONSE), start); - if (!HandleThrottleResult(throttle, throttle_deferred, &deferred)) - return; - } - - if (deferred) { - deferred_stage_ = DEFERRED_BEFORE_RESPONSE; - client_receiver_.Pause(); - return; - } - - if (has_pending_restart_) { - RestartWithFlagsNow(); - return; - } - } - - // Dispatch WillProcessResponse(). - if (!throttles_.empty()) { - bool deferred = false; - for (auto& entry : throttles_) { - auto* throttle = entry.throttle.get(); - bool throttle_deferred = false; - base::Time start = base::Time::Now(); - throttle->WillProcessResponse(response_url_, response_head.get(), - &throttle_deferred); - RecordExecutionTimeHistogram(GetStageNameForHistogram(DEFERRED_RESPONSE), - start); - if (!HandleThrottleResult(throttle, throttle_deferred, &deferred)) - return; - } - - if (deferred) { - deferred_stage_ = DEFERRED_RESPONSE; - response_info_ = std::make_unique<ResponseInfo>(std::move(response_head)); - client_receiver_.Pause(); - return; - } - } - - forwarding_client_->OnReceiveResponse(std::move(response_head)); -} - -void ThrottlingURLLoader::OnReceiveRedirect( - const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr response_head) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - DCHECK(deferring_throttles_.empty()); - - if (!throttles_.empty()) { - bool deferred = false; - for (auto& entry : throttles_) { - auto* throttle = entry.throttle.get(); - bool throttle_deferred = false; - auto weak_ptr = weak_factory_.GetWeakPtr(); - std::vector<std::string> removed_headers; - net::HttpRequestHeaders modified_headers; - net::HttpRequestHeaders modified_cors_exempt_headers; - net::RedirectInfo redirect_info_copy = redirect_info; - base::Time start = base::Time::Now(); - throttle->WillRedirectRequest( - &redirect_info_copy, *response_head, &throttle_deferred, - &removed_headers, &modified_headers, &modified_cors_exempt_headers); - - if (!weak_ptr) - return; - - RecordExecutionTimeHistogram(GetStageNameForHistogram(DEFERRED_REDIRECT), - start); -#if DCHECK_IS_ON() - if (start_info_->cors_exempt_header_list) { - CheckThrottleWillNotCauseCorsPreflight( - std::set<std::string>(), std::set<std::string>(), modified_headers, - modified_cors_exempt_headers, - *start_info_->cors_exempt_header_list); - } -#endif - - if (redirect_info_copy.new_url != redirect_info.new_url) { - DCHECK(throttle_will_redirect_redirect_url_.is_empty()) - << "ThrottlingURLLoader doesn't support multiple throttles " - "changing the URL."; - throttle_will_redirect_redirect_url_ = redirect_info_copy.new_url; - } - - if (!HandleThrottleResult(throttle, throttle_deferred, &deferred)) - return; - - MergeRemovedHeaders(&removed_headers_, removed_headers); - modified_headers_.MergeFrom(modified_headers); - modified_cors_exempt_headers_.MergeFrom(modified_cors_exempt_headers); - } - - if (deferred) { - deferred_stage_ = DEFERRED_REDIRECT; - redirect_info_ = std::make_unique<RedirectInfo>(redirect_info, - std::move(response_head)); - // |client_receiver_| can be unbound if the redirect came from a - // throttle. - if (client_receiver_.is_bound()) - client_receiver_.Pause(); - return; - } - } - - // Update the request in case |FollowRedirectForcingRestart()| is called, and - // needs to use the request updated for the redirect. - network::ResourceRequest& request = start_info_->url_request; - request.url = redirect_info.new_url; - request.method = redirect_info.new_method; - request.site_for_cookies = redirect_info.new_site_for_cookies; - request.referrer = GURL(redirect_info.new_referrer); - request.referrer_policy = redirect_info.new_referrer_policy; - - // TODO(dhausknecht) at this point we do not actually know if we commit to the - // redirect or if it will be cancelled. FollowRedirect would be a more - // suitable place to set this URL but there we do not have the data. - response_url_ = redirect_info.new_url; - forwarding_client_->OnReceiveRedirect(redirect_info, - std::move(response_head)); -} - -void ThrottlingURLLoader::OnUploadProgress( - int64_t current_position, - int64_t total_size, - OnUploadProgressCallback ack_callback) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - - forwarding_client_->OnUploadProgress(current_position, total_size, - std::move(ack_callback)); -} - -void ThrottlingURLLoader::OnReceiveCachedMetadata(mojo_base::BigBuffer data) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - - forwarding_client_->OnReceiveCachedMetadata(std::move(data)); -} - -void ThrottlingURLLoader::OnTransferSizeUpdated(int32_t transfer_size_diff) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - - forwarding_client_->OnTransferSizeUpdated(transfer_size_diff); -} - -void ThrottlingURLLoader::OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - TRACE_EVENT1("loading", "ThrottlingURLLoader::OnStartLoadingResponseBody", - "url", response_url_.possibly_invalid_spec()); - - forwarding_client_->OnStartLoadingResponseBody(std::move(body)); -} - -void ThrottlingURLLoader::OnComplete( - const network::URLLoaderCompletionStatus& status) { - DCHECK_EQ(DEFERRED_NONE, deferred_stage_); - DCHECK(!loader_completed_); - - // Only dispatch WillOnCompleteWithError() if status is not OK. - if (!throttles_.empty() && status.error_code != net::OK) { - pending_restart_flags_ = 0; - has_pending_restart_ = false; - bool deferred = false; - for (auto& entry : throttles_) { - auto* throttle = entry.throttle.get(); - bool throttle_deferred = false; - base::Time start = base::Time::Now(); - throttle->WillOnCompleteWithError(status, &throttle_deferred); - RecordExecutionTimeHistogram(GetStageNameForHistogram(DEFERRED_COMPLETE), - start); - if (!HandleThrottleResult(throttle, throttle_deferred, &deferred)) - return; - } - - if (deferred) { - deferred_stage_ = DEFERRED_COMPLETE; - client_receiver_.Pause(); - return; - } - - if (has_pending_restart_) { - RestartWithFlagsNow(); - return; - } - } - - // This is the last expected message. Pipe closure before this is an error - // (see OnClientConnectionError). After this it is expected and should be - // ignored. The owner of |this| is expected to destroy |this| when - // OnComplete() and all data has been read. Destruction of |this| will - // destroy |url_loader_| appropriately. - loader_completed_ = true; - forwarding_client_->OnComplete(status); -} - -void ThrottlingURLLoader::OnClientConnectionError() { - CancelWithError(net::ERR_ABORTED, ""); -} - -void ThrottlingURLLoader::CancelWithError(int error_code, - base::StringPiece custom_reason) { - if (loader_completed_) - return; - - network::URLLoaderCompletionStatus status; - status.error_code = error_code; - status.completion_time = base::TimeTicks::Now(); - - deferred_stage_ = DEFERRED_NONE; - DisconnectClient(custom_reason); - forwarding_client_->OnComplete(status); -} - -void ThrottlingURLLoader::Resume() { - if (loader_completed_ || deferred_stage_ == DEFERRED_NONE) - return; - - auto prev_deferred_stage = deferred_stage_; - deferred_stage_ = DEFERRED_NONE; - switch (prev_deferred_stage) { - case DEFERRED_START: { - StartNow(); - break; - } - case DEFERRED_REDIRECT: { - // |client_receiver_| can be unbound if the redirect came from a - // throttle. - if (client_receiver_.is_bound()) - client_receiver_.Resume(); - // TODO(dhausknecht) at this point we do not actually know if we commit to - // the redirect or if it will be cancelled. FollowRedirect would be a more - // suitable place to set this URL but there we do not have the data. - response_url_ = redirect_info_->redirect_info.new_url; - forwarding_client_->OnReceiveRedirect( - redirect_info_->redirect_info, - std::move(redirect_info_->response_head)); - // Note: |this| may be deleted here. - break; - } - case DEFERRED_BEFORE_RESPONSE: { - // TODO(eroman): For simplicity we require throttles that defer during - // BeforeWillProcessResponse() to do a restart. We could support deferring - // and choosing not to restart if needed, however the current consumers - // don't need that. - CHECK(has_pending_restart_); - - RestartWithFlagsNow(); - // Note: |this| may be deleted here. - break; - } - case DEFERRED_RESPONSE: { - client_receiver_.Resume(); - forwarding_client_->OnReceiveResponse( - std::move(response_info_->response_head)); - // Note: |this| may be deleted here. - break; - } - case DEFERRED_COMPLETE: { - // TODO(eroman): For simplicity we require throttles that defer during - // WillOnCompleteWithError() to do a restart. We could support deferring - // and choosing not to restart if needed, however the current consumers - // don't need that. - CHECK(has_pending_restart_); - - RestartWithFlagsNow(); - // Note: |this| may be deleted here. - break; - } - default: - NOTREACHED(); - break; - } -} - -void ThrottlingURLLoader::SetPriority(net::RequestPriority priority) { - if (url_loader_) - url_loader_->SetPriority(priority, -1); -} - -void ThrottlingURLLoader::UpdateDeferredRequestHeaders( - const net::HttpRequestHeaders& modified_request_headers, - const net::HttpRequestHeaders& modified_cors_exempt_request_headers) { - if (deferred_stage_ == DEFERRED_START) { - start_info_->url_request.headers.MergeFrom(modified_request_headers); - start_info_->url_request.cors_exempt_headers.MergeFrom( - modified_cors_exempt_request_headers); - } else if (deferred_stage_ == DEFERRED_REDIRECT) { - modified_headers_.MergeFrom(modified_request_headers); - modified_cors_exempt_headers_.MergeFrom( - modified_cors_exempt_request_headers); - } else { - NOTREACHED() - << "Can only update headers of a request before it's sent out."; - } -} - -void ThrottlingURLLoader::UpdateDeferredResponseHead( - network::mojom::URLResponseHeadPtr new_response_head) { - DCHECK(response_info_); - DCHECK_EQ(DEFERRED_RESPONSE, deferred_stage_); - response_info_->response_head = std::move(new_response_head); -} - -void ThrottlingURLLoader::PauseReadingBodyFromNet(URLLoaderThrottle* throttle) { - if (pausing_reading_body_from_net_throttles_.empty() && url_loader_) - url_loader_->PauseReadingBodyFromNet(); - - pausing_reading_body_from_net_throttles_.insert(throttle); -} - -void ThrottlingURLLoader::ResumeReadingBodyFromNet( - URLLoaderThrottle* throttle) { - auto iter = pausing_reading_body_from_net_throttles_.find(throttle); - if (iter == pausing_reading_body_from_net_throttles_.end()) - return; - - pausing_reading_body_from_net_throttles_.erase(iter); - if (pausing_reading_body_from_net_throttles_.empty() && url_loader_) - url_loader_->ResumeReadingBodyFromNet(); -} - -void ThrottlingURLLoader::InterceptResponse( - mojo::PendingRemote<network::mojom::URLLoader> new_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient> new_client_receiver, - mojo::PendingRemote<network::mojom::URLLoader>* original_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient>* - original_client_receiver) { - response_intercepted_ = true; - - if (original_loader) { - url_loader_->ResumeReadingBodyFromNet(); - *original_loader = url_loader_.Unbind(); - } - url_loader_.Bind(std::move(new_loader)); - - if (original_client_receiver) - *original_client_receiver = client_receiver_.Unbind(); - client_receiver_.Bind(std::move(new_client_receiver), - start_info_->task_runner); - client_receiver_.set_disconnect_handler(base::BindOnce( - &ThrottlingURLLoader::OnClientConnectionError, base::Unretained(this))); -} - -void ThrottlingURLLoader::DisconnectClient(base::StringPiece custom_reason) { - client_receiver_.reset(); - - if (!custom_reason.empty()) { - url_loader_.ResetWithReason( - network::mojom::URLLoader::kClientDisconnectReason, - custom_reason.as_string()); - } else { - url_loader_.reset(); - } - - loader_completed_ = true; -} - -const char* ThrottlingURLLoader::GetStageNameForHistogram(DeferredStage stage) { - switch (stage) { - case DEFERRED_START: - return "WillStartRequest"; - case DEFERRED_REDIRECT: - return "WillRedirectRequest"; - case DEFERRED_BEFORE_RESPONSE: - return "BeforeWillProcessResponse"; - case DEFERRED_RESPONSE: - return "WillProcessResponse"; - case DEFERRED_COMPLETE: - return "WillOnCompleteWithError"; - default: - NOTREACHED(); - } - return ""; -} - -ThrottlingURLLoader::ThrottleEntry::ThrottleEntry( - ThrottlingURLLoader* loader, - std::unique_ptr<URLLoaderThrottle> the_throttle) - : delegate( - std::make_unique<ForwardingThrottleDelegate>(loader, - the_throttle.get())), - throttle(std::move(the_throttle)) { - throttle->set_delegate(delegate.get()); -} - -ThrottlingURLLoader::ThrottleEntry::ThrottleEntry(ThrottleEntry&& other) = - default; - -ThrottlingURLLoader::ThrottleEntry::~ThrottleEntry() = default; - -ThrottlingURLLoader::ThrottleEntry& ThrottlingURLLoader::ThrottleEntry:: -operator=(ThrottleEntry&& other) = default; - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/throttling_url_loader_unittest.cc b/chromium/src/third_party/blink/common/loader/throttling_url_loader_unittest.cc deleted file mode 100644 index bdf70d7..0000000 --- a/chromium/src/third_party/blink/common/loader/throttling_url_loader_unittest.cc +++ /dev/null
@@ -1,3084 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/loader/throttling_url_loader.h" - -#include "base/bind.h" -#include "base/macros.h" -#include "base/memory/ptr_util.h" -#include "base/notreached.h" -#include "base/run_loop.h" -#include "base/test/bind.h" -#include "base/test/task_environment.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "net/traffic_annotation/network_traffic_annotation_test_helper.h" -#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "services/network/public/mojom/url_loader_factory.mojom.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/loader/url_loader_throttle.h" - -namespace blink { -namespace { - -GURL request_url = GURL("http://example.org"); -GURL redirect_url = GURL("http://example.com"); - -class TestURLLoaderFactory : public network::mojom::URLLoaderFactory, - public network::mojom::URLLoader { - public: - TestURLLoaderFactory() { - receiver_.Bind(factory_remote_.BindNewPipeAndPassReceiver()); - shared_factory_ = - base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( - factory_remote_.get()); - } - - ~TestURLLoaderFactory() override { shared_factory_->Detach(); } - - mojo::Remote<network::mojom::URLLoaderFactory>& factory_remote() { - return factory_remote_; - } - mojo::Receiver<network::mojom::URLLoader>& url_loader_receiver() { - return url_loader_receiver_; - } - scoped_refptr<network::SharedURLLoaderFactory> shared_factory() { - return shared_factory_; - } - - size_t create_loader_and_start_called() const { - return create_loader_and_start_called_; - } - - const std::vector<std::string>& headers_removed_on_redirect() const { - return headers_removed_on_redirect_; - } - - const net::HttpRequestHeaders& headers_modified_on_redirect() const { - return headers_modified_on_redirect_; - } - - const net::HttpRequestHeaders& cors_exempt_headers_modified_on_redirect() - const { - return cors_exempt_headers_modified_on_redirect_; - } - - size_t pause_reading_body_from_net_called() const { - return pause_reading_body_from_net_called_; - } - - size_t resume_reading_body_from_net_called() const { - return resume_reading_body_from_net_called_; - } - - void NotifyClientOnReceiveResponse() { - client_remote_->OnReceiveResponse(network::mojom::URLResponseHead::New()); - } - - void NotifyClientOnReceiveRedirect() { - net::RedirectInfo info; - info.new_url = redirect_url; - client_remote_->OnReceiveRedirect(info, - network::mojom::URLResponseHead::New()); - } - - void NotifyClientOnComplete(int error_code) { - network::URLLoaderCompletionStatus data; - data.error_code = error_code; - client_remote_->OnComplete(data); - } - - void CloseClientPipe() { client_remote_.reset(); } - - using OnCreateLoaderAndStartCallback = base::RepeatingCallback<void( - const network::ResourceRequest& url_request)>; - void set_on_create_loader_and_start( - const OnCreateLoaderAndStartCallback& callback) { - on_create_loader_and_start_callback_ = callback; - } - - private: - // network::mojom::URLLoaderFactory implementation. - void CreateLoaderAndStart( - mojo::PendingReceiver<network::mojom::URLLoader> receiver, - int32_t routing_id, - int32_t request_id, - uint32_t options, - const network::ResourceRequest& url_request, - mojo::PendingRemote<network::mojom::URLLoaderClient> client, - const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) - override { - create_loader_and_start_called_++; - - url_loader_receiver_.reset(); - url_loader_receiver_.Bind(std::move(receiver)); - client_remote_.reset(); - client_remote_.Bind(std::move(client)); - - if (on_create_loader_and_start_callback_) - on_create_loader_and_start_callback_.Run(url_request); - } - - void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) - override { - NOTREACHED(); - } - - // network::mojom::URLLoader implementation. - void FollowRedirect( - const std::vector<std::string>& removed_headers, - const net::HttpRequestHeaders& modified_headers, - const net::HttpRequestHeaders& modified_cors_exempt_headers, - const base::Optional<GURL>& new_url) override { - headers_removed_on_redirect_ = removed_headers; - headers_modified_on_redirect_ = modified_headers; - cors_exempt_headers_modified_on_redirect_ = modified_cors_exempt_headers; - } - - void SetPriority(net::RequestPriority priority, - int32_t intra_priority_value) override {} - - void PauseReadingBodyFromNet() override { - pause_reading_body_from_net_called_++; - } - - void ResumeReadingBodyFromNet() override { - resume_reading_body_from_net_called_++; - } - - size_t create_loader_and_start_called_ = 0; - std::vector<std::string> headers_removed_on_redirect_; - net::HttpRequestHeaders headers_modified_on_redirect_; - net::HttpRequestHeaders cors_exempt_headers_modified_on_redirect_; - size_t pause_reading_body_from_net_called_ = 0; - size_t resume_reading_body_from_net_called_ = 0; - - mojo::Receiver<network::mojom::URLLoaderFactory> receiver_{this}; - mojo::Receiver<network::mojom::URLLoader> url_loader_receiver_{this}; - mojo::Remote<network::mojom::URLLoaderFactory> factory_remote_; - mojo::Remote<network::mojom::URLLoaderClient> client_remote_; - scoped_refptr<network::WeakWrapperSharedURLLoaderFactory> shared_factory_; - OnCreateLoaderAndStartCallback on_create_loader_and_start_callback_; - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderFactory); -}; - -class TestURLLoaderClient : public network::mojom::URLLoaderClient { - public: - TestURLLoaderClient() {} - - size_t on_received_response_called() const { - return on_received_response_called_; - } - - size_t on_received_redirect_called() const { - return on_received_redirect_called_; - } - - size_t on_complete_called() const { return on_complete_called_; } - - void set_on_received_redirect_callback( - const base::RepeatingClosure& callback) { - on_received_redirect_callback_ = callback; - } - - void set_on_received_response_callback(base::OnceClosure callback) { - on_received_response_callback_ = std::move(callback); - } - - using OnCompleteCallback = base::OnceCallback<void(int error_code)>; - void set_on_complete_callback(OnCompleteCallback callback) { - on_complete_callback_ = std::move(callback); - } - - private: - // network::mojom::URLLoaderClient implementation: - void OnReceiveResponse( - network::mojom::URLResponseHeadPtr response_head) override { - on_received_response_called_++; - if (on_received_response_callback_) - std::move(on_received_response_callback_).Run(); - } - void OnReceiveRedirect( - const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr response_head) override { - on_received_redirect_called_++; - if (on_received_redirect_callback_) - on_received_redirect_callback_.Run(); - } - void OnUploadProgress(int64_t current_position, - int64_t total_size, - OnUploadProgressCallback ack_callback) override {} - void OnReceiveCachedMetadata(mojo_base::BigBuffer data) override {} - void OnTransferSizeUpdated(int32_t transfer_size_diff) override {} - void OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) override {} - void OnComplete(const network::URLLoaderCompletionStatus& status) override { - on_complete_called_++; - if (on_complete_callback_) - std::move(on_complete_callback_).Run(status.error_code); - } - - size_t on_received_response_called_ = 0; - size_t on_received_redirect_called_ = 0; - size_t on_complete_called_ = 0; - - base::RepeatingClosure on_received_redirect_callback_; - base::OnceClosure on_received_response_callback_; - OnCompleteCallback on_complete_callback_; - - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderClient); -}; - -class TestURLLoaderThrottle : public blink::URLLoaderThrottle { - public: - TestURLLoaderThrottle() {} - explicit TestURLLoaderThrottle(base::OnceClosure destruction_notifier) - : destruction_notifier_(std::move(destruction_notifier)) {} - - ~TestURLLoaderThrottle() override { - if (destruction_notifier_) - std::move(destruction_notifier_).Run(); - } - - using ThrottleCallback = - base::RepeatingCallback<void(URLLoaderThrottle::Delegate* delegate, - bool* defer)>; - using ThrottleRedirectCallback = base::OnceCallback<void( - blink::URLLoaderThrottle::Delegate* delegate, - bool* defer, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers)>; - - size_t will_start_request_called() const { - return will_start_request_called_; - } - size_t will_redirect_request_called() const { - return will_redirect_request_called_; - } - size_t will_process_response_called() const { - return will_process_response_called_; - } - size_t before_will_process_response_called() const { - return before_will_process_response_called_; - } - - GURL observed_response_url() const { return response_url_; } - - void set_will_start_request_callback(const ThrottleCallback& callback) { - will_start_request_callback_ = callback; - } - - void set_will_redirect_request_callback(ThrottleRedirectCallback callback) { - will_redirect_request_callback_ = std::move(callback); - } - - void set_will_process_response_callback(const ThrottleCallback& callback) { - will_process_response_callback_ = callback; - } - - void set_before_will_process_response_callback( - const ThrottleCallback& callback) { - before_will_process_response_callback_ = callback; - } - - void set_modify_url_in_will_start(const GURL& url) { - modify_url_in_will_start_ = url; - } - - Delegate* delegate() const { return delegate_; } - - private: - // blink::URLLoaderThrottle implementation. - void WillStartRequest(network::ResourceRequest* request, - bool* defer) override { - will_start_request_called_++; - if (!modify_url_in_will_start_.is_empty()) - request->url = modify_url_in_will_start_; - - if (will_start_request_callback_) - will_start_request_callback_.Run(delegate_, defer); - } - - void WillRedirectRequest( - net::RedirectInfo* redirect_info, - const network::mojom::URLResponseHead& response_head, - bool* defer, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers) override { - will_redirect_request_called_++; - if (will_redirect_request_callback_) { - std::move(will_redirect_request_callback_) - .Run(delegate_, defer, removed_headers, modified_headers, - modified_cors_exempt_headers); - } - } - - void WillProcessResponse(const GURL& response_url, - network::mojom::URLResponseHead* response_head, - bool* defer) override { - will_process_response_called_++; - if (will_process_response_callback_) - will_process_response_callback_.Run(delegate_, defer); - response_url_ = response_url; - } - - void BeforeWillProcessResponse( - const GURL& response_url, - const network::mojom::URLResponseHead& response_head, - bool* defer) override { - before_will_process_response_called_++; - if (before_will_process_response_callback_) - before_will_process_response_callback_.Run(delegate_, defer); - } - - size_t will_start_request_called_ = 0; - size_t will_redirect_request_called_ = 0; - size_t will_process_response_called_ = 0; - size_t before_will_process_response_called_ = 0; - - GURL response_url_; - - ThrottleCallback will_start_request_callback_; - ThrottleRedirectCallback will_redirect_request_callback_; - ThrottleCallback will_process_response_callback_; - ThrottleCallback before_will_process_response_callback_; - - GURL modify_url_in_will_start_; - - base::OnceClosure destruction_notifier_; - - DISALLOW_COPY_AND_ASSIGN(TestURLLoaderThrottle); -}; - -class ThrottlingURLLoaderTest : public testing::Test { - public: - ThrottlingURLLoaderTest() {} - - std::unique_ptr<ThrottlingURLLoader>& loader() { return loader_; } - TestURLLoaderThrottle* throttle() const { return throttle_; } - - protected: - // testing::Test implementation. - void SetUp() override { - auto throttle = std::make_unique<TestURLLoaderThrottle>( - base::BindOnce(&ThrottlingURLLoaderTest::ResetThrottleRawPointer, - weak_factory_.GetWeakPtr())); - - throttle_ = throttle.get(); - - throttles_.push_back(std::move(throttle)); - } - - void CreateLoaderAndStart(bool sync = false) { - uint32_t options = 0; - if (sync) - options |= network::mojom::kURLLoadOptionSynchronous; - network::ResourceRequest request; - request.url = request_url; - loader_ = ThrottlingURLLoader::CreateLoaderAndStart( - factory_.shared_factory(), std::move(throttles_), 0, 0, options, - &request, &client_, TRAFFIC_ANNOTATION_FOR_TESTS, - base::ThreadTaskRunnerHandle::Get()); - factory_.factory_remote().FlushForTesting(); - } - - void ResetThrottleRawPointer() { throttle_ = nullptr; } - - // Be the first member so it is destroyed last. - base::test::TaskEnvironment task_environment_; - - std::unique_ptr<ThrottlingURLLoader> loader_; - std::vector<std::unique_ptr<blink::URLLoaderThrottle>> throttles_; - - TestURLLoaderFactory factory_; - TestURLLoaderClient client_; - - // Owned by |throttles_| or |loader_|. - TestURLLoaderThrottle* throttle_ = nullptr; - - base::WeakPtrFactory<ThrottlingURLLoaderTest> weak_factory_{this}; - - DISALLOW_COPY_AND_ASSIGN(ThrottlingURLLoaderTest); -}; - -TEST_F(ThrottlingURLLoaderTest, CancelBeforeStart) { - throttle_->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->CancelWithError(net::ERR_ACCESS_DENIED); - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::ERR_ACCESS_DENIED, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, DeferBeforeStart) { - throttle_->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::OK, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); - - throttle_->delegate()->Resume(); - factory_.factory_remote().FlushForTesting(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(1u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, ModifyHeaderInResumeBeforeStart) { - throttle_->set_will_start_request_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { *defer = true; })); - - CreateLoaderAndStart(); - - base::RunLoop run_loop; - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ("X-Test-Header-1: Foo\r\n\r\n", - url_request.headers.ToString()); - EXPECT_EQ("X-Test-Header-2: Bar\r\n\r\n", - url_request.cors_exempt_headers.ToString()); - quit_closure.Run(); - }, - run_loop.QuitClosure())); - - net::HttpRequestHeaders modified_headers; - net::HttpRequestHeaders modified_cors_exempt_headers; - modified_headers.SetHeader("X-Test-Header-1", "Foo"); - modified_cors_exempt_headers.SetHeader("X-Test-Header-2", "Bar"); - throttle_->delegate()->UpdateDeferredRequestHeaders( - modified_headers, modified_cors_exempt_headers); - throttle_->delegate()->Resume(); - - run_loop.Run(); -} - -TEST_F(ThrottlingURLLoaderTest, ModifyURLBeforeStart) { - throttle_->set_modify_url_in_will_start(GURL("http://example.org/foo")); - - CreateLoaderAndStart(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); -} - -// Regression test for crbug.com/933538 -TEST_F(ThrottlingURLLoaderTest, ModifyURLAndDeferRedirect) { - throttle_->set_modify_url_in_will_start(GURL("http://example.org/foo")); - throttle_->set_will_start_request_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* /* delegate */, - bool* defer) { *defer = true; })); - base::RunLoop run_loop; - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [&](blink::URLLoaderThrottle::Delegate* /* delegate */, bool* defer, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - *defer = true; - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - - throttle_->delegate()->Resume(); - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - - throttle_->delegate()->Resume(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(1u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); -} - -// Regression test for crbug.com/1053700. -TEST_F(ThrottlingURLLoaderTest, - RedirectCallbackShouldNotBeCalledAfterDestruction) { - throttle_->set_modify_url_in_will_start(GURL("http://example.org/foo")); - base::RunLoop run_loop; - bool called = false; - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [&](blink::URLLoaderThrottle::Delegate* /* delegate */, bool* defer, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - *defer = true; - called = true; - })); - - // We don't use CreateLoaderAndStart because we don't want to call - // FlushForTesting(). - network::ResourceRequest request; - request.url = request_url; - loader_ = ThrottlingURLLoader::CreateLoaderAndStart( - factory_.shared_factory(), std::move(throttles_), 0, 0, 0, &request, - &client_, TRAFFIC_ANNOTATION_FOR_TESTS, - base::ThreadTaskRunnerHandle::Get()); - - loader_ = nullptr; - - run_loop.RunUntilIdle(); - EXPECT_FALSE(called); -} - -TEST_F(ThrottlingURLLoaderTest, CancelBeforeRedirect) { - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - delegate->CancelWithError(net::ERR_ACCESS_DENIED); - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::ERR_ACCESS_DENIED, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveRedirect(); - - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, DeferBeforeRedirect) { - base::RunLoop run_loop1; - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [&run_loop1]( - blink::URLLoaderThrottle::Delegate* delegate, bool* defer, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - *defer = true; - run_loop1.Quit(); - })); - - base::RunLoop run_loop2; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop2](int error) { - EXPECT_EQ(net::ERR_UNEXPECTED, error); - run_loop2.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveRedirect(); - - run_loop1.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - factory_.NotifyClientOnComplete(net::ERR_UNEXPECTED); - - base::RunLoop run_loop3; - run_loop3.RunUntilIdle(); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); - - throttle_->delegate()->Resume(); - run_loop2.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(1u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, ModifyHeadersBeforeRedirect) { - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers) { - removed_headers->push_back("X-Test-Header-1"); - modified_headers->SetHeader("X-Test-Header-2", "Foo"); - modified_headers->SetHeader("X-Test-Header-3", "Throttle Value"); - modified_cors_exempt_headers->SetHeader("X-Test-Cors-Exempt-Header-1", - "Bubble"); - })); - - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - modified_headers.SetHeader("X-Test-Header-3", "Client Value"); - modified_headers.SetHeader("X-Test-Header-4", "Bar"); - net::HttpRequestHeaders modified_cors_exempt_headers; - modified_cors_exempt_headers.SetHeader("X-Test-Cors-Exempt-Header-1", - "Bobble"); - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - std::move(modified_cors_exempt_headers)); - })); - - CreateLoaderAndStart(); - factory_.NotifyClientOnReceiveRedirect(); - base::RunLoop().RunUntilIdle(); - - ASSERT_FALSE(factory_.headers_removed_on_redirect().empty()); - EXPECT_THAT(factory_.headers_removed_on_redirect(), - testing::ElementsAre("X-Test-Header-1")); - ASSERT_FALSE(factory_.headers_modified_on_redirect().IsEmpty()); - EXPECT_EQ( - "X-Test-Header-2: Foo\r\n" - "X-Test-Header-3: Client Value\r\n" - "X-Test-Header-4: Bar\r\n\r\n", - factory_.headers_modified_on_redirect().ToString()); - ASSERT_FALSE(factory_.cors_exempt_headers_modified_on_redirect().IsEmpty()); - EXPECT_EQ("X-Test-Cors-Exempt-Header-1: Bobble\r\n\r\n", - factory_.cors_exempt_headers_modified_on_redirect().ToString()); -} - -TEST_F(ThrottlingURLLoaderTest, ModifyHeaderInResumeBeforeRedirect) { - base::RunLoop run_loop1; - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [&run_loop1](blink::URLLoaderThrottle::Delegate* delegate, bool* defer, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers) { - *defer = true; - run_loop1.Quit(); - })); - - CreateLoaderAndStart(); - factory_.NotifyClientOnReceiveRedirect(); - run_loop1.Run(); - - net::HttpRequestHeaders modified_headers; - net::HttpRequestHeaders modified_cors_exempt_headers; - modified_headers.SetHeader("X-Test-Header-1", "Foo"); - modified_cors_exempt_headers.SetHeader("X-Test-Header-2", "Bar"); - throttle_->delegate()->UpdateDeferredRequestHeaders( - modified_headers, modified_cors_exempt_headers); - throttle_->delegate()->Resume(); - - loader_->FollowRedirect({}, {}, {}); - - base::RunLoop run_loop2; - run_loop2.RunUntilIdle(); - - EXPECT_EQ("X-Test-Header-1: Foo\r\n\r\n", - factory_.headers_modified_on_redirect().ToString()); - EXPECT_EQ("X-Test-Header-2: Bar\r\n\r\n", - factory_.cors_exempt_headers_modified_on_redirect().ToString()); -} - -TEST_F(ThrottlingURLLoaderTest, MultipleThrottlesModifyHeadersBeforeRedirect) { - auto* throttle2 = new TestURLLoaderThrottle(); - throttles_.push_back(base::WrapUnique(throttle2)); - - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers) { - removed_headers->push_back("X-Test-Header-0"); - removed_headers->push_back("X-Test-Header-1"); - modified_headers->SetHeader("X-Test-Header-3", "Foo"); - modified_headers->SetHeader("X-Test-Header-4", "Throttle1"); - })); - - throttle2->set_will_redirect_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */, - std::vector<std::string>* removed_headers, - net::HttpRequestHeaders* modified_headers, - net::HttpRequestHeaders* modified_cors_exempt_headers) { - removed_headers->push_back("X-Test-Header-1"); - removed_headers->push_back("X-Test-Header-2"); - modified_headers->SetHeader("X-Test-Header-4", "Throttle2"); - })); - - client_.set_on_received_redirect_callback(base::BindLambdaForTesting( - [&]() { loader_->FollowRedirect({}, {}, {}); })); - - CreateLoaderAndStart(); - factory_.NotifyClientOnReceiveRedirect(); - base::RunLoop().RunUntilIdle(); - - ASSERT_FALSE(factory_.headers_removed_on_redirect().empty()); - EXPECT_THAT(factory_.headers_removed_on_redirect(), - testing::ElementsAre("X-Test-Header-0", "X-Test-Header-1", - "X-Test-Header-2")); - ASSERT_FALSE(factory_.headers_modified_on_redirect().IsEmpty()); - EXPECT_EQ( - "X-Test-Header-3: Foo\r\n" - "X-Test-Header-4: Throttle2\r\n\r\n", - factory_.headers_modified_on_redirect().ToString()); -} - -TEST_F(ThrottlingURLLoaderTest, CancelBeforeResponse) { - throttle_->set_will_process_response_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->CancelWithError(net::ERR_ACCESS_DENIED); - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::ERR_ACCESS_DENIED, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, DeferBeforeResponse) { - base::RunLoop run_loop1; - throttle_->set_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - base::RunLoop run_loop2; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop2](int error) { - EXPECT_EQ(net::ERR_UNEXPECTED, error); - run_loop2.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop1.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - factory_.NotifyClientOnComplete(net::ERR_UNEXPECTED); - - base::RunLoop run_loop3; - run_loop3.RunUntilIdle(); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); - - throttle_->delegate()->Resume(); - run_loop2.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(1u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, PipeClosure) { - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::ERR_ABORTED, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.CloseClientPipe(); - - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, ResumeNoOpIfNotDeferred) { - auto resume_callback = base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */) { - delegate->Resume(); - delegate->Resume(); - }); - throttle_->set_will_start_request_callback(resume_callback); - throttle_->set_will_process_response_callback(std::move(resume_callback)); - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* /* defer */, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - delegate->Resume(); - delegate->Resume(); - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::OK, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - factory_.NotifyClientOnReceiveRedirect(); - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(redirect_url)); - - EXPECT_EQ(1u, client_.on_received_response_called()); - EXPECT_EQ(1u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, CancelNoOpIfAlreadyCanceled) { - throttle_->set_will_start_request_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->CancelWithError(net::ERR_ACCESS_DENIED); - delegate->CancelWithError(net::ERR_UNEXPECTED); - })); - - base::RunLoop run_loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop](int error) { - EXPECT_EQ(net::ERR_ACCESS_DENIED, error); - run_loop.Quit(); - })); - - CreateLoaderAndStart(); - throttle_->delegate()->CancelWithError(net::ERR_INVALID_ARGUMENT); - run_loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, ResumeNoOpIfAlreadyCanceled) { - throttle_->set_will_process_response_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->CancelWithError(net::ERR_ACCESS_DENIED); - delegate->Resume(); - })); - - base::RunLoop run_loop1; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop1](int error) { - EXPECT_EQ(net::ERR_ACCESS_DENIED, error); - run_loop1.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop1.Run(); - - throttle_->delegate()->Resume(); - - base::RunLoop run_loop2; - run_loop2.RunUntilIdle(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, MultipleThrottlesBasicSupport) { - throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>()); - auto* throttle2 = - static_cast<TestURLLoaderThrottle*>(throttles_.back().get()); - CreateLoaderAndStart(); - factory_.NotifyClientOnReceiveResponse(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle2->will_start_request_called()); -} - -TEST_F(ThrottlingURLLoaderTest, BlockWithOneOfMultipleThrottles) { - throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>()); - auto* throttle2 = - static_cast<TestURLLoaderThrottle*>(throttles_.back().get()); - throttle2->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - })); - - base::RunLoop loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&loop](int error) { - EXPECT_EQ(net::OK, error); - loop.Quit(); - })); - - CreateLoaderAndStart(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle2->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle2->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle2->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(0u, throttle2->will_process_response_called()); - - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); - - throttle2->delegate()->Resume(); - factory_.factory_remote().FlushForTesting(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle2->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle2->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle2->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(1u, throttle2->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - EXPECT_TRUE( - throttle2->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(1u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, BlockWithMultipleThrottles) { - throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>()); - auto* throttle2 = - static_cast<TestURLLoaderThrottle*>(throttles_.back().get()); - - // Defers a request on both throttles. - throttle_->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - })); - throttle2->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - })); - - base::RunLoop loop; - client_.set_on_complete_callback( - base::BindLambdaForTesting([&loop](int error) { - EXPECT_EQ(net::OK, error); - loop.Quit(); - })); - - CreateLoaderAndStart(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle2->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle2->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle2->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(0u, throttle2->will_process_response_called()); - - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - EXPECT_EQ(0u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(0u, client_.on_complete_called()); - - throttle_->delegate()->Resume(); - - // Should still not have started because there's |throttle2| is still blocking - // the request. - factory_.factory_remote().FlushForTesting(); - EXPECT_EQ(0u, factory_.create_loader_and_start_called()); - - throttle2->delegate()->Resume(); - - // Now it should have started. - factory_.factory_remote().FlushForTesting(); - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - loop.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle2->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle2->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle2->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(1u, throttle2->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - EXPECT_TRUE( - throttle2->observed_response_url().EqualsIgnoringRef(request_url)); - - EXPECT_EQ(1u, client_.on_received_response_called()); - EXPECT_EQ(0u, client_.on_received_redirect_called()); - EXPECT_EQ(1u, client_.on_complete_called()); -} - -TEST_F(ThrottlingURLLoaderTest, PauseResumeReadingBodyFromNet) { - throttles_.emplace_back(std::make_unique<TestURLLoaderThrottle>()); - auto* throttle2 = - static_cast<TestURLLoaderThrottle*>(throttles_.back().get()); - - // Test that it is okay to call delegate->PauseReadingBodyFromNet() even - // before the loader is created. - throttle_->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->PauseReadingBodyFromNet(); - *defer = true; - })); - throttle2->set_will_start_request_callback(base::BindLambdaForTesting( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->PauseReadingBodyFromNet(); - })); - - CreateLoaderAndStart(); - - throttle_->delegate()->Resume(); - - factory_.factory_remote().FlushForTesting(); - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - - // Make sure all URLLoader calls before this point are delivered to the impl - // side. - factory_.url_loader_receiver().FlushForTesting(); - - // Although there were two calls to delegate->PauseReadingBodyFromNet(), only - // one URLLoader::PauseReadingBodyFromNet() Mojo call was made. - EXPECT_EQ(1u, factory_.pause_reading_body_from_net_called()); - EXPECT_EQ(0u, factory_.resume_reading_body_from_net_called()); - - // Reading body from network is still paused by |throttle2|. Calling - // ResumeReadingBodyFromNet() on |throttle_| shouldn't have any effect. - throttle_->delegate()->ResumeReadingBodyFromNet(); - factory_.url_loader_receiver().FlushForTesting(); - EXPECT_EQ(1u, factory_.pause_reading_body_from_net_called()); - EXPECT_EQ(0u, factory_.resume_reading_body_from_net_called()); - - // Even if we call ResumeReadingBodyFromNet() on |throttle_| one more time. - throttle_->delegate()->ResumeReadingBodyFromNet(); - factory_.url_loader_receiver().FlushForTesting(); - EXPECT_EQ(1u, factory_.pause_reading_body_from_net_called()); - EXPECT_EQ(0u, factory_.resume_reading_body_from_net_called()); - - throttle2->delegate()->ResumeReadingBodyFromNet(); - factory_.url_loader_receiver().FlushForTesting(); - EXPECT_EQ(1u, factory_.pause_reading_body_from_net_called()); - EXPECT_EQ(1u, factory_.resume_reading_body_from_net_called()); -} - -TEST_F(ThrottlingURLLoaderTest, - DestroyingThrottlingURLLoaderInDelegateCall_Response) { - base::RunLoop run_loop1; - throttle_->set_will_process_response_callback(base::BindLambdaForTesting( - [&run_loop1](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - run_loop1.Quit(); - })); - - base::RunLoop run_loop2; - client_.set_on_received_response_callback(base::BindLambdaForTesting([&]() { - // Destroy the ThrottlingURLLoader while inside a delegate call from a - // throttle. - loader().reset(); - - // The throttle should stay alive. - EXPECT_NE(nullptr, throttle()); - - run_loop2.Quit(); - })); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop1.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - EXPECT_TRUE( - throttle_->observed_response_url().EqualsIgnoringRef(request_url)); - - throttle_->delegate()->Resume(); - run_loop2.Run(); - - // The ThrottlingURLLoader should be gone. - EXPECT_EQ(nullptr, loader_); - // The throttle should stay alive and destroyed later. - EXPECT_NE(nullptr, throttle_); - - task_environment_.RunUntilIdle(); - EXPECT_EQ(nullptr, throttle_); -} - -// Regression test for crbug.com/833292. -TEST_F(ThrottlingURLLoaderTest, - DestroyingThrottlingURLLoaderInDelegateCall_Redirect) { - base::RunLoop run_loop1; - throttle_->set_will_redirect_request_callback(base::BindLambdaForTesting( - [&run_loop1]( - blink::URLLoaderThrottle::Delegate* delegate, bool* defer, - std::vector<std::string>* /* removed_headers */, - net::HttpRequestHeaders* /* modified_headers */, - net::HttpRequestHeaders* /* modified_cors_exempt_headers */) { - *defer = true; - run_loop1.Quit(); - })); - - base::RunLoop run_loop2; - client_.set_on_received_redirect_callback(base::BindRepeating( - [](ThrottlingURLLoaderTest* test, - const base::RepeatingClosure& quit_closure) { - // Destroy the ThrottlingURLLoader while inside a delegate call from a - // throttle. - test->loader().reset(); - - // The throttle should stay alive. - EXPECT_NE(nullptr, test->throttle()); - - quit_closure.Run(); - }, - base::Unretained(this), run_loop2.QuitClosure())); - - CreateLoaderAndStart(); - - factory_.NotifyClientOnReceiveRedirect(); - - run_loop1.Run(); - - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - throttle_->delegate()->Resume(); - run_loop2.Run(); - - // The ThrottlingURLLoader should be gone. - EXPECT_EQ(nullptr, loader_); - // The throttle should stay alive and destroyed later. - EXPECT_NE(nullptr, throttle_); - - task_environment_.RunUntilIdle(); - EXPECT_EQ(nullptr, throttle_); -} - -// Call RestartWithFlags() from a single throttle while processing -// BeforeWillProcessResponse(). -TEST_F(ThrottlingURLLoaderTest, RestartWithFlags) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Restart the request when processing BeforeWillProcessResponse(), using - // different load flags (1). - throttle_->set_before_will_process_response_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { delegate->RestartWithFlags(1); })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - throttle_->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(2u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); -} - -// Call RestartWithFlags() from a single throttle after having deferred -// BeforeWillProcessResponse(). -TEST_F(ThrottlingURLLoaderTest, DeferThenRestartWithFlags) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Defer BeforeWillProcessResponse(). - throttle_->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - throttle_->delegate()->RestartWithFlags(1); - throttle_->delegate()->Resume(); - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - throttle_->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(2u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); -} - -// Call RestartWithFlags() from a multiple throttles while processing -// BeforeWillProcessResponse(). Ensures that the request is restarted exactly -// once, using the combination of all additional load flags. -TEST_F(ThrottlingURLLoaderTest, MultipleRestartWithFlags) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Have two of the three throttles restart whe processing - // BeforeWillProcessResponse(), using - // different load flags (2 and 8). - throttles[0]->set_before_will_process_response_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { delegate->RestartWithFlags(2); })); - throttles[2]->set_before_will_process_response_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { delegate->RestartWithFlags(8); })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 10 = (2 | 8)). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(10, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - } -} - -// Call RestartWithFlags() from multiple throttles after having deferred -// BeforeWillProcessResponse() in each. Ensures that the request is started -// exactly once, using the combination of all additional load flags. -TEST_F(ThrottlingURLLoaderTest, MultipleDeferThenRestartWithFlags) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Have all of the throttles defer. Once they have all been deferred, quit - // run_loop2. - int throttle_counter = 0; - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - int next_load_flag = 1; - for (auto* throttle : throttles) { - throttle->delegate()->RestartWithFlags(next_load_flag); - throttle->delegate()->Resume(); - next_load_flag <<= 1; - } - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - } -} - -// Call RestartWithFlags() from multiple throttles -- two while deferred, and -// one while processing BeforeWillProcessResponse(). Ensures that the request is -// restarted exactly once, using the combination of all additional load flags. -TEST_F(ThrottlingURLLoaderTest, MultipleRestartWithFlagsDeferAndSync) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Have two of the throttles defer, and one call restart - // synchronously. Once all are run, quit run_loop2. - int throttle_counter = 0; - for (size_t i = 0; i < 2u; ++i) { - throttles[i]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - throttles[2]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithFlags(4); - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - int next_load_flag = 1; - for (auto* throttle : throttles) { - throttle->delegate()->RestartWithFlags(next_load_flag); - throttle->delegate()->Resume(); - next_load_flag <<= 1; - } - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - } -} - -// Call RestartWithURLResetAndFlags() from a single throttle while processing -// BeforeWillProcessResponse(), and verify that it restarts with the original -// URL. -TEST_F(ThrottlingURLLoaderTest, RestartWithURLResetAndFlags) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Restart the request when processing BeforeWillProcessResponse(), using - // different load flags (1), and an URL reset. - throttle_->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlags(1); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - throttle_->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(2u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); -} - -// Ensure that RestartWithModifiedHeadersNow executes and internal redirect and -// actually modifies the headers. -TEST_F(ThrottlingURLLoaderTest, RestartWithModifiedHeadersNow) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_FALSE(url_request.headers.HasHeader("X-Foo")); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Restart the request when processing BeforeWillProcessResponse(), using - // different load flags (1), and an URL reset. - throttle_->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - net::HttpRequestHeaders modified_headers; - modified_headers.SetHeader("X-Foo", "bar"); - delegate->RestartWithModifiedHeadersNow(modified_headers); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - std::string value; - EXPECT_TRUE(url_request.headers.GetHeader("X-Foo", &value)); - EXPECT_EQ("bar", value); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); -} - -// Call RestartWithURLResetAndFlags() from a single throttle after having -// deferred BeforeWillProcessResponse(), and verify it uses the original URL. -TEST_F(ThrottlingURLLoaderTest, DeferThenRestartWithURLResetAndFlags) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Defer BeforeWillProcessResponse(). - throttle_->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - throttle_->delegate()->RestartWithURLResetAndFlags(1); - throttle_->delegate()->Resume(); - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - throttle_->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(2u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); -} - -// Call RestartWithURLResetFlags() from a multiple throttles while processing -// BeforeWillProcessResponse(). Ensures that the request is restarted exactly -// once, using the combination of all additional load flags, and with the -// original URL. -TEST_F(ThrottlingURLLoaderTest, MultipleRestartWithURLResetAndFlags) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Have two of the three throttles restart whe processing - // BeforeWillProcessResponse(), using - // different load flags (2 and 8), but both with URL resets. - throttles[0]->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlags(2); - })); - throttles[2]->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlags(8); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 10 = (2 | 8)). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(10, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -// Verify RestartWithURLResetAndFlagsNow() behaves similar to -// RestartWithURLResetAndFlags() while called during BeforeWillProcessResponse() -// processing, and verify that it restarts with the original URL. -TEST_F(ThrottlingURLLoaderTest, RestartWithURLResetAndFlagsNow) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Restart the request when processing BeforeWillProcessResponse(), using - // different load flags (1), and an URL reset. - throttle_->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlagsNow(1); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - throttle_->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(2u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); -} - -// Verify RestartWithURLResetAndFlagsNow() behaves similar to -// RestartWithURLResetAndFlags() while called during BeforeWillProcessResponse() -// processing, and verify that it restarts with the original URL. -TEST_F(ThrottlingURLLoaderTest, - RestartWithURLResetAndFlagsNowBeforeProcessResponse) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - - // Restarting the request should restart the request immediately. - throttle_->delegate()->RestartWithURLResetAndFlagsNow(1); - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(1, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - run_loop2.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(0u, throttle_->before_will_process_response_called()); - EXPECT_EQ(0u, throttle_->will_process_response_called()); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(1u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); -} - -// Verify RestartWithURLResetAndFlagsNow() does not restart request if -// BeforeWillProcessResponse() has already been called. -TEST_F(ThrottlingURLLoaderTest, - RestartWithURLResetAndFlagsNowAfterProcessResponse) { - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - CreateLoaderAndStart(); - run_loop1.Run(); - - throttle_->set_before_will_process_response_callback( - base::BindLambdaForTesting( - [&run_loop3](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { run_loop3.Quit(); })); - - factory_.NotifyClientOnReceiveResponse(); - run_loop3.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - - // Restarting the request should not have any effect. - throttle_->delegate()->RestartWithURLResetAndFlagsNow(1); - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnComplete(net::OK); - run_loop4.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - EXPECT_EQ(1u, throttle_->will_start_request_called()); - EXPECT_EQ(0u, throttle_->will_redirect_request_called()); - EXPECT_EQ(1u, throttle_->before_will_process_response_called()); - EXPECT_EQ(1u, throttle_->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); -} - -// Call RestartWithURLResetAndFlags() from multiple throttles after having -// deferred BeforeWillProcessResponse() in each. Ensures that the request is -// started exactly once, using the combination of all additional load flags, -// and with the original URL. -TEST_F(ThrottlingURLLoaderTest, MultipleDeferThenRestartWithURLResetAndFlags) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Have all of the throttles defer. Once they have all been deferred, quit - // run_loop2. - int throttle_counter = 0; - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - int next_load_flag = 1; - for (auto* throttle : throttles) { - throttle->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttle->delegate()->Resume(); - next_load_flag <<= 1; - } - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -// Call RestartWithURLResetAndFlags() from multiple throttles -- two while -// deferred, and one while processing BeforeWillProcessResponse(). Ensures that -// the request is restarted exactly once, using the combination of all -// additional load flags, and that the restarted requests use the original URL. -TEST_F(ThrottlingURLLoaderTest, - MultipleRestartWithURLResetAndFlagsDeferAndSync) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - base::RunLoop run_loop_for_redirect; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - run_loop_for_redirect.Quit(); - })); - - // Have two of the throttles defer, and one call restart - // synchronously. Once all are run, quit run_loop2. - int throttle_counter = 0; - for (size_t i = 0; i < 2u; ++i) { - throttles[i]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - throttles[2]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlags(4); - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - int next_load_flag = 1; - throttles[0]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[0]->delegate()->Resume(); - next_load_flag <<= 1; - - throttles[1]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[1]->delegate()->Resume(); - next_load_flag <<= 1; - run_loop_for_redirect.Run(); - - throttles[2]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[2]->delegate()->Resume(); - next_load_flag <<= 1; - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -// Call RestartWithFlags() and RestartWithURLResetFlags() from separate -// throttles while processing BeforeWillProcessResponse(). Ensures that the -// request is restarted exactly once, using the combination of all additional -// load flags, and with the original URL. -TEST_F(ThrottlingURLLoaderTest, MultipleRestartsOfMultipleTypes) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Have two of the three throttles restart when processing - // BeforeWillProcessResponse(), using - // different load flags (2 and 8), and one with URL resets. - throttles[0]->set_before_will_process_response_callback( - base::BindRepeating([](blink::URLLoaderThrottle::Delegate* delegate, - bool* defer) { delegate->RestartWithFlags(2); })); - throttles[2]->set_before_will_process_response_callback(base::BindRepeating( - [](blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithURLResetAndFlags(8); - })); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 10 = (2 | 8)). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(10, url_request.load_flags); - quit_closure.Run(); - }, - run_loop2.QuitClosure())); - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse() so it doesn't restart the request yet again. - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop3](int error) { - EXPECT_EQ(net::OK, error); - run_loop3.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop3.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -// Call RestartWithURLResetAndFlags() and RestartWithFlags from separate -// throttles after having deferred BeforeWillProcessResponse() in each. Ensures -// that the request is started exactly once, using the combination of all -// additional load flags, and with the original URL. -TEST_F(ThrottlingURLLoaderTest, MultipleDeferThenRestartsOfMultipleTypes) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - })); - - // Have all of the throttles defer. Once they have all been deferred, quit - // run_loop2. - int throttle_counter = 0; - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - // Restart throttles with different load flags, one with an URL reset. - int next_load_flag = 1; - bool with_url_reset = true; - for (auto* throttle : throttles) { - if (with_url_reset) { - throttle->delegate()->RestartWithURLResetAndFlags(next_load_flag); - with_url_reset = false; - } - throttle->delegate()->RestartWithFlags(next_load_flag); - throttle->delegate()->Resume(); - next_load_flag <<= 1; - } - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -// Call RestartWithURLResetAndFlags() from two throttles while -// deferred, and one RestartWithFlags() while processing -// BeforeWillProcessResponse(). Ensures that the request is restarted exactly -// once, using the combination of all additional load flags, and that the -// restarted requests use the original URL. -TEST_F(ThrottlingURLLoaderTest, MultipleRestartOfMultipleTypesDeferAndSync) { - // Create two additional TestURLLoaderThrottles for a total of 3, and keep - // local unowned pointers to them in |throttles|. - std::vector<TestURLLoaderThrottle*> throttles; - ASSERT_EQ(1u, throttles_.size()); - throttles.push_back(throttle_); - for (size_t i = 0; i < 2u; ++i) { - auto throttle = std::make_unique<TestURLLoaderThrottle>(); - throttles.push_back(throttle.get()); - throttles_.push_back(std::move(throttle)); - } - - ASSERT_EQ(3u, throttles_.size()); - ASSERT_EQ(3u, throttles.size()); - - base::RunLoop run_loop1; - base::RunLoop run_loop2; - base::RunLoop run_loop3; - base::RunLoop run_loop4; - base::RunLoop run_loop_for_redirect; - - // URL for internal redirect. - GURL modified_url = GURL("www.example.uk.com"); - throttle_->set_modify_url_in_will_start(modified_url); - - // Check that the initial loader uses the default load flags (0). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(0, url_request.load_flags); - quit_closure.Run(); - }, - run_loop1.QuitClosure())); - - // Set the client to actually follow redirects to allow URL resetting to - // occur. - client_.set_on_received_redirect_callback(base::BindLambdaForTesting([&]() { - net::HttpRequestHeaders modified_headers; - loader_->FollowRedirect({} /* removed_headers */, - std::move(modified_headers), - {} /* modified_cors_exempt_headers */); - run_loop_for_redirect.Quit(); - })); - - // Have two of the throttles defer, and one call restart - // synchronously. Once all are run, quit run_loop2. - int throttle_counter = 0; - for (size_t i = 0; i < 2u; ++i) { - throttles[i]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - *defer = true; - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - } - throttles[2]->set_before_will_process_response_callback(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, int* count, - blink::URLLoaderThrottle::Delegate* delegate, bool* defer) { - delegate->RestartWithFlags(4); - if (++(*count) == 3) { - quit_closure.Run(); - } - }, - run_loop2.QuitClosure(), &throttle_counter)); - - CreateLoaderAndStart(); - - run_loop1.Run(); - - EXPECT_EQ(1u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(0u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), modified_url); - } - - factory_.NotifyClientOnReceiveResponse(); - - run_loop2.Run(); - - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(0u, throttle->will_redirect_request_called()); - EXPECT_EQ(1u, throttle->before_will_process_response_called()); - EXPECT_EQ(0u, throttle->will_process_response_called()); - } - - // The next time we intercept CreateLoaderAndStart() should be for the - // restarted request (load flags of 1 | 2 | 4). - factory_.set_on_create_loader_and_start(base::BindRepeating( - [](const base::RepeatingClosure& quit_closure, - const network::ResourceRequest& url_request) { - EXPECT_EQ(7, url_request.load_flags); - quit_closure.Run(); - }, - run_loop3.QuitClosure())); - - int next_load_flag = 1; - throttles[0]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[0]->delegate()->Resume(); - next_load_flag <<= 1; - - throttles[1]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[1]->delegate()->Resume(); - next_load_flag <<= 1; - run_loop_for_redirect.Run(); - - throttles[2]->delegate()->RestartWithURLResetAndFlags(next_load_flag); - throttles[2]->delegate()->Resume(); - next_load_flag <<= 1; - - run_loop3.Run(); - - // Now that the restarted request has been made, clear - // BeforeWillProcessResponse(). - for (auto* throttle : throttles) { - throttle->set_before_will_process_response_callback( - TestURLLoaderThrottle::ThrottleCallback()); - } - - client_.set_on_complete_callback( - base::BindLambdaForTesting([&run_loop4](int error) { - EXPECT_EQ(net::OK, error); - run_loop4.Quit(); - })); - - // Complete the response. - factory_.NotifyClientOnReceiveResponse(); - factory_.NotifyClientOnComplete(net::OK); - - run_loop4.Run(); - - EXPECT_EQ(2u, factory_.create_loader_and_start_called()); - for (auto* throttle : throttles) { - EXPECT_EQ(1u, throttle->will_start_request_called()); - EXPECT_EQ(1u, throttle->will_redirect_request_called()); - EXPECT_EQ(2u, throttle->before_will_process_response_called()); - EXPECT_EQ(1u, throttle->will_process_response_called()); - EXPECT_EQ(throttle_->observed_response_url(), request_url); - } -} - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/url_loader_factory_bundle.cc b/chromium/src/third_party/blink/common/loader/url_loader_factory_bundle.cc deleted file mode 100644 index ef75d3c..0000000 --- a/chromium/src/third_party/blink/common/loader/url_loader_factory_bundle.cc +++ /dev/null
@@ -1,165 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/loader/url_loader_factory_bundle.h" - -#include <utility> - -#include "base/notreached.h" -#include "services/network/public/cpp/resource_request.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "url/gurl.h" - -namespace blink { - -namespace { - -template <typename TKey> -void BindPendingRemoteMapToRemoteMap( - std::map<TKey, mojo::Remote<network::mojom::URLLoaderFactory>>* target, - std::map<TKey, mojo::PendingRemote<network::mojom::URLLoaderFactory>> - input) { - for (auto& it : input) { - const TKey& key = it.first; - mojo::PendingRemote<network::mojom::URLLoaderFactory>& pending_factory = - it.second; - if ((*target)[key].is_bound()) - (*target)[key].reset(); - if (pending_factory) // pending_factory.is_valid(). - (*target)[key].Bind(std::move(pending_factory)); - } -} - -} // namespace - -PendingURLLoaderFactoryBundle::PendingURLLoaderFactoryBundle() = default; - -PendingURLLoaderFactoryBundle::PendingURLLoaderFactoryBundle( - mojo::PendingRemote<network::mojom::URLLoaderFactory> - pending_default_factory, - SchemeMap pending_scheme_specific_factories, - OriginMap pending_isolated_world_factories, - bool bypass_redirect_checks) - : pending_default_factory_(std::move(pending_default_factory)), - pending_scheme_specific_factories_( - std::move(pending_scheme_specific_factories)), - pending_isolated_world_factories_( - std::move(pending_isolated_world_factories)), - bypass_redirect_checks_(bypass_redirect_checks) {} - -PendingURLLoaderFactoryBundle::~PendingURLLoaderFactoryBundle() = default; - -scoped_refptr<network::SharedURLLoaderFactory> -PendingURLLoaderFactoryBundle::CreateFactory() { - auto other = std::make_unique<PendingURLLoaderFactoryBundle>(); - other->pending_default_factory_ = std::move(pending_default_factory_); - other->pending_appcache_factory_ = std::move(pending_appcache_factory_); - other->pending_scheme_specific_factories_ = - std::move(pending_scheme_specific_factories_); - other->pending_isolated_world_factories_ = - std::move(pending_isolated_world_factories_); - other->bypass_redirect_checks_ = bypass_redirect_checks_; - - return base::MakeRefCounted<URLLoaderFactoryBundle>(std::move(other)); -} - -// ----------------------------------------------------------------------------- - -URLLoaderFactoryBundle::URLLoaderFactoryBundle() = default; - -URLLoaderFactoryBundle::URLLoaderFactoryBundle( - std::unique_ptr<PendingURLLoaderFactoryBundle> pending_factory) { - Update(std::move(pending_factory)); -} - -URLLoaderFactoryBundle::~URLLoaderFactoryBundle() = default; - -network::mojom::URLLoaderFactory* URLLoaderFactoryBundle::GetFactory( - const network::ResourceRequest& request) { - auto it = scheme_specific_factories_.find(request.url.scheme()); - if (it != scheme_specific_factories_.end()) - return it->second.get(); - - if (request.isolated_world_origin.has_value()) { - auto it2 = - isolated_world_factories_.find(request.isolated_world_origin.value()); - if (it2 != isolated_world_factories_.end()) - return it2->second.get(); - } - - // AppCache factory must be used if it's given. - if (appcache_factory_) - return appcache_factory_.get(); - - return default_factory_.is_bound() ? default_factory_.get() : nullptr; -} - -void URLLoaderFactoryBundle::CreateLoaderAndStart( - mojo::PendingReceiver<network::mojom::URLLoader> loader, - int32_t routing_id, - int32_t request_id, - uint32_t options, - const network::ResourceRequest& request, - mojo::PendingRemote<network::mojom::URLLoaderClient> client, - const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { - network::mojom::URLLoaderFactory* factory_ptr = GetFactory(request); - factory_ptr->CreateLoaderAndStart(std::move(loader), routing_id, request_id, - options, request, std::move(client), - traffic_annotation); -} - -void URLLoaderFactoryBundle::Clone( - mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) { - NOTREACHED(); -} - -std::unique_ptr<network::PendingSharedURLLoaderFactory> -URLLoaderFactoryBundle::Clone() { - mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_default_factory; - if (default_factory_) { - default_factory_->Clone( - pending_default_factory.InitWithNewPipeAndPassReceiver()); - } - - auto pending_factories = - std::make_unique<blink::PendingURLLoaderFactoryBundle>( - std::move(pending_default_factory), - CloneRemoteMapToPendingRemoteMap(scheme_specific_factories_), - CloneRemoteMapToPendingRemoteMap(isolated_world_factories_), - bypass_redirect_checks_); - - if (appcache_factory_) { - appcache_factory_->Clone(pending_factories->pending_appcache_factory() - .InitWithNewPipeAndPassReceiver()); - } - - return pending_factories; -} - -bool URLLoaderFactoryBundle::BypassRedirectChecks() const { - return bypass_redirect_checks_; -} - -void URLLoaderFactoryBundle::Update( - std::unique_ptr<PendingURLLoaderFactoryBundle> pending_factories) { - if (pending_factories->pending_default_factory()) { - default_factory_.reset(); - default_factory_.Bind( - std::move(pending_factories->pending_default_factory())); - } - if (pending_factories->pending_appcache_factory()) { - appcache_factory_.reset(); - appcache_factory_.Bind( - std::move(pending_factories->pending_appcache_factory())); - } - BindPendingRemoteMapToRemoteMap( - &scheme_specific_factories_, - std::move(pending_factories->pending_scheme_specific_factories())); - BindPendingRemoteMapToRemoteMap( - &isolated_world_factories_, - std::move(pending_factories->pending_isolated_world_factories())); - bypass_redirect_checks_ = pending_factories->bypass_redirect_checks(); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/loader/url_loader_throttle.cc b/chromium/src/third_party/blink/common/loader/url_loader_throttle.cc deleted file mode 100644 index 743b751..0000000 --- a/chromium/src/third_party/blink/common/loader/url_loader_throttle.cc +++ /dev/null
@@ -1,89 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/loader/url_loader_throttle.h" - -#include "base/notreached.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "services/network/public/mojom/url_response_head.mojom.h" - -namespace blink { - -void URLLoaderThrottle::Delegate::SetPriority(net::RequestPriority priority) {} -void URLLoaderThrottle::Delegate::UpdateDeferredRequestHeaders( - const net::HttpRequestHeaders& modified_request_headers, - const net::HttpRequestHeaders& modified_cors_exempt_request_headers) {} -void URLLoaderThrottle::Delegate::UpdateDeferredResponseHead( - network::mojom::URLResponseHeadPtr new_response_head) {} -void URLLoaderThrottle::Delegate::PauseReadingBodyFromNet() {} -void URLLoaderThrottle::Delegate::ResumeReadingBodyFromNet() {} - -void URLLoaderThrottle::Delegate::InterceptResponse( - mojo::PendingRemote<network::mojom::URLLoader> new_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient> new_client_receiver, - mojo::PendingRemote<network::mojom::URLLoader>* original_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient>* - original_client_receiver) { - NOTIMPLEMENTED(); -} - -void URLLoaderThrottle::Delegate::RestartWithFlags(int additional_load_flags) { - NOTIMPLEMENTED(); -} - -void URLLoaderThrottle::Delegate::RestartWithURLResetAndFlags( - int additional_load_flags) { - NOTIMPLEMENTED(); -} - -void URLLoaderThrottle::Delegate::RestartWithURLResetAndFlagsNow( - int additional_load_flags) { - NOTIMPLEMENTED(); -} - -void URLLoaderThrottle::Delegate::RestartWithModifiedHeadersNow( - const net::HttpRequestHeaders& modified_headers) { - NOTIMPLEMENTED(); -} - -URLLoaderThrottle::Delegate::~Delegate() {} - -URLLoaderThrottle::~URLLoaderThrottle() {} - -void URLLoaderThrottle::DetachFromCurrentSequence() { - NOTREACHED(); -} - -void URLLoaderThrottle::WillStartRequest(network::ResourceRequest* request, - bool* defer) {} - -void URLLoaderThrottle::WillRedirectRequest( - net::RedirectInfo* redirect_info, - const network::mojom::URLResponseHead& response_head, - bool* defer, - std::vector<std::string>* to_be_removed_request_headers, - net::HttpRequestHeaders* modified_request_headers, - net::HttpRequestHeaders* modified_cors_exempt_request_headers) {} - -void URLLoaderThrottle::WillProcessResponse( - const GURL& response_url, - network::mojom::URLResponseHead* response_head, - bool* defer) {} - -void URLLoaderThrottle::BeforeWillProcessResponse( - const GURL& response_url, - const network::mojom::URLResponseHead& response_head, - bool* defer) {} - -void URLLoaderThrottle::WillOnCompleteWithError( - const network::URLLoaderCompletionStatus& status, - bool* defer) {} - -bool URLLoaderThrottle::makes_unsafe_redirect() { - return false; -} - -URLLoaderThrottle::URLLoaderThrottle() {} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/manifest/OWNERS b/chromium/src/third_party/blink/common/manifest/OWNERS deleted file mode 100644 index aa75e14..0000000 --- a/chromium/src/third_party/blink/common/manifest/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -file://third_party/blink/renderer/modules/manifest/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# Component: Blink>AppManifest
diff --git a/chromium/src/third_party/blink/common/manifest/manifest.cc b/chromium/src/third_party/blink/common/manifest/manifest.cc deleted file mode 100644 index 7c5984a..0000000 --- a/chromium/src/third_party/blink/common/manifest/manifest.cc +++ /dev/null
@@ -1,54 +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 "third_party/blink/public/common/manifest/manifest.h" - -namespace blink { - -Manifest::ImageResource::ImageResource() = default; - -Manifest::ImageResource::ImageResource(const ImageResource& other) = default; - -Manifest::ImageResource::~ImageResource() = default; - -bool Manifest::ImageResource::operator==( - const Manifest::ImageResource& other) const { - return src == other.src && type == other.type && sizes == other.sizes; -} - -Manifest::ShortcutItem::ShortcutItem() = default; - -Manifest::ShortcutItem::~ShortcutItem() = default; - -Manifest::ShareTargetParams::ShareTargetParams() = default; - -Manifest::ShareTargetParams::~ShareTargetParams() = default; - -Manifest::ShareTarget::ShareTarget() = default; - -Manifest::ShareTarget::~ShareTarget() = default; - -Manifest::RelatedApplication::RelatedApplication() = default; - -Manifest::RelatedApplication::~RelatedApplication() = default; - -Manifest::Manifest() = default; - -Manifest::Manifest(const Manifest& other) = default; - -Manifest::~Manifest() = default; - -bool Manifest::IsEmpty() const { - return !name && !short_name && start_url.is_empty() && - display == blink::mojom::DisplayMode::kUndefined && - display_override.empty() && - orientation == device::mojom::ScreenOrientationLockType::DEFAULT && - icons.empty() && shortcuts.empty() && !share_target.has_value() && - related_applications.empty() && file_handlers.empty() && - !prefer_related_applications && !theme_color && !background_color && - !gcm_sender_id && scope.is_empty() && protocol_handlers.empty() && - url_handlers.empty(); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/manifest/manifest_mojom_traits.cc b/chromium/src/third_party/blink/common/manifest/manifest_mojom_traits.cc deleted file mode 100644 index 8b0216c..0000000 --- a/chromium/src/third_party/blink/common/manifest/manifest_mojom_traits.cc +++ /dev/null
@@ -1,287 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/manifest/manifest_mojom_traits.h" - -#include <string> -#include <utility> - -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h" -#include "url/mojom/url_gurl_mojom_traits.h" - -namespace mojo { -namespace { - -// A wrapper around base::Optional<base::string16> so a custom StructTraits -// specialization can enforce maximum string length. -struct TruncatedString16 { - base::Optional<base::string16> string; -}; - -} // namespace - -template <> -struct StructTraits<mojo_base::mojom::String16DataView, TruncatedString16> { - static void SetToNull(TruncatedString16* output) { output->string.reset(); } - - static bool Read(mojo_base::mojom::String16DataView input, - TruncatedString16* output) { - if (input.is_null()) { - output->string.reset(); - return true; - } - mojo::ArrayDataView<uint16_t> buffer_view; - input.GetDataDataView(&buffer_view); - if (buffer_view.size() > 4 * 1024) - return false; - - output->string.emplace(); - return StructTraits<mojo_base::mojom::String16DataView, - base::string16>::Read(input, &output->string.value()); - } -}; - -bool StructTraits<blink::mojom::ManifestDataView, ::blink::Manifest>::Read( - blink::mojom::ManifestDataView data, - ::blink::Manifest* out) { - TruncatedString16 string; - if (!data.ReadName(&string)) - return false; - out->name = std::move(string.string); - - if (!data.ReadShortName(&string)) - return false; - out->short_name = std::move(string.string); - - if (!data.ReadDescription(&string)) - return false; - out->description = std::move(string.string); - - if (!data.ReadGcmSenderId(&string)) - return false; - out->gcm_sender_id = std::move(string.string); - - if (!data.ReadStartUrl(&out->start_url)) - return false; - - if (!data.ReadIcons(&out->icons)) - return false; - - if (!data.ReadScreenshots(&out->screenshots)) - return false; - - if (!data.ReadShortcuts(&out->shortcuts)) - return false; - - if (!data.ReadShareTarget(&out->share_target)) - return false; - - if (!data.ReadFileHandlers(&out->file_handlers)) - return false; - - if (!data.ReadProtocolHandlers(&out->protocol_handlers)) - return false; - - if (!data.ReadUrlHandlers(&out->url_handlers)) - return false; - - if (!data.ReadRelatedApplications(&out->related_applications)) - return false; - - out->prefer_related_applications = data.prefer_related_applications(); - - if (data.has_theme_color()) - out->theme_color = data.theme_color(); - - if (data.has_background_color()) - out->background_color = data.background_color(); - - if (!data.ReadDisplay(&out->display)) - return false; - - if (!data.ReadDisplayOverride(&out->display_override)) - return false; - - if (!data.ReadOrientation(&out->orientation)) - return false; - - if (!data.ReadScope(&out->scope)) - return false; - - if (!data.ReadCaptureLinks(&out->capture_links)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestImageResourceDataView, - ::blink::Manifest::ImageResource>:: - Read(blink::mojom::ManifestImageResourceDataView data, - ::blink::Manifest::ImageResource* out) { - if (!data.ReadSrc(&out->src)) - return false; - - TruncatedString16 string; - if (!data.ReadType(&string)) - return false; - - if (!string.string) - return false; - - out->type = *std::move(string.string); - - if (!data.ReadSizes(&out->sizes)) - return false; - - if (!data.ReadPurpose(&out->purpose)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestShortcutItemDataView, - ::blink::Manifest::ShortcutItem>:: - Read(blink::mojom::ManifestShortcutItemDataView data, - ::blink::Manifest::ShortcutItem* out) { - if (!data.ReadName(&out->name)) - return false; - - TruncatedString16 string; - if (!data.ReadShortName(&string)) - return false; - out->short_name = std::move(string.string); - - if (!data.ReadDescription(&string)) - return false; - out->description = std::move(string.string); - - if (!data.ReadUrl(&out->url)) - return false; - - if (!data.ReadIcons(&out->icons)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestRelatedApplicationDataView, - ::blink::Manifest::RelatedApplication>:: - Read(blink::mojom::ManifestRelatedApplicationDataView data, - ::blink::Manifest::RelatedApplication* out) { - TruncatedString16 string; - if (!data.ReadPlatform(&string)) - return false; - out->platform = std::move(string.string); - - base::Optional<GURL> url; - if (!data.ReadUrl(&url)) - return false; - out->url = std::move(url).value_or(GURL()); - - if (!data.ReadId(&string)) - return false; - out->id = std::move(string.string); - - return !out->url.is_empty() || out->id; -} - -bool StructTraits<blink::mojom::ManifestFileFilterDataView, - ::blink::Manifest::FileFilter>:: - Read(blink::mojom::ManifestFileFilterDataView data, - ::blink::Manifest::FileFilter* out) { - TruncatedString16 name; - if (!data.ReadName(&name)) - return false; - - if (!name.string) - return false; - - out->name = *std::move(name.string); - - if (!data.ReadAccept(&out->accept)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestUrlHandlerDataView, - ::blink::Manifest::UrlHandler>:: - Read(blink::mojom::ManifestUrlHandlerDataView data, - ::blink::Manifest::UrlHandler* out) { - if (!data.ReadOrigin(&out->origin)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestShareTargetParamsDataView, - ::blink::Manifest::ShareTargetParams>:: - Read(blink::mojom::ManifestShareTargetParamsDataView data, - ::blink::Manifest::ShareTargetParams* out) { - TruncatedString16 string; - if (!data.ReadText(&string)) - return false; - out->text = std::move(string.string); - - if (!data.ReadTitle(&string)) - return false; - out->title = std::move(string.string); - - if (!data.ReadUrl(&string)) - return false; - out->url = std::move(string.string); - - if (!data.ReadFiles(&out->files)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestShareTargetDataView, - ::blink::Manifest::ShareTarget>:: - Read(blink::mojom::ManifestShareTargetDataView data, - ::blink::Manifest::ShareTarget* out) { - if (!data.ReadAction(&out->action)) - return false; - - if (!data.ReadMethod(&out->method)) - return false; - - if (!data.ReadEnctype(&out->enctype)) - return false; - - return data.ReadParams(&out->params); -} - -bool StructTraits<blink::mojom::ManifestFileHandlerDataView, - ::blink::Manifest::FileHandler>:: - Read(blink::mojom::ManifestFileHandlerDataView data, - ::blink::Manifest::FileHandler* out) { - if (!data.ReadAction(&out->action)) - return false; - - if (!data.ReadName(&out->name)) - return false; - - if (!data.ReadAccept(&out->accept)) - return false; - - return true; -} - -bool StructTraits<blink::mojom::ManifestProtocolHandlerDataView, - ::blink::Manifest::ProtocolHandler>:: - Read(blink::mojom::ManifestProtocolHandlerDataView data, - ::blink::Manifest::ProtocolHandler* out) { - if (!data.ReadProtocol(&out->protocol)) - return false; - - if (!data.ReadUrl(&out->url)) - return false; - - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/media/OWNERS b/chromium/src/third_party/blink/common/media/OWNERS deleted file mode 100644 index 168af18..0000000 --- a/chromium/src/third_party/blink/common/media/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://media/OWNERS
diff --git a/chromium/src/third_party/blink/common/media/watch_time_reporter.cc b/chromium/src/third_party/blink/common/media/watch_time_reporter.cc deleted file mode 100644 index 3cf5182..0000000 --- a/chromium/src/third_party/blink/common/media/watch_time_reporter.cc +++ /dev/null
@@ -1,689 +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. - -#include "third_party/blink/public/common/media/watch_time_reporter.h" - -#include <numeric> - -#include "base/bind.h" -#include "base/power_monitor/power_monitor.h" -#include "base/time/time.h" -#include "media/base/pipeline_status.h" -#include "media/base/timestamp_constants.h" -#include "media/base/watch_time_keys.h" - -namespace blink { - -// The minimum width and height of videos to report watch time metrics for. -constexpr gfx::Size kMinimumVideoSize = gfx::Size(200, 140); - -static bool IsOnBatteryPower() { - if (base::PowerMonitor::IsInitialized()) - return base::PowerMonitor::IsOnBatteryPower(); - return false; -} - -// Helper function for managing property changes. If the watch time timer is -// running it sets the pending value otherwise it sets the current value and -// then returns true if the component needs finalize. -enum class PropertyAction { kNoActionRequired, kFinalizeRequired }; -template <typename T> -PropertyAction HandlePropertyChange(T new_value, - bool is_timer_running, - WatchTimeComponent<T>* component) { - if (!component) - return PropertyAction::kNoActionRequired; - - if (is_timer_running) - component->SetPendingValue(new_value); - else - component->SetCurrentValue(new_value); - - return component->NeedsFinalize() ? PropertyAction::kFinalizeRequired - : PropertyAction::kNoActionRequired; -} - -WatchTimeReporter::WatchTimeReporter( - media::mojom::PlaybackPropertiesPtr properties, - const gfx::Size& natural_size, - GetMediaTimeCB get_media_time_cb, - GetPipelineStatsCB get_pipeline_stats_cb, - media::mojom::MediaMetricsProvider* provider, - scoped_refptr<base::SequencedTaskRunner> task_runner, - const base::TickClock* tick_clock) - : WatchTimeReporter(std::move(properties), - false /* is_background */, - false /* is_muted */, - natural_size, - std::move(get_media_time_cb), - std::move(get_pipeline_stats_cb), - provider, - task_runner, - tick_clock) {} - -WatchTimeReporter::WatchTimeReporter( - media::mojom::PlaybackPropertiesPtr properties, - bool is_background, - bool is_muted, - const gfx::Size& natural_size, - GetMediaTimeCB get_media_time_cb, - GetPipelineStatsCB get_pipeline_stats_cb, - media::mojom::MediaMetricsProvider* provider, - scoped_refptr<base::SequencedTaskRunner> task_runner, - const base::TickClock* tick_clock) - : properties_(std::move(properties)), - is_background_(is_background), - is_muted_(is_muted), - get_media_time_cb_(std::move(get_media_time_cb)), - get_pipeline_stats_cb_(std::move(get_pipeline_stats_cb)), - reporting_timer_(tick_clock), - natural_size_(natural_size) { - DCHECK(get_media_time_cb_); - DCHECK(get_pipeline_stats_cb_); - DCHECK(properties_->has_audio || properties_->has_video); - DCHECK_EQ(is_background, properties_->is_background); - - // The background reporter receives play/pause events instead of visibility - // changes, so it must always be visible to function correctly. - if (is_background_) - DCHECK(is_visible_); - - // The muted reporter receives play/pause events instead of volume changes, so - // its volume must always be audible to function correctly. - if (is_muted_) - DCHECK_EQ(volume_, 1.0); - - base::PowerMonitor::AddObserver(this); - - provider->AcquireWatchTimeRecorder(properties_->Clone(), - recorder_.BindNewPipeAndPassReceiver()); - - reporting_timer_.SetTaskRunner(task_runner); - - base_component_ = CreateBaseComponent(); - power_component_ = CreatePowerComponent(); - if (!is_background_) { - controls_component_ = CreateControlsComponent(); - if (properties_->has_video) - display_type_component_ = CreateDisplayTypeComponent(); - } - - // If this is a sub-reporter we're done. - if (is_background_ || is_muted_) - return; - - // Background watch time is reported by creating an background only watch time - // reporter which receives play when hidden and pause when shown. This avoids - // unnecessary complexity inside the UpdateWatchTime() for handling this case. - auto prop_copy = properties_.Clone(); - prop_copy->is_background = true; - background_reporter_.reset(new WatchTimeReporter( - std::move(prop_copy), true /* is_background */, false /* is_muted */, - natural_size_, get_media_time_cb_, get_pipeline_stats_cb_, provider, - task_runner, tick_clock)); - - // Muted watch time is only reported for audio+video playback. - if (!properties_->has_video || !properties_->has_audio) - return; - - // Similar to the above, muted watch time is reported by creating a muted only - // watch time reporter which receives play when muted and pause when audible. - prop_copy = properties_.Clone(); - prop_copy->is_muted = true; - muted_reporter_.reset(new WatchTimeReporter( - std::move(prop_copy), false /* is_background */, true /* is_muted */, - natural_size_, get_media_time_cb_, get_pipeline_stats_cb_, provider, - task_runner, tick_clock)); -} - -WatchTimeReporter::~WatchTimeReporter() { - background_reporter_.reset(); - muted_reporter_.reset(); - - // This is our last chance, so finalize now if there's anything remaining. - in_shutdown_ = true; - MaybeFinalizeWatchTime(FinalizeTime::IMMEDIATELY); - base::PowerMonitor::RemoveObserver(this); -} - -void WatchTimeReporter::OnPlaying() { - if (background_reporter_ && !is_visible_) - background_reporter_->OnPlaying(); - if (muted_reporter_ && !volume_) - muted_reporter_->OnPlaying(); - - is_playing_ = true; - is_seeking_ = false; - MaybeStartReportingTimer(get_media_time_cb_.Run()); -} - -void WatchTimeReporter::OnPaused() { - if (background_reporter_) - background_reporter_->OnPaused(); - if (muted_reporter_) - muted_reporter_->OnPaused(); - - is_playing_ = false; - MaybeFinalizeWatchTime(FinalizeTime::ON_NEXT_UPDATE); -} - -void WatchTimeReporter::OnSeeking() { - if (background_reporter_) - background_reporter_->OnSeeking(); - if (muted_reporter_) - muted_reporter_->OnSeeking(); - - // Seek is a special case that does not have hysteresis, when this is called - // the seek is imminent, so finalize the previous playback immediately. - is_seeking_ = true; - MaybeFinalizeWatchTime(FinalizeTime::IMMEDIATELY); -} - -void WatchTimeReporter::OnVolumeChange(double volume) { - if (background_reporter_) - background_reporter_->OnVolumeChange(volume); - - // The muted reporter should never receive volume changes. - DCHECK(!is_muted_); - - const double old_volume = volume_; - volume_ = volume; - - // We're only interesting in transitions in and out of the muted state. - if (!old_volume && volume) { - if (muted_reporter_) - muted_reporter_->OnPaused(); - MaybeStartReportingTimer(get_media_time_cb_.Run()); - } else if (old_volume && !volume_) { - if (muted_reporter_ && is_playing_) - muted_reporter_->OnPlaying(); - MaybeFinalizeWatchTime(FinalizeTime::ON_NEXT_UPDATE); - } -} - -void WatchTimeReporter::OnShown() { - // The background reporter should never receive visibility changes. - DCHECK(!is_background_); - - if (background_reporter_) - background_reporter_->OnPaused(); - if (muted_reporter_) - muted_reporter_->OnShown(); - - is_visible_ = true; - MaybeStartReportingTimer(get_media_time_cb_.Run()); -} - -void WatchTimeReporter::OnHidden() { - // The background reporter should never receive visibility changes. - DCHECK(!is_background_); - - if (background_reporter_ && is_playing_) - background_reporter_->OnPlaying(); - if (muted_reporter_) - muted_reporter_->OnHidden(); - - is_visible_ = false; - MaybeFinalizeWatchTime(FinalizeTime::ON_NEXT_UPDATE); -} - -void WatchTimeReporter::OnError(media::PipelineStatus status) { - // Since playback should have stopped by this point, go ahead and send the - // error directly instead of on the next timer tick. It won't be recorded - // until finalization anyways. - recorder_->OnError(status); - if (background_reporter_) - background_reporter_->OnError(status); - if (muted_reporter_) - muted_reporter_->OnError(status); -} - -void WatchTimeReporter::OnUnderflow() { - if (background_reporter_) - background_reporter_->OnUnderflow(); - if (muted_reporter_) - muted_reporter_->OnUnderflow(); - - if (!reporting_timer_.IsRunning()) - return; - - if (!pending_underflow_events_.empty()) - DCHECK_NE(pending_underflow_events_.back().duration, media::kNoTimestamp); - - // In the event of a pending finalize, we don't want to count underflow events - // that occurred after the finalize time. Yet if the finalize is canceled we - // want to ensure they are all recorded. - pending_underflow_events_.push_back( - {false, get_media_time_cb_.Run(), media::kNoTimestamp}); -} - -void WatchTimeReporter::OnUnderflowComplete(base::TimeDelta elapsed) { - if (background_reporter_) - background_reporter_->OnUnderflowComplete(elapsed); - if (muted_reporter_) - muted_reporter_->OnUnderflowComplete(elapsed); - - if (!reporting_timer_.IsRunning()) - return; - - // Drop this underflow completion if we don't have a corresponding underflow - // start event; this can happen if a finalize occurs between the underflow and - // the completion. - if (pending_underflow_events_.empty()) - return; - - // There should only ever be one outstanding underflow, so stick the duration - // in the last underflow event. - DCHECK_EQ(pending_underflow_events_.back().duration, media::kNoTimestamp); - pending_underflow_events_.back().duration = elapsed; -} - -void WatchTimeReporter::OnNativeControlsEnabled() { - OnNativeControlsChanged(true); -} - -void WatchTimeReporter::OnNativeControlsDisabled() { - OnNativeControlsChanged(false); -} - -void WatchTimeReporter::OnDisplayTypeInline() { - OnDisplayTypeChanged(DisplayType::kInline); -} - -void WatchTimeReporter::OnDisplayTypeFullscreen() { - OnDisplayTypeChanged(DisplayType::kFullscreen); -} - -void WatchTimeReporter::OnDisplayTypePictureInPicture() { - OnDisplayTypeChanged(DisplayType::kPictureInPicture); -} - -void WatchTimeReporter::UpdateSecondaryProperties( - media::mojom::SecondaryPlaybackPropertiesPtr secondary_properties) { - // Flush any unrecorded watch time before updating the secondary properties to - // ensure the UKM record is finalized with up-to-date watch time information. - if (reporting_timer_.IsRunning()) - RecordWatchTime(); - - recorder_->UpdateSecondaryProperties(secondary_properties.Clone()); - if (background_reporter_) { - background_reporter_->UpdateSecondaryProperties( - secondary_properties.Clone()); - } - if (muted_reporter_) - muted_reporter_->UpdateSecondaryProperties(secondary_properties.Clone()); - - // A change in resolution may affect ShouldReportingTimerRun(). - bool original_should_run = ShouldReportingTimerRun(); - natural_size_ = secondary_properties->natural_size; - bool should_run = ShouldReportingTimerRun(); - if (original_should_run != should_run) { - if (should_run) { - MaybeStartReportingTimer(get_media_time_cb_.Run()); - } else { - MaybeFinalizeWatchTime(FinalizeTime::ON_NEXT_UPDATE); - } - } -} - -void WatchTimeReporter::SetAutoplayInitiated(bool autoplay_initiated) { - recorder_->SetAutoplayInitiated(autoplay_initiated); - if (background_reporter_) - background_reporter_->SetAutoplayInitiated(autoplay_initiated); - if (muted_reporter_) - muted_reporter_->SetAutoplayInitiated(autoplay_initiated); -} - -void WatchTimeReporter::OnDurationChanged(base::TimeDelta duration) { - recorder_->OnDurationChanged(duration); - if (background_reporter_) - background_reporter_->OnDurationChanged(duration); - if (muted_reporter_) - muted_reporter_->OnDurationChanged(duration); -} - -void WatchTimeReporter::OnPowerStateChange(bool on_battery_power) { - if (HandlePropertyChange<bool>(on_battery_power, reporting_timer_.IsRunning(), - power_component_.get()) == - PropertyAction::kFinalizeRequired) { - RestartTimerForHysteresis(); - } -} - -void WatchTimeReporter::OnNativeControlsChanged(bool has_native_controls) { - if (muted_reporter_) - muted_reporter_->OnNativeControlsChanged(has_native_controls); - - if (HandlePropertyChange<bool>( - has_native_controls, reporting_timer_.IsRunning(), - controls_component_.get()) == PropertyAction::kFinalizeRequired) { - RestartTimerForHysteresis(); - } -} - -void WatchTimeReporter::OnDisplayTypeChanged(DisplayType display_type) { - if (muted_reporter_) - muted_reporter_->OnDisplayTypeChanged(display_type); - - if (HandlePropertyChange<DisplayType>( - display_type, reporting_timer_.IsRunning(), - display_type_component_.get()) == PropertyAction::kFinalizeRequired) { - RestartTimerForHysteresis(); - } -} - -bool WatchTimeReporter::ShouldReportWatchTime() const { - // Report listen time or watch time for videos of sufficient size. - return properties_->has_video - ? (natural_size_.height() >= kMinimumVideoSize.height() && - natural_size_.width() >= kMinimumVideoSize.width()) - : properties_->has_audio; -} - -bool WatchTimeReporter::ShouldReportingTimerRun() const { - // TODO(dalecurtis): We should only consider |volume_| when there is actually - // an audio track; requires updating lots of tests to fix. - return ShouldReportWatchTime() && is_playing_ && volume_ && is_visible_ && - !in_shutdown_ && !is_seeking_ && has_valid_start_timestamp_; -} - -void WatchTimeReporter::MaybeStartReportingTimer( - base::TimeDelta start_timestamp) { - DCHECK_GE(start_timestamp, base::TimeDelta()); - - // It's possible for |current_time| to be kInfiniteDuration here if the page - // seeks to kInfiniteDuration (2**64 - 1) when Duration() is infinite. There - // is no possible elapsed watch time when this occurs, so don't start the - // WatchTimeReporter at this time. If a later seek puts us earlier in the - // stream this method will be called again after OnSeeking(). - has_valid_start_timestamp_ = start_timestamp != media::kInfiniteDuration; - - // Don't start the timer if our state indicates we shouldn't; this check is - // important since the various event handlers do not have to care about the - // state of other events. - const bool should_start = ShouldReportingTimerRun(); - if (reporting_timer_.IsRunning()) { - base_component_->SetPendingValue(should_start); - return; - } - - base_component_->SetCurrentValue(should_start); - if (!should_start) - return; - - if (properties_->has_video) { - initial_stats_ = get_pipeline_stats_cb_.Run(); - last_stats_ = media::PipelineStatistics(); - } - - ResetUnderflowState(); - base_component_->OnReportingStarted(start_timestamp); - power_component_->OnReportingStarted(start_timestamp); - - if (controls_component_) - controls_component_->OnReportingStarted(start_timestamp); - if (display_type_component_) - display_type_component_->OnReportingStarted(start_timestamp); - - reporting_timer_.Start(FROM_HERE, reporting_interval_, this, - &WatchTimeReporter::UpdateWatchTime); -} - -void WatchTimeReporter::MaybeFinalizeWatchTime(FinalizeTime finalize_time) { - if (HandlePropertyChange<bool>( - ShouldReportingTimerRun(), reporting_timer_.IsRunning(), - base_component_.get()) == PropertyAction::kNoActionRequired) { - return; - } - - if (finalize_time == FinalizeTime::IMMEDIATELY) { - UpdateWatchTime(); - return; - } - - // Always restart the timer when finalizing, so that we allow for the full - // length of |kReportingInterval| to elapse for hysteresis purposes. - DCHECK_EQ(finalize_time, FinalizeTime::ON_NEXT_UPDATE); - RestartTimerForHysteresis(); -} - -void WatchTimeReporter::RestartTimerForHysteresis() { - // Restart the reporting timer so the full hysteresis is afforded. - DCHECK(reporting_timer_.IsRunning()); - reporting_timer_.Start(FROM_HERE, reporting_interval_, this, - &WatchTimeReporter::UpdateWatchTime); -} - -void WatchTimeReporter::RecordWatchTime() { - // If we're finalizing, use the media time at time of finalization. - const base::TimeDelta current_timestamp = - base_component_->NeedsFinalize() ? base_component_->end_timestamp() - : get_media_time_cb_.Run(); - - // Pass along any underflow events which have occurred since the last report. - if (!pending_underflow_events_.empty()) { - const int last_underflow_count = total_underflow_count_; - const int last_completed_underflow_count = total_completed_underflow_count_; - - for (auto& ufe : pending_underflow_events_) { - // Since the underflow occurred after finalize, ignore the event and mark - // it for deletion. - if (ufe.timestamp > current_timestamp) { - ufe.reported = true; - ufe.duration = base::TimeDelta(); - continue; - } - - if (!ufe.reported) { - ufe.reported = true; - ++total_underflow_count_; - } - - // Drop any rebuffer completions that took more than a minute. For our - // purposes these are considered as timeouts. We want a maximum since - // rebuffer duration is in real time and not media time, which means if - // the rebuffer spans a suspend/resume the time can be arbitrarily long. - constexpr base::TimeDelta kMaximumRebufferDuration = - base::TimeDelta::FromMinutes(1); - if (ufe.duration != media::kNoTimestamp && - ufe.duration <= kMaximumRebufferDuration) { - ++total_completed_underflow_count_; - total_underflow_duration_ += ufe.duration; - } - } - - base::EraseIf(pending_underflow_events_, [](const UnderflowEvent& ufe) { - return ufe.reported && ufe.duration != media::kNoTimestamp; - }); - - if (last_underflow_count != total_underflow_count_) - recorder_->UpdateUnderflowCount(total_underflow_count_); - if (last_completed_underflow_count != total_completed_underflow_count_) { - recorder_->UpdateUnderflowDuration(total_completed_underflow_count_, - total_underflow_duration_); - } - } - - if (properties_->has_video) { - auto stats = get_pipeline_stats_cb_.Run(); - DCHECK_GE(stats.video_frames_decoded, initial_stats_.video_frames_decoded); - DCHECK_GE(stats.video_frames_dropped, initial_stats_.video_frames_dropped); - - // Offset the stats based on where they were when we started reporting. - stats.video_frames_decoded -= initial_stats_.video_frames_decoded; - stats.video_frames_dropped -= initial_stats_.video_frames_dropped; - - // Only send updates. - if (last_stats_.video_frames_decoded != stats.video_frames_decoded || - last_stats_.video_frames_dropped != stats.video_frames_dropped) { - recorder_->UpdateVideoDecodeStats(stats.video_frames_decoded, - stats.video_frames_dropped); - last_stats_ = stats; - } - } - - // Record watch time for all components. - base_component_->RecordWatchTime(current_timestamp); - power_component_->RecordWatchTime(current_timestamp); - if (display_type_component_) - display_type_component_->RecordWatchTime(current_timestamp); - if (controls_component_) - controls_component_->RecordWatchTime(current_timestamp); - - // Update the last timestamp with the current timestamp. - recorder_->OnCurrentTimestampChanged(current_timestamp); -} - -void WatchTimeReporter::UpdateWatchTime() { - // First record watch time. - RecordWatchTime(); - - // Second, process any pending finalize events. - std::vector<media::WatchTimeKey> keys_to_finalize; - if (power_component_->NeedsFinalize()) - power_component_->Finalize(&keys_to_finalize); - if (display_type_component_ && display_type_component_->NeedsFinalize()) - display_type_component_->Finalize(&keys_to_finalize); - if (controls_component_ && controls_component_->NeedsFinalize()) - controls_component_->Finalize(&keys_to_finalize); - - // Then finalize the base component. - if (!base_component_->NeedsFinalize()) { - if (!keys_to_finalize.empty()) - recorder_->FinalizeWatchTime(keys_to_finalize); - return; - } - - // Always send finalize, even if we don't currently have any data, it's - // harmless to send since nothing will be logged if we've already finalized. - base_component_->Finalize(&keys_to_finalize); - recorder_->FinalizeWatchTime({}); - - // Stop the timer if this is supposed to be our last tick. - ResetUnderflowState(); - reporting_timer_.Stop(); -} - -void WatchTimeReporter::ResetUnderflowState() { - total_underflow_count_ = total_completed_underflow_count_ = 0; - total_underflow_duration_ = base::TimeDelta(); - pending_underflow_events_.clear(); -} - -#define NORMAL_KEY(key) \ - ((properties_->has_video && properties_->has_audio) \ - ? (is_background_ \ - ? media::WatchTimeKey::kAudioVideoBackground##key \ - : (is_muted_ ? media::WatchTimeKey::kAudioVideoMuted##key \ - : media::WatchTimeKey::kAudioVideo##key)) \ - : properties_->has_video \ - ? (is_background_ ? media::WatchTimeKey::kVideoBackground##key \ - : media::WatchTimeKey::kVideo##key) \ - : (is_background_ ? media::WatchTimeKey::kAudioBackground##key \ - : media::WatchTimeKey::kAudio##key)) - -std::unique_ptr<WatchTimeComponent<bool>> -WatchTimeReporter::CreateBaseComponent() { - std::vector<media::WatchTimeKey> keys_to_finalize; - keys_to_finalize.emplace_back(NORMAL_KEY(All)); - if (properties_->is_mse) - keys_to_finalize.emplace_back(NORMAL_KEY(Mse)); - else - keys_to_finalize.emplace_back(NORMAL_KEY(Src)); - - if (properties_->is_eme) - keys_to_finalize.emplace_back(NORMAL_KEY(Eme)); - - if (properties_->is_embedded_media_experience) - keys_to_finalize.emplace_back(NORMAL_KEY(EmbeddedExperience)); - - return std::make_unique<WatchTimeComponent<bool>>( - false, std::move(keys_to_finalize), - WatchTimeComponent<bool>::ValueToKeyCB(), get_media_time_cb_, - recorder_.get()); -} - -std::unique_ptr<WatchTimeComponent<bool>> -WatchTimeReporter::CreatePowerComponent() { - std::vector<media::WatchTimeKey> keys_to_finalize{NORMAL_KEY(Battery), - NORMAL_KEY(Ac)}; - - return std::make_unique<WatchTimeComponent<bool>>( - IsOnBatteryPower(), std::move(keys_to_finalize), - base::BindRepeating(&WatchTimeReporter::GetPowerKey, - base::Unretained(this)), - get_media_time_cb_, recorder_.get()); -} - -media::WatchTimeKey WatchTimeReporter::GetPowerKey(bool is_on_battery_power) { - return is_on_battery_power ? NORMAL_KEY(Battery) : NORMAL_KEY(Ac); -} -#undef NORMAL_KEY - -#define FOREGROUND_KEY(key) \ - ((properties_->has_video && properties_->has_audio) \ - ? (is_muted_ ? media::WatchTimeKey::kAudioVideoMuted##key \ - : media::WatchTimeKey::kAudioVideo##key) \ - : properties_->has_audio ? media::WatchTimeKey::kAudio##key \ - : media::WatchTimeKey::kVideo##key) - -std::unique_ptr<WatchTimeComponent<bool>> -WatchTimeReporter::CreateControlsComponent() { - DCHECK(!is_background_); - - std::vector<media::WatchTimeKey> keys_to_finalize{ - FOREGROUND_KEY(NativeControlsOn), FOREGROUND_KEY(NativeControlsOff)}; - - return std::make_unique<WatchTimeComponent<bool>>( - false, std::move(keys_to_finalize), - base::BindRepeating(&WatchTimeReporter::GetControlsKey, - base::Unretained(this)), - get_media_time_cb_, recorder_.get()); -} - -media::WatchTimeKey WatchTimeReporter::GetControlsKey( - bool has_native_controls) { - return has_native_controls ? FOREGROUND_KEY(NativeControlsOn) - : FOREGROUND_KEY(NativeControlsOff); -} - -#undef FOREGROUND_KEY - -#define DISPLAY_TYPE_KEY(key) \ - (properties_->has_audio \ - ? (is_muted_ ? media::WatchTimeKey::kAudioVideoMuted##key \ - : media::WatchTimeKey::kAudioVideo##key) \ - : media::WatchTimeKey::kVideo##key) - -std::unique_ptr<WatchTimeComponent<DisplayType>> -WatchTimeReporter::CreateDisplayTypeComponent() { - DCHECK(properties_->has_video); - DCHECK(!is_background_); - - std::vector<media::WatchTimeKey> keys_to_finalize{ - DISPLAY_TYPE_KEY(DisplayInline), DISPLAY_TYPE_KEY(DisplayFullscreen), - DISPLAY_TYPE_KEY(DisplayPictureInPicture)}; - - return std::make_unique<WatchTimeComponent<DisplayType>>( - DisplayType::kInline, std::move(keys_to_finalize), - base::BindRepeating(&WatchTimeReporter::GetDisplayTypeKey, - base::Unretained(this)), - get_media_time_cb_, recorder_.get()); -} - -media::WatchTimeKey WatchTimeReporter::GetDisplayTypeKey( - DisplayType display_type) { - switch (display_type) { - case DisplayType::kInline: - return DISPLAY_TYPE_KEY(DisplayInline); - case DisplayType::kFullscreen: - return DISPLAY_TYPE_KEY(DisplayFullscreen); - case DisplayType::kPictureInPicture: - return DISPLAY_TYPE_KEY(DisplayPictureInPicture); - } -} - -#undef DISPLAY_TYPE_KEY - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/mediastream/OWNERS b/chromium/src/third_party/blink/common/mediastream/OWNERS deleted file mode 100644 index 7653ee4..0000000 --- a/chromium/src/third_party/blink/common/mediastream/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -guidou@chromium.org -hbos@chromium.org - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/mediastream/media_stream_mojom_traits.cc b/chromium/src/third_party/blink/common/mediastream/media_stream_mojom_traits.cc deleted file mode 100644 index 43f2f2d..0000000 --- a/chromium/src/third_party/blink/common/mediastream/media_stream_mojom_traits.cc +++ /dev/null
@@ -1,76 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/mediastream/media_stream_mojom_traits.h" - -#include "base/check_op.h" -#include "media/base/ipc/media_param_traits.h" -#include "media/capture/mojom/video_capture_types.mojom.h" -#include "media/capture/mojom/video_capture_types_mojom_traits.h" -#include "media/mojo/mojom/display_media_information.mojom.h" -#include "mojo/public/cpp/base/unguessable_token_mojom_traits.h" - -namespace mojo { - -// static -bool StructTraits<blink::mojom::MediaStreamDeviceDataView, - blink::MediaStreamDevice>:: - Read(blink::mojom::MediaStreamDeviceDataView input, - blink::MediaStreamDevice* out) { - if (!input.ReadType(&out->type)) - return false; - if (!input.ReadId(&out->id)) - return false; - if (!input.ReadVideoFacing(&out->video_facing)) - return false; - if (!input.ReadGroupId(&out->group_id)) - return false; - if (!input.ReadMatchedOutputDeviceId(&out->matched_output_device_id)) - return false; - if (!input.ReadName(&out->name)) - return false; - if (!input.ReadInput(&out->input)) - return false; - base::Optional<base::UnguessableToken> session_id; - if (input.ReadSessionId(&session_id)) { - out->set_session_id(session_id ? *session_id : base::UnguessableToken()); - } else { - return false; - } - if (!input.ReadDisplayMediaInfo(&out->display_media_info)) - return false; - return true; -} - -// static -bool StructTraits<blink::mojom::TrackControlsDataView, blink::TrackControls>:: - Read(blink::mojom::TrackControlsDataView input, blink::TrackControls* out) { - out->requested = input.requested(); - if (!input.ReadStreamType(&out->stream_type)) - return false; - if (!input.ReadDeviceId(&out->device_id)) - return false; - return true; -} - -// static -bool StructTraits<blink::mojom::StreamControlsDataView, blink::StreamControls>:: - Read(blink::mojom::StreamControlsDataView input, - blink::StreamControls* out) { - if (!input.ReadAudio(&out->audio)) - return false; - if (!input.ReadVideo(&out->video)) - return false; -#if DCHECK_IS_ON() - if (input.hotword_enabled() || input.disable_local_echo()) - DCHECK(out->audio.requested); -#endif - out->hotword_enabled = input.hotword_enabled(); - out->disable_local_echo = input.disable_local_echo(); - out->request_pan_tilt_zoom_permission = - input.request_pan_tilt_zoom_permission(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/mediastream/media_stream_request.cc b/chromium/src/third_party/blink/common/mediastream/media_stream_request.cc deleted file mode 100644 index fb49c98..0000000 --- a/chromium/src/third_party/blink/common/mediastream/media_stream_request.cc +++ /dev/null
@@ -1,146 +0,0 @@ -// Copyright (c) 2012 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 "third_party/blink/public/common/mediastream/media_stream_request.h" - -#include "base/check.h" -#include "build/build_config.h" - -namespace blink { - -bool IsAudioInputMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE || - type == mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE || - type == mojom::MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE || - type == mojom::MediaStreamType::DISPLAY_AUDIO_CAPTURE); -} - -bool IsVideoInputMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE || - type == mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE || - type == mojom::MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE || - type == mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE || - type == mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB); -} - -bool IsScreenCaptureMediaType(mojom::MediaStreamType type) { - return IsDesktopCaptureMediaType(type) || IsTabCaptureMediaType(type); -} - -bool IsVideoScreenCaptureMediaType(mojom::MediaStreamType type) { - return IsVideoDesktopCaptureMediaType(type) || - type == mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE; -} - -bool IsDesktopCaptureMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::GUM_DESKTOP_AUDIO_CAPTURE || - IsVideoDesktopCaptureMediaType(type)); -} - -bool IsVideoDesktopCaptureMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE || - type == mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB || - type == mojom::MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE); -} - -bool IsTabCaptureMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::GUM_TAB_AUDIO_CAPTURE || - type == mojom::MediaStreamType::GUM_TAB_VIDEO_CAPTURE || - type == mojom::MediaStreamType::DISPLAY_VIDEO_CAPTURE_THIS_TAB); -} - -bool IsDeviceMediaType(mojom::MediaStreamType type) { - return (type == mojom::MediaStreamType::DEVICE_AUDIO_CAPTURE || - type == mojom::MediaStreamType::DEVICE_VIDEO_CAPTURE); -} - -MediaStreamDevice::MediaStreamDevice() - : type(mojom::MediaStreamType::NO_SERVICE), - video_facing(media::MEDIA_VIDEO_FACING_NONE) {} - -MediaStreamDevice::MediaStreamDevice(mojom::MediaStreamType type, - const std::string& id, - const std::string& name) - : type(type), - id(id), - video_facing(media::MEDIA_VIDEO_FACING_NONE), - name(name) {} - -MediaStreamDevice::MediaStreamDevice( - mojom::MediaStreamType type, - const std::string& id, - const std::string& name, - const media::VideoCaptureControlSupport& control_support, - media::VideoFacingMode facing, - const base::Optional<std::string>& group_id) - : type(type), - id(id), - video_control_support(control_support), - video_facing(facing), - group_id(group_id), - name(name) {} - -MediaStreamDevice::MediaStreamDevice(mojom::MediaStreamType type, - const std::string& id, - const std::string& name, - int sample_rate, - int channel_layout, - int frames_per_buffer) - : type(type), - id(id), - video_facing(media::MEDIA_VIDEO_FACING_NONE), - name(name), - input(media::AudioParameters::AUDIO_FAKE, - static_cast<media::ChannelLayout>(channel_layout), - sample_rate, - frames_per_buffer) { - DCHECK(input.IsValid()); -} - -MediaStreamDevice::MediaStreamDevice(const MediaStreamDevice& other) - : type(other.type), - id(other.id), - video_control_support(other.video_control_support), - video_facing(other.video_facing), - group_id(other.group_id), - matched_output_device_id(other.matched_output_device_id), - name(other.name), - input(other.input), - session_id_(other.session_id_) { - DCHECK(!session_id_.has_value() || !session_id_->is_empty()); - if (other.display_media_info.has_value()) - display_media_info = other.display_media_info->Clone(); -} - -MediaStreamDevice::~MediaStreamDevice() = default; - -MediaStreamDevice& MediaStreamDevice::operator=( - const MediaStreamDevice& other) { - if (&other == this) - return *this; - type = other.type; - id = other.id; - video_control_support = other.video_control_support; - video_facing = other.video_facing; - group_id = other.group_id; - matched_output_device_id = other.matched_output_device_id; - name = other.name; - input = other.input; - session_id_ = other.session_id_; - DCHECK(!session_id_.has_value() || !session_id_->is_empty()); - if (other.display_media_info.has_value()) - display_media_info = other.display_media_info->Clone(); - return *this; -} - -bool MediaStreamDevice::IsSameDevice( - const MediaStreamDevice& other_device) const { - return type == other_device.type && name == other_device.name && - id == other_device.id && - input.sample_rate() == other_device.input.sample_rate() && - input.channel_layout() == other_device.input.channel_layout() && - session_id_ == other_device.session_id_; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/messaging/OWNERS b/chromium/src/third_party/blink/common/messaging/OWNERS deleted file mode 100644 index 632fec4..0000000 --- a/chromium/src/third_party/blink/common/messaging/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -mek@chromium.org -jbroman@chromium.org - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/messaging/cloneable_message_mojom_traits.cc b/chromium/src/third_party/blink/common/messaging/cloneable_message_mojom_traits.cc deleted file mode 100644 index 64d0f8f..0000000 --- a/chromium/src/third_party/blink/common/messaging/cloneable_message_mojom_traits.cc +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/messaging/cloneable_message_mojom_traits.h" - -#include "base/containers/span.h" -#include "mojo/public/cpp/base/big_buffer_mojom_traits.h" - -namespace mojo { - -mojo_base::BigBufferView StructTraits< - blink::mojom::CloneableMessage::DataView, - blink::CloneableMessage>::encoded_message(blink::CloneableMessage& input) { - return mojo_base::BigBufferView(input.encoded_message); -} - -bool StructTraits<blink::mojom::CloneableMessage::DataView, - blink::CloneableMessage>:: - Read(blink::mojom::CloneableMessage::DataView data, - blink::CloneableMessage* out) { - mojo_base::BigBufferView message_view; - base::Optional<base::UnguessableToken> locked_agent_cluster_id; - if (!data.ReadEncodedMessage(&message_view) || !data.ReadBlobs(&out->blobs) || - !data.ReadLockedAgentClusterId(&locked_agent_cluster_id) || - !data.ReadSenderOrigin(&out->sender_origin) || - !data.ReadFileSystemAccessTokens(&out->file_system_access_tokens)) { - return false; - } - - auto message_bytes = message_view.data(); - out->owned_encoded_message = {message_bytes.begin(), message_bytes.end()}; - out->encoded_message = out->owned_encoded_message; - out->stack_trace_id = data.stack_trace_id(); - out->stack_trace_debugger_id_first = data.stack_trace_debugger_id_first(); - out->stack_trace_debugger_id_second = data.stack_trace_debugger_id_second(); - out->stack_trace_should_pause = data.stack_trace_should_pause(); - out->locked_agent_cluster_id = locked_agent_cluster_id; - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/messaging/string_message_codec.cc b/chromium/src/third_party/blink/common/messaging/string_message_codec.cc deleted file mode 100644 index f9ae591..0000000 --- a/chromium/src/third_party/blink/common/messaging/string_message_codec.cc +++ /dev/null
@@ -1,148 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/messaging/string_message_codec.h" - -#include <vector> - -#include "base/containers/buffer_iterator.h" -#include "base/logging.h" - -namespace blink { -namespace { - -const uint32_t kVarIntShift = 7; -const uint32_t kVarIntMask = (1 << kVarIntShift) - 1; - -const uint8_t kVersionTag = 0xFF; -const uint8_t kPaddingTag = '\0'; -const uint8_t kOneByteStringTag = '"'; -const uint8_t kTwoByteStringTag = 'c'; - -const uint32_t kVersion = 10; - -static size_t BytesNeededForUint32(uint32_t value) { - size_t result = 0; - do { - result++; - value >>= kVarIntShift; - } while (value); - return result; -} - -void WriteUint8(uint8_t value, std::vector<uint8_t>* buffer) { - buffer->push_back(value); -} - -void WriteUint32(uint32_t value, std::vector<uint8_t>* buffer) { - for (;;) { - uint8_t b = (value & kVarIntMask); - value >>= kVarIntShift; - if (!value) { - WriteUint8(b, buffer); - break; - } - WriteUint8(b | (1 << kVarIntShift), buffer); - } -} - -void WriteBytes(const char* bytes, - size_t num_bytes, - std::vector<uint8_t>* buffer) { - buffer->insert(buffer->end(), bytes, bytes + num_bytes); -} - -bool ReadUint8(base::BufferIterator<const uint8_t>& iter, uint8_t* value) { - if (const uint8_t* ptr = iter.Object<uint8_t>()) { - *value = *ptr; - return true; - } - return false; -} - -bool ReadUint32(base::BufferIterator<const uint8_t>& iter, uint32_t* value) { - *value = 0; - uint8_t current_byte; - int shift = 0; - do { - if (!ReadUint8(iter, ¤t_byte)) - return false; - - *value |= (static_cast<uint32_t>(current_byte & kVarIntMask) << shift); - shift += kVarIntShift; - } while (current_byte & (1 << kVarIntShift)); - return true; -} - -bool ContainsOnlyLatin1(const base::string16& data) { - base::char16 x = 0; - for (base::char16 c : data) - x |= c; - return !(x & 0xFF00); -} - -} // namespace - -std::vector<uint8_t> EncodeStringMessage(const base::string16& data) { - std::vector<uint8_t> buffer; - WriteUint8(kVersionTag, &buffer); - WriteUint32(kVersion, &buffer); - - if (ContainsOnlyLatin1(data)) { - std::string data_latin1(data.begin(), data.end()); - WriteUint8(kOneByteStringTag, &buffer); - WriteUint32(data_latin1.size(), &buffer); - WriteBytes(data_latin1.c_str(), data_latin1.size(), &buffer); - } else { - size_t num_bytes = data.size() * sizeof(base::char16); - if ((buffer.size() + 1 + BytesNeededForUint32(num_bytes)) & 1) - WriteUint8(kPaddingTag, &buffer); - WriteUint8(kTwoByteStringTag, &buffer); - WriteUint32(num_bytes, &buffer); - WriteBytes(reinterpret_cast<const char*>(data.data()), num_bytes, &buffer); - } - - return buffer; -} - -bool DecodeStringMessage(base::span<const uint8_t> encoded_data, - base::string16* result) { - base::BufferIterator<const uint8_t> iter(encoded_data); - uint8_t tag; - - // Discard any leading version and padding tags. - // There may be more than one version, due to Blink and V8 having separate - // version tags. - do { - if (!ReadUint8(iter, &tag)) - return false; - uint32_t version; - if (tag == kVersionTag && !ReadUint32(iter, &version)) - return false; - } while (tag == kVersionTag || tag == kPaddingTag); - - switch (tag) { - case kOneByteStringTag: { - uint32_t num_bytes; - if (!ReadUint32(iter, &num_bytes)) - return false; - auto span = iter.Span<char>(num_bytes / sizeof(char)); - result->assign(span.begin(), span.end()); - return span.size_bytes() == num_bytes; - } - case kTwoByteStringTag: { - uint32_t num_bytes; - if (!ReadUint32(iter, &num_bytes)) - return false; - auto span = iter.Span<char16_t>(num_bytes / sizeof(char16_t)); - result->assign(span.begin(), span.end()); - return span.size_bytes() == num_bytes; - } - } - - DLOG(WARNING) << "Unexpected tag: " << tag; - return false; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/messaging/string_message_codec_unittest.cc b/chromium/src/third_party/blink/common/messaging/string_message_codec_unittest.cc deleted file mode 100644 index aceacbe..0000000 --- a/chromium/src/third_party/blink/common/messaging/string_message_codec_unittest.cc +++ /dev/null
@@ -1,148 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/messaging/string_message_codec.h" - -#include "base/strings/utf_string_conversions.h" -#include "base/test/task_environment.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "v8/include/v8.h" - -namespace blink { -namespace { - -base::string16 DecodeWithV8(const std::vector<uint8_t>& encoded) { - base::test::TaskEnvironment task_environment; - base::string16 result; - - v8::Isolate::CreateParams params; - params.array_buffer_allocator = - v8::ArrayBuffer::Allocator::NewDefaultAllocator(); - v8::Isolate* isolate = v8::Isolate::New(params); - { - v8::HandleScope scope(isolate); - v8::TryCatch try_catch(isolate); - - v8::Local<v8::Context> context = v8::Context::New(isolate); - - v8::ValueDeserializer deserializer(isolate, encoded.data(), encoded.size()); - deserializer.SetSupportsLegacyWireFormat(true); - - EXPECT_TRUE(deserializer.ReadHeader(context).ToChecked()); - - v8::Local<v8::Value> value = - deserializer.ReadValue(context).ToLocalChecked(); - v8::Local<v8::String> str = value->ToString(context).ToLocalChecked(); - - result.resize(str->Length()); - str->Write(isolate, reinterpret_cast<uint16_t*>(&result[0]), 0, - result.size()); - } - isolate->Dispose(); - delete params.array_buffer_allocator; - - return result; -} - -std::vector<uint8_t> EncodeWithV8(const base::string16& message) { - base::test::TaskEnvironment task_environment; - std::vector<uint8_t> result; - - v8::Isolate::CreateParams params; - params.array_buffer_allocator = - v8::ArrayBuffer::Allocator::NewDefaultAllocator(); - v8::Isolate* isolate = v8::Isolate::New(params); - { - v8::HandleScope scope(isolate); - v8::TryCatch try_catch(isolate); - - v8::Local<v8::Context> context = v8::Context::New(isolate); - - v8::Local<v8::String> message_as_value = - v8::String::NewFromTwoByte( - isolate, reinterpret_cast<const uint16_t*>(message.data()), - v8::NewStringType::kNormal, message.size()) - .ToLocalChecked(); - - v8::ValueSerializer serializer(isolate); - serializer.WriteHeader(); - EXPECT_TRUE(serializer.WriteValue(context, message_as_value).ToChecked()); - - std::pair<uint8_t*, size_t> buffer = serializer.Release(); - result = std::vector<uint8_t>(buffer.first, buffer.first + buffer.second); - free(buffer.first); - } - isolate->Dispose(); - delete params.array_buffer_allocator; - - return result; -} - -TEST(StringMessageCodecTest, SelfTest_ASCII) { - base::string16 message = base::ASCIIToUTF16("hello"); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeStringMessage(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, SelfTest_NonASCII) { - base::string16 message = base::WideToUTF16(L"hello \u263A"); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeStringMessage(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, SelfTest_NonASCIILongEnoughToForcePadding) { - base::string16 message(200, 0x263A); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeStringMessage(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, SelfToV8Test_ASCII) { - base::string16 message = base::ASCIIToUTF16("hello"); - EXPECT_EQ(message, DecodeWithV8(EncodeStringMessage(message))); -} - -TEST(StringMessageCodecTest, SelfToV8Test_NonASCII) { - base::string16 message = base::WideToUTF16(L"hello \u263A"); - EXPECT_EQ(message, DecodeWithV8(EncodeStringMessage(message))); -} - -TEST(StringMessageCodecTest, SelfToV8Test_NonASCIILongEnoughToForcePadding) { - base::string16 message(200, 0x263A); - EXPECT_EQ(message, DecodeWithV8(EncodeStringMessage(message))); -} - -TEST(StringMessageCodecTest, V8ToSelfTest_ASCII) { - base::string16 message = base::ASCIIToUTF16("hello"); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeWithV8(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, V8ToSelfTest_NonASCII) { - base::string16 message = base::WideToUTF16(L"hello \u263A"); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeWithV8(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, V8ToSelfTest_NonASCIILongEnoughToForcePadding) { - base::string16 message(200, 0x263A); - base::string16 decoded; - EXPECT_TRUE(DecodeStringMessage(EncodeWithV8(message), &decoded)); - EXPECT_EQ(message, decoded); -} - -TEST(StringMessageCodecTest, Overflow) { - const uint8_t kOverflowOneByteData[] = {'"', 0xff, 0xff, 0xff, 0x7f}; - const uint8_t kOverflowTwoByteData[] = {'c', 0xff, 0xff, 0xff, 0x7f}; - std::u16string result; - EXPECT_FALSE(DecodeStringMessage(kOverflowOneByteData, &result)); - EXPECT_FALSE(DecodeStringMessage(kOverflowTwoByteData, &result)); -} - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/messaging/web_message_port.cc b/chromium/src/third_party/blink/common/messaging/web_message_port.cc deleted file mode 100644 index 5a8b0b3..0000000 --- a/chromium/src/third_party/blink/common/messaging/web_message_port.cc +++ /dev/null
@@ -1,239 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/messaging/web_message_port.h" - -#include "base/memory/ptr_util.h" -#include "third_party/blink/public/common/messaging/message_port_channel.h" -#include "third_party/blink/public/common/messaging/string_message_codec.h" -#include "third_party/blink/public/common/messaging/transferable_message.h" -#include "third_party/blink/public/common/messaging/transferable_message_mojom_traits.h" -#include "third_party/blink/public/mojom/messaging/transferable_message.mojom.h" - -namespace blink { - -WebMessagePort::Message::Message() = default; -WebMessagePort::Message::Message(Message&&) = default; -WebMessagePort::Message& WebMessagePort::Message::operator=(Message&&) = - default; -WebMessagePort::Message::~Message() = default; - -WebMessagePort::Message::Message(const base::string16& data) : data(data) {} - -WebMessagePort::Message::Message(std::vector<WebMessagePort> ports) - : ports(std::move(ports)) {} - -WebMessagePort::Message::Message(WebMessagePort&& port) { - ports.emplace_back(std::move(port)); -} - -WebMessagePort::Message::Message(const base::string16& data, - std::vector<WebMessagePort> ports) - : data(data), ports(std::move(ports)) {} - -WebMessagePort::Message::Message(const base::string16& data, - WebMessagePort port) - : data(data) { - ports.emplace_back(std::move(port)); -} - -WebMessagePort::MessageReceiver::MessageReceiver() = default; -WebMessagePort::MessageReceiver::~MessageReceiver() = default; - -bool WebMessagePort::MessageReceiver::OnMessage(Message) { - return false; -} - -WebMessagePort::WebMessagePort() = default; - -WebMessagePort::WebMessagePort(WebMessagePort&& other) { - Take(std::move(other)); -} - -WebMessagePort& WebMessagePort::operator=(WebMessagePort&& other) { - CloseIfNecessary(); - Take(std::move(other)); - return *this; -} - -WebMessagePort::~WebMessagePort() { - CloseIfNecessary(); -} - -// static -std::pair<WebMessagePort, WebMessagePort> WebMessagePort::CreatePair() { - MessagePortDescriptorPair port_pair; - return std::make_pair(WebMessagePort(port_pair.TakePort0()), - WebMessagePort(port_pair.TakePort1())); -} - -void WebMessagePort::SetReceiver( - MessageReceiver* receiver, - scoped_refptr<base::SequencedTaskRunner> runner) { - DCHECK(receiver); - DCHECK(runner.get()); - - DCHECK(port_.IsValid()); - DCHECK(!connector_); - DCHECK(!is_closed_); - DCHECK(!is_errored_); - DCHECK(is_transferable_); - - is_transferable_ = false; - receiver_ = receiver; - connector_ = std::make_unique<mojo::Connector>( - port_.TakeHandleToEntangleWithEmbedder(), - mojo::Connector::SINGLE_THREADED_SEND, std::move(runner)); - connector_->set_incoming_receiver(this); - connector_->set_connection_error_handler( - base::BindOnce(&WebMessagePort::OnPipeError, base::Unretained(this))); -} - -void WebMessagePort::ClearReceiver() { - if (!connector_) - return; - port_.GiveDisentangledHandle(connector_->PassMessagePipe()); - connector_.reset(); - receiver_ = nullptr; -} - -base::SequencedTaskRunner* WebMessagePort::GetTaskRunner() const { - if (!connector_) - return nullptr; - return connector_->task_runner(); -} - -MessagePortDescriptor WebMessagePort::PassPort() { - DCHECK(is_transferable_); - - // Clear the receiver, which takes the handle out of the connector if it - // exists, and puts it back in |port_|. - ClearReceiver(); - MessagePortDescriptor port = std::move(port_); - Reset(); - return port; -} - -WebMessagePort::WebMessagePort(MessagePortDescriptor&& port) - : port_(std::move(port)), is_closed_(false), is_transferable_(true) { - DCHECK(port_.IsValid()); -} - -bool WebMessagePort::CanPostMessage() const { - return connector_ && connector_->is_valid() && !is_closed_ && !is_errored_ && - receiver_; -} - -bool WebMessagePort::PostMessage(Message&& message) { - if (!CanPostMessage()) - return false; - - // Extract the underlying handles for transport in a - // blink::TransferableMessage. - std::vector<MessagePortDescriptor> ports; - for (auto& port : message.ports) { - // We should not be trying to send ourselves in a message. Mojo prevents - // this at a deeper level, but we can also check here. - DCHECK_NE(this, &port); - - ports.emplace_back(port.PassPort()); - } - - // Build the message. - // TODO(chrisha): Finally kill off MessagePortChannel, once - // MessagePortDescriptor more thoroughly plays that role. - blink::TransferableMessage transferable_message; - transferable_message.owned_encoded_message = - blink::EncodeStringMessage(message.data); - transferable_message.encoded_message = - transferable_message.owned_encoded_message; - transferable_message.ports = - blink::MessagePortChannel::CreateFromHandles(std::move(ports)); - - // TODO(chrisha): Notify the instrumentation delegate of a message being sent! - - // Send via Mojo. The message should never be malformed so should always be - // accepted. - mojo::Message mojo_message = - blink::mojom::TransferableMessage::SerializeAsMessage( - &transferable_message); - CHECK(connector_->Accept(&mojo_message)); - - return true; -} - -bool WebMessagePort::IsValid() const { - if (connector_) - return connector_->is_valid(); - return port_.IsValid(); -} - -void WebMessagePort::Close() { - CloseIfNecessary(); -} - -void WebMessagePort::Reset() { - CloseIfNecessary(); - is_closed_ = true; - is_errored_ = false; - is_transferable_ = false; -} - -void WebMessagePort::Take(WebMessagePort&& other) { - port_ = std::move(other.port_); - connector_ = std::move(other.connector_); - is_closed_ = std::exchange(other.is_closed_, true); - is_errored_ = std::exchange(other.is_errored_, false); - is_transferable_ = std::exchange(other.is_transferable_, false); - receiver_ = std::exchange(other.receiver_, nullptr); -} - -void WebMessagePort::OnPipeError() { - DCHECK(!is_transferable_); - if (is_errored_) - return; - is_errored_ = true; - if (receiver_) - receiver_->OnPipeError(); -} - -void WebMessagePort::CloseIfNecessary() { - if (is_closed_) - return; - is_closed_ = true; - ClearReceiver(); - port_.Reset(); -} - -bool WebMessagePort::Accept(mojo::Message* mojo_message) { - DCHECK(receiver_); - DCHECK(!is_transferable_); - - // Deserialize the message. - blink::TransferableMessage transferable_message; - if (!blink::mojom::TransferableMessage::DeserializeFromMessage( - std::move(*mojo_message), &transferable_message)) { - return false; - } - - // Decode the string portion of the message. - Message message; - if (!blink::DecodeStringMessage(transferable_message.encoded_message, - &message.data)) { - return false; - } - - // Convert raw handles to MessagePorts. - // TODO(chrisha): Kill off MessagePortChannel entirely! - auto handles = - blink::MessagePortChannel::ReleaseHandles(transferable_message.ports); - for (auto& handle : handles) { - message.ports.emplace_back(WebMessagePort(std::move(handle))); - } - - // Pass the message on to the receiver. - return receiver_->OnMessage(std::move(message)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/messaging/web_message_port_unittest.cc b/chromium/src/third_party/blink/common/messaging/web_message_port_unittest.cc deleted file mode 100644 index c4b7ff9..0000000 --- a/chromium/src/third_party/blink/common/messaging/web_message_port_unittest.cc +++ /dev/null
@@ -1,186 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/messaging/web_message_port.h" - -#include "base/run_loop.h" -#include "base/strings/string16.h" -#include "base/strings/utf_string_conversions.h" -#include "base/test/task_environment.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -namespace { - -using Message = WebMessagePort::Message; - -class LenientMockReceiver : public WebMessagePort::MessageReceiver { - public: - LenientMockReceiver() = default; - ~LenientMockReceiver() override = default; - - // WebMessagePort::MessageReceiver implementation: - MOCK_METHOD1(OnMessage, bool(Message)); - MOCK_METHOD0(OnPipeError, void()); -}; - -using MockReceiver = testing::StrictMock<LenientMockReceiver>; - -using testing::_; -using testing::Invoke; - -} // namespace - -TEST(WebMessagePortTest, EndToEnd) { - base::test::SingleThreadTaskEnvironment task_env; - - // Create a dummy pipe and ensure it behaves as expected. - WebMessagePort port0; - EXPECT_FALSE(port0.IsValid()); - EXPECT_FALSE(port0.is_errored()); - EXPECT_TRUE(port0.is_closed()); - EXPECT_FALSE(port0.is_transferable()); - EXPECT_FALSE(port0.HasReceiver()); - EXPECT_FALSE(port0.CanPostMessage()); - - // Create a pipe. - auto pipe = WebMessagePort::CreatePair(); - port0 = std::move(pipe.first); - WebMessagePort port1 = std::move(pipe.second); - - EXPECT_TRUE(port0.IsValid()); - EXPECT_FALSE(port0.is_errored()); - EXPECT_FALSE(port0.is_closed()); - EXPECT_TRUE(port0.is_transferable()); - EXPECT_FALSE(port0.HasReceiver()); - EXPECT_FALSE(port0.CanPostMessage()); - EXPECT_TRUE(port1.IsValid()); - EXPECT_FALSE(port1.is_errored()); - EXPECT_FALSE(port1.is_closed()); - EXPECT_TRUE(port1.is_transferable()); - EXPECT_FALSE(port1.HasReceiver()); - EXPECT_FALSE(port1.CanPostMessage()); - - // And bind both endpoints to distinct receivers. The ports should remain - // valid but no longer be transferable. - MockReceiver receiver0; - MockReceiver receiver1; - port0.SetReceiver(&receiver0, task_env.GetMainThreadTaskRunner()); - port1.SetReceiver(&receiver1, task_env.GetMainThreadTaskRunner()); - - EXPECT_TRUE(port0.IsValid()); - EXPECT_FALSE(port0.is_errored()); - EXPECT_FALSE(port0.is_closed()); - EXPECT_FALSE(port0.is_transferable()); - EXPECT_TRUE(port0.HasReceiver()); - EXPECT_TRUE(port0.CanPostMessage()); - EXPECT_TRUE(port1.IsValid()); - EXPECT_FALSE(port1.is_errored()); - EXPECT_FALSE(port1.is_closed()); - EXPECT_FALSE(port1.is_transferable()); - EXPECT_TRUE(port1.HasReceiver()); - EXPECT_TRUE(port1.CanPostMessage()); - - // Send a simple string-only message one way from port 0 to port 1. - base::string16 message(base::UTF8ToUTF16("foo")); - { - base::RunLoop run_loop; - EXPECT_CALL(receiver1, OnMessage(_)) - .WillOnce( - Invoke([&message, &run_loop](Message&& received_message) -> bool { - EXPECT_EQ(message, received_message.data); - EXPECT_TRUE(received_message.ports.empty()); - run_loop.Quit(); - return true; - })); - port0.PostMessage(Message(message)); - run_loop.Run(); - testing::Mock::VerifyAndClearExpectations(&receiver0); - testing::Mock::VerifyAndClearExpectations(&receiver1); - } - - // Send a message the other way (from 1 to 0) with a port. - auto pipe2 = WebMessagePort::CreatePair(); - { - base::RunLoop run_loop; - EXPECT_CALL(receiver0, OnMessage(_)) - .WillOnce( - Invoke([&message, &run_loop](Message&& received_message) -> bool { - EXPECT_EQ(message, received_message.data); - EXPECT_EQ(1u, received_message.ports.size()); - run_loop.Quit(); - return true; - })); - port1.PostMessage(Message(message, std::move(pipe2.first))); - run_loop.Run(); - testing::Mock::VerifyAndClearExpectations(&receiver0); - testing::Mock::VerifyAndClearExpectations(&receiver1); - } - - // Close one end of the pipe and expect the other end to get an error. - { - base::RunLoop run_loop; - EXPECT_CALL(receiver1, OnPipeError()).WillOnce(Invoke([&run_loop]() { - run_loop.Quit(); - })); - port0.Close(); - EXPECT_FALSE(port0.IsValid()); - EXPECT_FALSE(port0.is_errored()); - EXPECT_TRUE(port0.is_closed()); - EXPECT_FALSE(port0.is_transferable()); - EXPECT_FALSE(port0.HasReceiver()); - EXPECT_FALSE(port0.CanPostMessage()); - run_loop.Run(); - EXPECT_TRUE(port1.IsValid()); - EXPECT_TRUE(port1.is_errored()); - EXPECT_FALSE(port1.is_closed()); - EXPECT_FALSE(port1.is_transferable()); - EXPECT_TRUE(port1.HasReceiver()); - EXPECT_FALSE(port1.CanPostMessage()); - testing::Mock::VerifyAndClearExpectations(&receiver0); - testing::Mock::VerifyAndClearExpectations(&receiver1); - } - - // Reset the pipe and expect it to go back to a fully default state. - port1.Reset(); - EXPECT_FALSE(port1.IsValid()); - EXPECT_FALSE(port1.is_errored()); - EXPECT_TRUE(port1.is_closed()); - EXPECT_FALSE(port1.is_transferable()); - EXPECT_FALSE(port1.HasReceiver()); - EXPECT_FALSE(port1.CanPostMessage()); -} - -TEST(WebMessagePortTest, MoveAssignToConnectedPort) { - base::test::SingleThreadTaskEnvironment task_env; - - // Create a pipe. - auto pipe = WebMessagePort::CreatePair(); - WebMessagePort port0 = std::move(pipe.first); - WebMessagePort port1 = std::move(pipe.second); - - // And bind both endpoints to distinct receivers. - MockReceiver receiver0; - MockReceiver receiver1; - port0.SetReceiver(&receiver0, task_env.GetMainThreadTaskRunner()); - port1.SetReceiver(&receiver1, task_env.GetMainThreadTaskRunner()); - - // Move assign a new port into the open one. This should result in the - // open port being closed, which can be noticed on the remote half as a - // connection error. - base::RunLoop run_loop; - EXPECT_CALL(receiver1, OnPipeError()).WillOnce(Invoke([&run_loop]() { - run_loop.Quit(); - })); - - port0 = WebMessagePort(); - - run_loop.Run(); - testing::Mock::VerifyAndClearExpectations(&receiver0); - testing::Mock::VerifyAndClearExpectations(&receiver1); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/mime_util/OWNERS b/chromium/src/third_party/blink/common/mime_util/OWNERS deleted file mode 100644 index 9825bef..0000000 --- a/chromium/src/third_party/blink/common/mime_util/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -asanka@chromium.org -mmenke@chromium.org -rsleevi@chromium.org
diff --git a/chromium/src/third_party/blink/common/mime_util/mime_util.cc b/chromium/src/third_party/blink/common/mime_util/mime_util.cc deleted file mode 100644 index 2a615fd..0000000 --- a/chromium/src/third_party/blink/common/mime_util/mime_util.cc +++ /dev/null
@@ -1,224 +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 "third_party/blink/public/common/mime_util/mime_util.h" - -#include <stddef.h> -#include <unordered_set> - -#include "base/lazy_instance.h" -#include "base/strings/string_util.h" -#include "build/build_config.h" -#include "media/media_buildflags.h" -#include "net/base/mime_util.h" - -#if !defined(OS_IOS) -// iOS doesn't use and must not depend on //media -#include "media/base/mime_util.h" -#endif - -namespace blink { - -namespace { - -// From WebKit's WebCore/platform/MIMETypeRegistry.cpp: - -const char* const kSupportedImageTypes[] = { - "image/jpeg", - "image/pjpeg", - "image/jpg", - "image/webp", - "image/png", - "image/apng", - "image/gif", - "image/bmp", - "image/vnd.microsoft.icon", // ico - "image/x-icon", // ico - "image/x-xbitmap", // xbm - "image/x-png", -#if BUILDFLAG(ENABLE_AV1_DECODER) - "image/avif", -#endif -}; - -// Support every script type mentioned in the spec, as it notes that "User -// agents must recognize all JavaScript MIME types." See -// https://html.spec.whatwg.org/#javascript-mime-type. -const char* const kSupportedJavascriptTypes[] = { - "application/ecmascript", - "application/javascript", - "application/x-ecmascript", - "application/x-javascript", - "text/ecmascript", - "text/javascript", - "text/javascript1.0", - "text/javascript1.1", - "text/javascript1.2", - "text/javascript1.3", - "text/javascript1.4", - "text/javascript1.5", - "text/jscript", - "text/livescript", - "text/x-ecmascript", - "text/x-javascript", -}; - -// These types are excluded from the logic that allows all text/ types because -// while they are technically text, it's very unlikely that a user expects to -// see them rendered in text form. -static const char* const kUnsupportedTextTypes[] = { - "text/calendar", - "text/x-calendar", - "text/x-vcalendar", - "text/vcalendar", - "text/vcard", - "text/x-vcard", - "text/directory", - "text/ldif", - "text/qif", - "text/x-qif", - "text/x-csv", - "text/x-vcf", - "text/rtf", - "text/comma-separated-values", - "text/csv", - "text/tab-separated-values", - "text/tsv", - "text/ofx", // https://crbug.com/162238 - "text/vnd.sun.j2me.app-descriptor", // https://crbug.com/176450 - "text/x-ms-iqy", // https://crbug.com/1054863 - "text/x-ms-odc", // https://crbug.com/1054863 - "text/x-ms-rqy", // https://crbug.com/1054863 - "text/x-ms-contact" // https://crbug.com/1054863 -}; - -// Note: -// - does not include javascript types list (see supported_javascript_types) -// - does not include types starting with "text/" (see -// IsSupportedNonImageMimeType()) -static const char* const kSupportedNonImageTypes[] = { - "image/svg+xml", // SVG is text-based XML, even though it has an image/ - // type - "application/xml", "application/atom+xml", "application/rss+xml", - "application/xhtml+xml", "application/json", - "message/rfc822", // For MHTML support. - "multipart/related", // For MHTML support. - "multipart/x-mixed-replace" - // Note: ADDING a new type here will probably render it AS HTML. This can - // result in cross site scripting. -}; - -// Singleton utility class for mime types -class MimeUtil { - public: - bool IsSupportedImageMimeType(const std::string& mime_type) const; - bool IsSupportedNonImageMimeType(const std::string& mime_type) const; - bool IsUnsupportedTextMimeType(const std::string& mime_type) const; - bool IsSupportedJavascriptMimeType(const std::string& mime_type) const; - bool IsJSONMimeType(const std::string&) const; - - bool IsSupportedMimeType(const std::string& mime_type) const; - - private: - friend struct base::LazyInstanceTraitsBase<MimeUtil>; - - using MimeTypes = std::unordered_set<std::string>; - - MimeUtil(); - - MimeTypes image_types_; - MimeTypes non_image_types_; - MimeTypes unsupported_text_types_; - MimeTypes javascript_types_; - - DISALLOW_COPY_AND_ASSIGN(MimeUtil); -}; - -MimeUtil::MimeUtil() { - for (const char* type : kSupportedNonImageTypes) - non_image_types_.insert(type); - for (const char* type : kSupportedImageTypes) - image_types_.insert(type); - for (const char* type : kUnsupportedTextTypes) - unsupported_text_types_.insert(type); - for (const char* type : kSupportedJavascriptTypes) { - javascript_types_.insert(type); - non_image_types_.insert(type); - } -} - -bool MimeUtil::IsSupportedImageMimeType(const std::string& mime_type) const { - return image_types_.find(base::ToLowerASCII(mime_type)) != image_types_.end(); -} - -bool MimeUtil::IsSupportedNonImageMimeType(const std::string& mime_type) const { - return non_image_types_.find(base::ToLowerASCII(mime_type)) != - non_image_types_.end() || -#if !defined(OS_IOS) - media::IsSupportedMediaMimeType(mime_type) || -#endif - (base::StartsWith(mime_type, "text/", - base::CompareCase::INSENSITIVE_ASCII) && - !IsUnsupportedTextMimeType(mime_type)) || - (base::StartsWith(mime_type, "application/", - base::CompareCase::INSENSITIVE_ASCII) && - net::MatchesMimeType("application/*+json", mime_type)); -} - -bool MimeUtil::IsUnsupportedTextMimeType(const std::string& mime_type) const { - return unsupported_text_types_.find(base::ToLowerASCII(mime_type)) != - unsupported_text_types_.end(); -} - -bool MimeUtil::IsSupportedJavascriptMimeType( - const std::string& mime_type) const { - return javascript_types_.find(mime_type) != javascript_types_.end(); -} - -// TODO(sasebree): Allow non-application `*/*+json` MIME types. -// https://mimesniff.spec.whatwg.org/#json-mime-type -bool MimeUtil::IsJSONMimeType(const std::string& mime_type) const { - return net::MatchesMimeType("application/json", mime_type) || - net::MatchesMimeType("text/json", mime_type) || - net::MatchesMimeType("application/*+json", mime_type); -} - -bool MimeUtil::IsSupportedMimeType(const std::string& mime_type) const { - return (base::StartsWith(mime_type, "image/", - base::CompareCase::INSENSITIVE_ASCII) && - IsSupportedImageMimeType(mime_type)) || - IsSupportedNonImageMimeType(mime_type); -} - -// This variable is Leaky because it is accessed from WorkerPool threads. -static base::LazyInstance<MimeUtil>::Leaky g_mime_util = - LAZY_INSTANCE_INITIALIZER; - -} // namespace - -bool IsSupportedImageMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsSupportedImageMimeType(mime_type); -} - -bool IsSupportedNonImageMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsSupportedNonImageMimeType(mime_type); -} - -bool IsUnsupportedTextMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsUnsupportedTextMimeType(mime_type); -} - -bool IsSupportedJavascriptMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsSupportedJavascriptMimeType(mime_type); -} - -bool IsJSONMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsJSONMimeType(mime_type); -} - -bool IsSupportedMimeType(const std::string& mime_type) { - return g_mime_util.Get().IsSupportedMimeType(mime_type); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/mime_util/mime_util_unittest.cc b/chromium/src/third_party/blink/common/mime_util/mime_util_unittest.cc deleted file mode 100644 index b6fdcfe..0000000 --- a/chromium/src/third_party/blink/common/mime_util/mime_util_unittest.cc +++ /dev/null
@@ -1,78 +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 "third_party/blink/public/common/mime_util/mime_util.h" - -#include "build/build_config.h" -#include "media/media_buildflags.h" -#include "net/base/mime_util.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -TEST(MimeUtilTest, LookupTypes) { - EXPECT_FALSE(IsUnsupportedTextMimeType("text/banana")); - EXPECT_TRUE(IsUnsupportedTextMimeType("text/vcard")); - - EXPECT_TRUE(IsSupportedImageMimeType("image/jpeg")); - EXPECT_TRUE(IsSupportedImageMimeType("Image/JPEG")); - EXPECT_EQ(IsSupportedImageMimeType("image/avif"), - BUILDFLAG(ENABLE_AV1_DECODER)); - EXPECT_FALSE(IsSupportedImageMimeType("image/lolcat")); - EXPECT_FALSE(IsSupportedImageMimeType("Image/LolCat")); - EXPECT_TRUE(IsSupportedNonImageMimeType("text/html")); - EXPECT_TRUE(IsSupportedNonImageMimeType("text/css")); - EXPECT_TRUE(IsSupportedNonImageMimeType("text/")); - EXPECT_TRUE(IsSupportedNonImageMimeType("text/banana")); - EXPECT_TRUE(IsSupportedNonImageMimeType("Text/Banana")); - EXPECT_FALSE(IsSupportedNonImageMimeType("text/vcard")); - EXPECT_FALSE(IsSupportedNonImageMimeType("application/virus")); - EXPECT_FALSE(IsSupportedNonImageMimeType("Application/VIRUS")); - EXPECT_TRUE(IsSupportedNonImageMimeType("application/json")); - EXPECT_TRUE(IsSupportedNonImageMimeType("application/+json")); - EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-suggestions+json")); - EXPECT_TRUE(IsSupportedNonImageMimeType("application/x-s+json;x=2")); -#if defined(OS_ANDROID) -#if 0 // Disabled until http://crbug.com/318217 is resolved. - EXPECT_TRUE(IsSupportedMediaMimeType("application/vnd.apple.mpegurl")); - EXPECT_TRUE(IsSupportedMediaMimeType("application/x-mpegurl")); - EXPECT_TRUE(IsSupportedMediaMimeType("Application/X-MPEGURL")); -#endif -#endif - - EXPECT_TRUE(IsSupportedMimeType("image/jpeg")); - EXPECT_FALSE(IsSupportedMimeType("image/lolcat")); - EXPECT_FALSE(IsSupportedMimeType("Image/LOLCAT")); - EXPECT_TRUE(IsSupportedMimeType("text/html")); - EXPECT_TRUE(IsSupportedMimeType("text/banana")); - EXPECT_TRUE(IsSupportedMimeType("Text/BANANA")); - EXPECT_FALSE(IsSupportedMimeType("text/vcard")); - EXPECT_FALSE(IsSupportedMimeType("application/virus")); - EXPECT_FALSE(IsSupportedMimeType("application/x-json")); - EXPECT_FALSE(IsSupportedMimeType("Application/X-JSON")); - EXPECT_FALSE(IsSupportedNonImageMimeType("application/vnd.doc;x=y+json")); - EXPECT_FALSE(IsSupportedNonImageMimeType("Application/VND.DOC;X=Y+JSON")); - - EXPECT_TRUE(IsJSONMimeType("application/json")); - EXPECT_TRUE(IsJSONMimeType("text/json")); - EXPECT_TRUE(IsJSONMimeType("application/blah+json")); - EXPECT_TRUE(IsJSONMimeType("Application/JSON")); - EXPECT_TRUE(IsJSONMimeType("Text/JSON")); - EXPECT_TRUE(IsJSONMimeType("application/json;x=1")); - EXPECT_TRUE(IsJSONMimeType("application/blah+json;x=1")); - EXPECT_TRUE(IsJSONMimeType("text/json;x=1")); - EXPECT_FALSE(IsJSONMimeType("text/blah+json;x=1")); - EXPECT_FALSE(IsJSONMimeType("json")); - EXPECT_FALSE(IsJSONMimeType("+json")); - EXPECT_FALSE(IsJSONMimeType("application/")); - EXPECT_FALSE(IsJSONMimeType("application/jsonabcd")); - EXPECT_FALSE(IsJSONMimeType("application/blahjson")); - EXPECT_FALSE(IsJSONMimeType("application/blah+jsonabcd")); - EXPECT_FALSE(IsJSONMimeType("application/foo+json bar")); - EXPECT_FALSE(IsJSONMimeType("application/foo+jsonbar;a=b")); - EXPECT_FALSE(IsJSONMimeType("application/json+blah")); - EXPECT_FALSE(IsJSONMimeType("image/svg+json")); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/mobile_metrics/OWNERS b/chromium/src/third_party/blink/common/mobile_metrics/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/mobile_metrics/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness.cc b/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness.cc deleted file mode 100644 index 0c44f3c..0000000 --- a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness.cc +++ /dev/null
@@ -1,17 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/mobile_metrics/mobile_friendliness.h" - -namespace blink { - -bool MobileFriendliness::operator==(const MobileFriendliness& other) const { - return viewport_device_width == other.viewport_device_width && - viewport_initial_scale == other.viewport_initial_scale && - viewport_hardcoded_width == other.viewport_hardcoded_width && - allow_user_zoom == other.allow_user_zoom && - small_text_ratio == other.small_text_ratio; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.cc b/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.cc deleted file mode 100644 index 154ccfb..0000000 --- a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.cc +++ /dev/null
@@ -1,24 +0,0 @@ -// Copyright 2020 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 "third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.h" -#include "third_party/blink/public/common/mobile_metrics/mobile_friendliness.h" - -namespace mojo { - -bool StructTraits<blink::mojom::MobileFriendlinessDataView, - blink::MobileFriendliness>:: - Read(blink::mojom::MobileFriendlinessDataView data, - blink::MobileFriendliness* mf) { - if (data.viewport_initial_scale() < 0 || data.viewport_hardcoded_width() < 0) - return false; - mf->viewport_device_width = data.viewport_device_width(); - mf->viewport_initial_scale = data.viewport_initial_scale(); - mf->viewport_hardcoded_width = data.viewport_hardcoded_width(); - mf->allow_user_zoom = data.allow_user_zoom(); - mf->small_text_ratio = data.small_text_ratio(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.h b/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.h deleted file mode 100644 index dcb8b58..0000000 --- a/chromium/src/third_party/blink/common/mobile_metrics/mobile_friendliness_mojom_traits.h +++ /dev/null
@@ -1,38 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/mobile_metrics/mobile_friendliness.h" -#include "third_party/blink/public/mojom/mobile_metrics/mobile_friendliness.mojom-shared.h" - -namespace mojo { - -template <> -class StructTraits<blink::mojom::MobileFriendlinessDataView, - blink::MobileFriendliness> { - public: - static bool viewport_device_width(const blink::MobileFriendliness& mf) { - return mf.viewport_device_width; - } - static double viewport_initial_scale(const blink::MobileFriendliness& mf) { - return mf.viewport_initial_scale; - } - static int viewport_hardcoded_width(const blink::MobileFriendliness& mf) { - return mf.viewport_hardcoded_width; - } - static bool allow_user_zoom(const blink::MobileFriendliness& mf) { - return mf.allow_user_zoom; - } - static int small_text_ratio(const blink::MobileFriendliness& mf) { - return mf.small_text_ratio; - } - static bool Read(blink::mojom::MobileFriendlinessDataView data, - blink::MobileFriendliness* mf); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/common/navigation/navigation_policy.cc b/chromium/src/third_party/blink/common/navigation/navigation_policy.cc deleted file mode 100644 index 9801fed..0000000 --- a/chromium/src/third_party/blink/common/navigation/navigation_policy.cc +++ /dev/null
@@ -1,90 +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 "third_party/blink/public/common/navigation/navigation_policy.h" - -#include "base/command_line.h" -#include "base/metrics/histogram_macros.h" -#include "base/system/sys_info.h" -#include "services/network/public/cpp/features.h" - -namespace blink { - -namespace { - -void LogPerPolicyApplied(NavigationDownloadType type) { - UMA_HISTOGRAM_ENUMERATION("Navigation.DownloadPolicy.LogPerPolicyApplied", - type); -} - -void LogArbitraryPolicyPerDownload(NavigationDownloadType type) { - UMA_HISTOGRAM_ENUMERATION( - "Navigation.DownloadPolicy.LogArbitraryPolicyPerDownload", type); -} -} // namespace - -NavigationDownloadPolicy::NavigationDownloadPolicy() = default; -NavigationDownloadPolicy::~NavigationDownloadPolicy() = default; -NavigationDownloadPolicy::NavigationDownloadPolicy( - const NavigationDownloadPolicy&) = default; - -void NavigationDownloadPolicy::SetAllowed(NavigationDownloadType type) { - DCHECK(type != NavigationDownloadType::kDefaultAllow); - observed_types.set(static_cast<size_t>(type)); -} - -void NavigationDownloadPolicy::SetDisallowed(NavigationDownloadType type) { - DCHECK(type != NavigationDownloadType::kDefaultAllow); - observed_types.set(static_cast<size_t>(type)); - disallowed_types.set(static_cast<size_t>(type)); -} - -bool NavigationDownloadPolicy::IsType(NavigationDownloadType type) const { - DCHECK(type != NavigationDownloadType::kDefaultAllow); - return observed_types.test(static_cast<size_t>(type)); -} - -ResourceInterceptPolicy NavigationDownloadPolicy::GetResourceInterceptPolicy() - const { - if (disallowed_types.test( - static_cast<size_t>(NavigationDownloadType::kSandbox)) || - disallowed_types.test( - static_cast<size_t>(NavigationDownloadType::kOpenerCrossOrigin)) || - disallowed_types.test( - static_cast<size_t>(NavigationDownloadType::kAdFrame)) || - disallowed_types.test( - static_cast<size_t>(NavigationDownloadType::kAdFrameNoGesture))) { - return ResourceInterceptPolicy::kAllowPluginOnly; - } - return disallowed_types.any() ? ResourceInterceptPolicy::kAllowNone - : ResourceInterceptPolicy::kAllowAll; -} - -bool NavigationDownloadPolicy::IsDownloadAllowed() const { - return disallowed_types.none(); -} - -void NavigationDownloadPolicy::RecordHistogram() const { - if (observed_types.none()) { - LogPerPolicyApplied(NavigationDownloadType::kDefaultAllow); - LogArbitraryPolicyPerDownload(NavigationDownloadType::kDefaultAllow); - return; - } - - bool first_type_seen = false; - for (size_t i = 0; i < observed_types.size(); ++i) { - if (observed_types.test(i)) { - NavigationDownloadType policy = static_cast<NavigationDownloadType>(i); - DCHECK(policy != NavigationDownloadType::kDefaultAllow); - LogPerPolicyApplied(policy); - if (!first_type_seen) { - LogArbitraryPolicyPerDownload(policy); - first_type_seen = true; - } - } - } - DCHECK(first_type_seen); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/net/ip_address_space_util.cc b/chromium/src/third_party/blink/common/net/ip_address_space_util.cc deleted file mode 100644 index bb2fd68..0000000 --- a/chromium/src/third_party/blink/common/net/ip_address_space_util.cc +++ /dev/null
@@ -1,74 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/net/ip_address_space_util.h" - -#include "base/logging.h" -#include "services/network/public/cpp/content_security_policy/content_security_policy.h" -#include "services/network/public/cpp/ip_address_space_util.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "url/gurl.h" - -namespace blink { -namespace { - -using network::mojom::IPAddressSpace; -using network::mojom::URLResponseHead; - -// Helper for CalculateClientAddressSpace() with the same arguments. -// -// If the response was fetched via service workers, returns the last URL in the -// list. Otherwise returns |request_url|. -// -// See: https://fetch.spec.whatwg.org/#concept-response-url-list -const GURL& ResponseUrl(const GURL& request_url, - const URLResponseHead* response_head) { - if (response_head && !response_head->url_list_via_service_worker.empty()) { - return response_head->url_list_via_service_worker.back(); - } - - return request_url; -} - -} // namespace - -IPAddressSpace CalculateClientAddressSpace( - const GURL& url, - const URLResponseHead* response_head) { - if (ResponseUrl(url, response_head).SchemeIsFile()) { - // See: https://wicg.github.io/cors-rfc1918/#file-url. - return IPAddressSpace::kLocal; - } - - if (!response_head) { - return IPAddressSpace::kUnknown; - } - - // First, check whether the response forces itself into a public address space - // as per https://wicg.github.io/cors-rfc1918/#csp. - DCHECK(response_head->parsed_headers) - << "CalculateIPAddressSpace() called for URL " << url - << " with null parsed_headers."; - if (response_head->parsed_headers && - network::ShouldTreatAsPublicAddress( - response_head->parsed_headers->content_security_policy)) { - return IPAddressSpace::kPublic; - } - - // Otherwise, calculate the address space via the provided IP address. - return network::IPAddressToIPAddressSpace( - response_head->remote_endpoint.address()); -} - -IPAddressSpace CalculateResourceAddressSpace(const GURL& url, - const net::IPAddress& address) { - if (url.SchemeIsFile()) { - // See: https://wicg.github.io/cors-rfc1918/#file-url. - return IPAddressSpace::kLocal; - } - - return network::IPAddressToIPAddressSpace(address); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/net/ip_address_space_util_unittest.cc b/chromium/src/third_party/blink/common/net/ip_address_space_util_unittest.cc deleted file mode 100644 index eb6b574..0000000 --- a/chromium/src/third_party/blink/common/net/ip_address_space_util_unittest.cc +++ /dev/null
@@ -1,133 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/net/ip_address_space_util.h" - -#include <utility> - -#include "net/base/ip_address.h" -#include "net/base/ip_endpoint.h" -#include "services/network/public/mojom/content_security_policy.mojom.h" -#include "services/network/public/mojom/parsed_headers.mojom.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "url/gurl.h" - -namespace blink { -namespace { - -using net::IPAddress; -using net::IPEndPoint; -using network::mojom::ContentSecurityPolicy; -using network::mojom::IPAddressSpace; -using network::mojom::ParsedHeaders; -using network::mojom::URLResponseHead; - -IPAddress PublicIPv4Address() { - return IPAddress(64, 233, 160, 0); -} - -IPAddress PrivateIPv4Address() { - return IPAddress(192, 168, 1, 1); -} - -TEST(IPAddressSpaceUtilTest, CalculateClientAddressSpaceFileURL) { - EXPECT_EQ(IPAddressSpace::kLocal, - CalculateClientAddressSpace(GURL("file:///foo"), nullptr)); -} - -TEST(IPAddressSpaceUtilTest, - CalculateClientAddressSpaceFetchedViaServiceWorkerFromFile) { - URLResponseHead response_head; - response_head.url_list_via_service_worker.emplace_back("http://bar.test"); - response_head.url_list_via_service_worker.emplace_back("file:///foo"); - response_head.parsed_headers = ParsedHeaders::New(); - - EXPECT_EQ( - IPAddressSpace::kLocal, - CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); -} - -TEST(IPAddressSpaceUtilTest, - CalculateClientAddressSpaceFetchedViaServiceWorkerFromHttp) { - URLResponseHead response_head; - response_head.url_list_via_service_worker.emplace_back("file:///foo"); - response_head.url_list_via_service_worker.emplace_back("http://bar.test"); - response_head.parsed_headers = ParsedHeaders::New(); - - EXPECT_EQ( - IPAddressSpace::kUnknown, - CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); -} - -TEST(IPAddressSpaceUtilTest, - CalculateClientAddressSpaceFetchedViaServiceWorkerFromHttpInsteadOfFile) { - URLResponseHead response_head; - response_head.url_list_via_service_worker.emplace_back("http://bar.test"); - response_head.parsed_headers = ParsedHeaders::New(); - - EXPECT_EQ(IPAddressSpace::kUnknown, - CalculateClientAddressSpace(GURL("file:///foo"), &response_head)); -} - -TEST(IPAddressSpaceUtilTest, CalculateClientAddressSpaceNullResponseHead) { - EXPECT_EQ(IPAddressSpace::kUnknown, - CalculateClientAddressSpace(GURL("http://foo.test"), nullptr)); -} - -TEST(IPAddressSpaceUtilTest, CalculateClientAddressSpaceEmptyResponseHead) { - URLResponseHead response_head; - response_head.parsed_headers = ParsedHeaders::New(); - EXPECT_EQ( - IPAddressSpace::kUnknown, - CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); -} - -TEST(IPAddressSpaceUtilTest, CalculateClientAddressSpaceIPAddress) { - URLResponseHead response_head; - response_head.remote_endpoint = IPEndPoint(PrivateIPv4Address(), 1234); - response_head.parsed_headers = ParsedHeaders::New(); - - EXPECT_EQ( - IPAddressSpace::kPrivate, - CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); -} - -TEST(IPAddressSpaceUtilTest, CalculateClientAddressSpaceTreatAsPublicAddress) { - URLResponseHead response_head; - response_head.remote_endpoint = IPEndPoint(IPAddress::IPv4Localhost(), 1234); - - auto csp = ContentSecurityPolicy::New(); - csp->treat_as_public_address = true; - response_head.parsed_headers = ParsedHeaders::New(); - response_head.parsed_headers->content_security_policy.push_back( - std::move(csp)); - - EXPECT_EQ( - IPAddressSpace::kPublic, - CalculateClientAddressSpace(GURL("http://foo.test"), &response_head)); -} - -TEST(IPAddressSpaceTest, CalculateResourceAddressSpaceFileURL) { - EXPECT_EQ(IPAddressSpace::kLocal, - CalculateResourceAddressSpace(GURL("file:///foo"), IPAddress())); -} - -TEST(IPAddressSpaceTest, CalculateResourceAddressSpaceIPAddress) { - EXPECT_EQ(IPAddressSpace::kLocal, - CalculateResourceAddressSpace(GURL("http:///foo.test"), - IPAddress::IPv4Localhost())); - EXPECT_EQ(IPAddressSpace::kPrivate, - CalculateResourceAddressSpace(GURL("http:///foo.test"), - PrivateIPv4Address())); - EXPECT_EQ(IPAddressSpace::kPublic, - CalculateResourceAddressSpace(GURL("http:///foo.test"), - PublicIPv4Address())); - EXPECT_EQ( - IPAddressSpace::kUnknown, - CalculateResourceAddressSpace(GURL("http:///foo.test"), IPAddress())); -} - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/notifications/OWNERS b/chromium/src/third_party/blink/common/notifications/OWNERS deleted file mode 100644 index 34d5d68..0000000 --- a/chromium/src/third_party/blink/common/notifications/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/notifications/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/notifications/notification_mojom_traits.cc b/chromium/src/third_party/blink/common/notifications/notification_mojom_traits.cc deleted file mode 100644 index 2bd7ac8..0000000 --- a/chromium/src/third_party/blink/common/notifications/notification_mojom_traits.cc +++ /dev/null
@@ -1,119 +0,0 @@ -// Copyright 2017 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 <utility> - -#include "third_party/blink/public/common/notifications/notification_mojom_traits.h" -#include "third_party/blink/public/mojom/notifications/notification.mojom.h" - -namespace { - -// Maximum number of entries in a vibration pattern. -constexpr int kMaximumVibrationPatternLength = 99; - -// Maximum duration of each vibration in a pattern. -constexpr int kMaximumVibrationDurationMs = 10000; // 10 seconds. - -// Maximum number of developer-provided actions on a notification. -constexpr size_t kMaximumActions = 2; - -bool ValidateVibrationPattern(const std::vector<int>& vibration_pattern) { - if (vibration_pattern.size() > kMaximumVibrationPatternLength) - return false; - for (const int duration : vibration_pattern) { - if (duration < 0 || duration > kMaximumVibrationDurationMs) - return false; - } - return true; -} - -bool ValidateActions( - const std::vector<blink::PlatformNotificationAction>& actions) { - return actions.size() <= kMaximumActions; -} - -bool ValidateData(const std::vector<char>& data) { - return data.size() <= - blink::mojom::NotificationData::kMaximumDeveloperDataSize; -} - -} // namespace - -namespace mojo { - -// static -bool StructTraits<blink::mojom::NotificationActionDataView, - blink::PlatformNotificationAction>:: - Read(blink::mojom::NotificationActionDataView notification_action, - blink::PlatformNotificationAction* out) { - base::Optional<base::string16> placeholder; - if (!notification_action.ReadType(&out->type) || - !notification_action.ReadTitle(&out->title) || - !notification_action.ReadAction(&out->action) || - !notification_action.ReadIcon(&out->icon) || - !notification_action.ReadPlaceholder(&placeholder)) { - return false; - } - out->placeholder = std::move(placeholder); - return true; -} - -// static -bool StructTraits<blink::mojom::NotificationDataDataView, - blink::PlatformNotificationData>:: - Read(blink::mojom::NotificationDataDataView notification_data, - blink::PlatformNotificationData* platform_notification_data) { - // TODO(https://crbug.com/798466): Read the data directly into - // platform_notification_data.data once it stores a vector of ints not chars. - std::vector<uint8_t> data; - - base::Optional<std::string> lang; - if (!notification_data.ReadTitle(&platform_notification_data->title) || - !notification_data.ReadDirection( - &platform_notification_data->direction) || - !notification_data.ReadLang(&lang) || - !notification_data.ReadBody(&platform_notification_data->body) || - !notification_data.ReadTag(&platform_notification_data->tag) || - !notification_data.ReadImage(&platform_notification_data->image) || - !notification_data.ReadIcon(&platform_notification_data->icon) || - !notification_data.ReadBadge(&platform_notification_data->badge) || - !notification_data.ReadVibrationPattern( - &platform_notification_data->vibration_pattern) || - !notification_data.ReadActions(&platform_notification_data->actions) || - !notification_data.ReadData(&data) || - !notification_data.ReadShowTriggerTimestamp( - &platform_notification_data->show_trigger_timestamp)) { - return false; - } - - platform_notification_data->lang = std::move(lang).value_or(std::string()); - - platform_notification_data->data.assign(data.begin(), data.end()); - - platform_notification_data->timestamp = - base::Time::FromJsTime(notification_data.timestamp()); - - platform_notification_data->renotify = notification_data.renotify(); - - platform_notification_data->silent = notification_data.silent(); - - platform_notification_data->require_interaction = - notification_data.require_interaction(); - - return ValidateVibrationPattern( - platform_notification_data->vibration_pattern) && - ValidateActions(platform_notification_data->actions) && - ValidateData(platform_notification_data->data); -} - -// static -bool StructTraits<blink::mojom::NotificationResourcesDataView, - blink::NotificationResources>:: - Read(blink::mojom::NotificationResourcesDataView in, - blink::NotificationResources* out) { - return in.ReadImage(&out->image) && in.ReadIcon(&out->notification_icon) && - in.ReadBadge(&out->badge) && in.ReadActionIcons(&out->action_icons); -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/notifications/notification_mojom_traits_unittest.cc b/chromium/src/third_party/blink/common/notifications/notification_mojom_traits_unittest.cc deleted file mode 100644 index 4069229..0000000 --- a/chromium/src/third_party/blink/common/notifications/notification_mojom_traits_unittest.cc +++ /dev/null
@@ -1,256 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/notifications/notification_mojom_traits.h" - -#include "base/macros.h" -#include "base/optional.h" -#include "base/stl_util.h" -#include "base/strings/stringprintf.h" -#include "base/strings/utf_string_conversions.h" -#include "base/time/time.h" -#include "mojo/public/cpp/test_support/test_utils.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/notifications/platform_notification_data.h" -#include "third_party/blink/public/mojom/notifications/notification.mojom.h" -#include "third_party/skia/include/core/SkBitmap.h" -#include "url/gurl.h" - -namespace blink { - -namespace { - -SkBitmap CreateBitmap(int width, int height, SkColor color) { - SkBitmap bitmap; - bitmap.allocN32Pixels(width, height); - bitmap.eraseColor(color); - return bitmap; -} - -// Returns true if |lhs| and |rhs| have the same width and height and the -// pixel at position (0, 0) is the same color in both. -bool ImagesShareDimensionsAndColor(const SkBitmap& lhs, const SkBitmap& rhs) { - return lhs.width() == rhs.width() && lhs.height() == rhs.height() && - lhs.getColor(0, 0) == rhs.getColor(0, 0); -} - -} // namespace - -TEST(NotificationStructTraitsTest, NotificationDataRoundtrip) { - PlatformNotificationData notification_data; - notification_data.title = base::ASCIIToUTF16("Title of my notification"); - notification_data.direction = mojom::NotificationDirection::AUTO; - notification_data.lang = "test-lang"; - notification_data.body = base::ASCIIToUTF16("Notification body."); - notification_data.tag = "notification-tag"; - notification_data.image = GURL("https://example.com/image.png"); - notification_data.icon = GURL("https://example.com/icon.png"); - notification_data.badge = GURL("https://example.com/badge.png"); - - const int vibration_pattern[] = {500, 100, 30}; - notification_data.vibration_pattern.assign( - vibration_pattern, vibration_pattern + base::size(vibration_pattern)); - - notification_data.timestamp = base::Time::FromJsTime(1513966159000.); - notification_data.renotify = true; - notification_data.silent = true; - notification_data.require_interaction = true; - notification_data.show_trigger_timestamp = base::Time::Now(); - - const char data[] = "mock binary notification data"; - notification_data.data.assign(data, data + base::size(data)); - - notification_data.actions.resize(2); - notification_data.actions[0].type = - blink::mojom::NotificationActionType::BUTTON; - notification_data.actions[0].action = "buttonAction"; - notification_data.actions[0].title = base::ASCIIToUTF16("Button Title!"); - notification_data.actions[0].icon = GURL("https://example.com/aButton.png"); - notification_data.actions[0].placeholder = base::nullopt; - - notification_data.actions[1].type = - blink::mojom::NotificationActionType::TEXT; - notification_data.actions[1].action = "textAction"; - notification_data.actions[1].title = base::ASCIIToUTF16("Reply Button Title"); - notification_data.actions[1].icon = GURL("https://example.com/reply.png"); - notification_data.actions[1].placeholder = - base::ASCIIToUTF16("Placeholder Text"); - - PlatformNotificationData roundtrip_notification_data; - - ASSERT_TRUE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, roundtrip_notification_data)); - - EXPECT_EQ(roundtrip_notification_data.title, notification_data.title); - EXPECT_EQ(roundtrip_notification_data.direction, notification_data.direction); - EXPECT_EQ(roundtrip_notification_data.lang, notification_data.lang); - EXPECT_EQ(roundtrip_notification_data.body, notification_data.body); - EXPECT_EQ(roundtrip_notification_data.tag, notification_data.tag); - EXPECT_EQ(roundtrip_notification_data.image, notification_data.image); - EXPECT_EQ(roundtrip_notification_data.icon, notification_data.icon); - EXPECT_EQ(roundtrip_notification_data.badge, notification_data.badge); - EXPECT_EQ(roundtrip_notification_data.vibration_pattern, - notification_data.vibration_pattern); - EXPECT_EQ(roundtrip_notification_data.timestamp, notification_data.timestamp); - EXPECT_EQ(roundtrip_notification_data.renotify, notification_data.renotify); - EXPECT_EQ(roundtrip_notification_data.silent, notification_data.silent); - EXPECT_EQ(roundtrip_notification_data.require_interaction, - notification_data.require_interaction); - EXPECT_EQ(roundtrip_notification_data.data, notification_data.data); - ASSERT_EQ(notification_data.actions.size(), - roundtrip_notification_data.actions.size()); - for (size_t i = 0; i < notification_data.actions.size(); ++i) { - SCOPED_TRACE(base::StringPrintf("Action index: %zd", i)); - EXPECT_EQ(notification_data.actions[i].type, - roundtrip_notification_data.actions[i].type); - EXPECT_EQ(notification_data.actions[i].action, - roundtrip_notification_data.actions[i].action); - EXPECT_EQ(notification_data.actions[i].title, - roundtrip_notification_data.actions[i].title); - EXPECT_EQ(notification_data.actions[i].icon, - roundtrip_notification_data.actions[i].icon); - EXPECT_EQ(notification_data.actions[i].placeholder, - roundtrip_notification_data.actions[i].placeholder); - } - EXPECT_EQ(roundtrip_notification_data.show_trigger_timestamp, - notification_data.show_trigger_timestamp); -} - -// Check upper bound on vibration entries (99). -TEST(NotificationStructTraitsTest, ValidVibrationPattern) { - constexpr int kEntries = 99; // valid - constexpr int kDurationMs = 999; // valid - - PlatformNotificationData notification_data; - notification_data.title = - base::ASCIIToUTF16("Notification with 99 x 999ms entries (valid)"); - - for (size_t i = 0; i < kEntries; ++i) - notification_data.vibration_pattern.push_back(kDurationMs); - - PlatformNotificationData platform_notification_data; - - ASSERT_TRUE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, platform_notification_data)); -} - -// Check round-trip fails when there are too many entries in the vibration -// pattern. -TEST(NotificationStructTraitsTest, TooManyVibrations) { - constexpr int kEntries = 100; // invalid - constexpr int kDurationMs = 1; // valid - - PlatformNotificationData notification_data; - notification_data.title = - base::ASCIIToUTF16("Notification with 100 x 1ms entries (invalid)"); - - for (size_t i = 0; i < kEntries; ++i) - notification_data.vibration_pattern.push_back(kDurationMs); - - PlatformNotificationData platform_notification_data; - - ASSERT_FALSE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, platform_notification_data)); -} - -// Check round-trip fails when there is a too-long vibration duration. -TEST(NotificationStructTraitsTest, TooLongVibrationDuration) { - constexpr int kEntries = 1; // valid - constexpr int kDurationMs = 10001; // invalid (>10 seconds) - - PlatformNotificationData notification_data; - notification_data.title = - base::ASCIIToUTF16("Notification with 1 x 10001ms entries (invalid)"); - - for (size_t i = 0; i < kEntries; ++i) - notification_data.vibration_pattern.push_back(kDurationMs); - - PlatformNotificationData platform_notification_data; - - ASSERT_FALSE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, platform_notification_data)); -} - -// Check round-trip fails when there are too many actions provided. -TEST(NotificationStructTraitsTest, TooManyActions) { - constexpr int kActions = 3; // invalid (max is 2) - - PlatformNotificationData notification_data; - notification_data.title = - base::ASCIIToUTF16("Notification with 3 actions provided (invalid)"); - - notification_data.actions.resize(kActions); - for (size_t i = 0; i < kActions; ++i) { - notification_data.actions[i].title = base::ASCIIToUTF16("action title"); - } - - PlatformNotificationData platform_notification_data; - - ASSERT_FALSE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, platform_notification_data)); -} - -// Check round-trip fails when the data size is too big. -TEST(NotificationStructTraitsTest, DataExceedsMaximumSize) { - constexpr size_t kDataSize = 1024 * 1024 + 1; // 1 more than max data size. - - PlatformNotificationData notification_data; - notification_data.title = - base::ASCIIToUTF16("Notification with too much data"); - - notification_data.data.resize(kDataSize); - - PlatformNotificationData platform_notification_data; - - ASSERT_FALSE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationData>( - notification_data, platform_notification_data)); -} - -TEST(NotificationStructTraitsTest, NotificationResourcesRoundtrip) { - NotificationResources resources; - - resources.image = CreateBitmap(200, 100, SK_ColorMAGENTA); - resources.notification_icon = CreateBitmap(100, 50, SK_ColorGREEN); - resources.badge = CreateBitmap(20, 10, SK_ColorBLUE); - - resources.action_icons.resize(2); - resources.action_icons[0] = CreateBitmap(10, 10, SK_ColorLTGRAY); - resources.action_icons[1] = CreateBitmap(11, 11, SK_ColorDKGRAY); - - NotificationResources roundtrip_resources; - - ASSERT_TRUE( - mojo::test::SerializeAndDeserialize<blink::mojom::NotificationResources>( - resources, roundtrip_resources)); - - ASSERT_FALSE(roundtrip_resources.image.empty()); - EXPECT_TRUE(ImagesShareDimensionsAndColor(resources.image, - roundtrip_resources.image)); - - ASSERT_FALSE(roundtrip_resources.notification_icon.empty()); - EXPECT_TRUE(ImagesShareDimensionsAndColor( - resources.notification_icon, roundtrip_resources.notification_icon)); - - ASSERT_FALSE(roundtrip_resources.badge.empty()); - EXPECT_TRUE(ImagesShareDimensionsAndColor(resources.badge, - roundtrip_resources.badge)); - - ASSERT_EQ(resources.action_icons.size(), - roundtrip_resources.action_icons.size()); - - for (size_t i = 0; i < roundtrip_resources.action_icons.size(); ++i) { - SCOPED_TRACE(base::StringPrintf("Action icon index: %zd", i)); - ASSERT_FALSE(roundtrip_resources.action_icons[i].empty()); - EXPECT_TRUE(ImagesShareDimensionsAndColor( - resources.action_icons[i], roundtrip_resources.action_icons[i])); - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/notifications/platform_notification_data.cc b/chromium/src/third_party/blink/common/notifications/platform_notification_data.cc deleted file mode 100644 index a67dc2b..0000000 --- a/chromium/src/third_party/blink/common/notifications/platform_notification_data.cc +++ /dev/null
@@ -1,25 +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 "third_party/blink/public/common/notifications/platform_notification_data.h" -#include "third_party/blink/public/mojom/notifications/notification.mojom.h" - -namespace blink { - -PlatformNotificationAction::PlatformNotificationAction() {} - -PlatformNotificationAction::PlatformNotificationAction( - const PlatformNotificationAction& other) = default; - -PlatformNotificationAction::~PlatformNotificationAction() {} - -PlatformNotificationData::PlatformNotificationData() - : direction(mojom::NotificationDirection::LEFT_TO_RIGHT) {} - -PlatformNotificationData::PlatformNotificationData( - const PlatformNotificationData& other) = default; - -PlatformNotificationData::~PlatformNotificationData() {} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/origin_trials/OWNERS b/chromium/src/third_party/blink/common/origin_trials/OWNERS deleted file mode 100644 index 50c5c0d..0000000 --- a/chromium/src/third_party/blink/common/origin_trials/OWNERS +++ /dev/null
@@ -1,9 +0,0 @@ -# This file also covers ownership of the following directories: -# //chrome/common/origin_trials/ -# //third_party/blink/public/common/origin_trials/ -# //third_party/blink/renderer/core/origin_trials/ -# //tools/origin_trials/ - -chasej@chromium.org -iclelland@chromium.org -mek@chromium.org
diff --git a/chromium/src/third_party/blink/common/origin_trials/trial_token.cc b/chromium/src/third_party/blink/common/origin_trials/trial_token.cc deleted file mode 100644 index 8bf0ad8..0000000 --- a/chromium/src/third_party/blink/common/origin_trials/trial_token.cc +++ /dev/null
@@ -1,308 +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 "third_party/blink/public/common/origin_trials/trial_token.h" - -#include "base/base64.h" -#include "base/big_endian.h" -#include "base/json/json_reader.h" -#include "base/logging.h" -#include "base/macros.h" -#include "base/memory/ptr_util.h" -#include "base/optional.h" -#include "base/strings/string_piece.h" -#include "base/time/time.h" -#include "base/values.h" -#include "third_party/boringssl/src/include/openssl/curve25519.h" -#include "url/gurl.h" -#include "url/origin.h" - -namespace blink { - -namespace { - -// Token payloads can be at most 4KB in size, as a guard against trying to parse -// excessively large tokens (see crbug.com/802377). The origin is the only part -// of the payload that is user-supplied. The 4KB payload limit allows for the -// origin to be ~3900 chars. In some cases, 2KB is suggested as the practical -// limit for URLs, e.g.: -// https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers -// This means tokens can contain origins that are nearly twice as long as any -// expected to be seen in the wild. -const size_t kMaxPayloadSize = 4096; -// Encoded tokens can be at most 6KB in size. Based on the 4KB payload limit, -// this allows for the payload, signature, and other format bits, plus the -// Base64 encoding overhead (~4/3 of the input). -const size_t kMaxTokenSize = 6144; - -// Version is a 1-byte field at offset 0. -const size_t kVersionOffset = 0; -const size_t kVersionSize = 1; - -// These constants define the Version 2 field sizes and offsets. -const size_t kSignatureOffset = kVersionOffset + kVersionSize; -const size_t kSignatureSize = 64; -const size_t kPayloadLengthOffset = kSignatureOffset + kSignatureSize; -const size_t kPayloadLengthSize = 4; -const size_t kPayloadOffset = kPayloadLengthOffset + kPayloadLengthSize; - -// Version 3 introduced support to match tokens against third party origins (see -// design doc -// https://docs.google.com/document/d/1xALH9W7rWmX0FpjudhDeS2TNTEOXuPn4Tlc9VmuPdHA -// for more details). -const uint8_t kVersion3 = 3; -// Version 2 is also currently supported. Version 1 was -// introduced in Chrome M50, and removed in M51. There were no experiments -// enabled in the stable M50 release which would have used those tokens. -const uint8_t kVersion2 = 2; - -const char* kUsageSubset = "subset"; - -} // namespace - -TrialToken::~TrialToken() = default; - -// static -std::unique_ptr<TrialToken> TrialToken::From( - base::StringPiece token_text, - base::StringPiece public_key, - OriginTrialTokenStatus* out_status) { - DCHECK(out_status); - std::string token_payload; - std::string token_signature; - uint8_t token_version; - *out_status = Extract(token_text, public_key, &token_payload, - &token_signature, &token_version); - if (*out_status != OriginTrialTokenStatus::kSuccess) { - DVLOG(2) << "Malformed origin trial token found (unable to extract)"; - return nullptr; - } - std::unique_ptr<TrialToken> token = Parse(token_payload, token_version); - if (token) { - token->signature_ = token_signature; - *out_status = OriginTrialTokenStatus::kSuccess; - } else { - DVLOG(2) << "Malformed origin trial token found (unable to parse)"; - *out_status = OriginTrialTokenStatus::kMalformed; - } - DVLOG(2) << "Valid origin trial token found for feature " - << token->feature_name(); - return token; -} - -OriginTrialTokenStatus TrialToken::IsValid(const url::Origin& origin, - const base::Time& now) const { - // The order of these checks is intentional. For example, will only report a - // token as expired if it is valid for the origin. - if (!ValidateOrigin(origin)) { - DVLOG(2) << "Origin trial token from different origin"; - return OriginTrialTokenStatus::kWrongOrigin; - } - if (!ValidateDate(now)) { - DVLOG(2) << "Origin trial token expired"; - return OriginTrialTokenStatus::kExpired; - } - return OriginTrialTokenStatus::kSuccess; -} - -// static -OriginTrialTokenStatus TrialToken::Extract(base::StringPiece token_text, - base::StringPiece public_key, - std::string* out_token_payload, - std::string* out_token_signature, - uint8_t* out_token_version) { - if (token_text.empty()) { - return OriginTrialTokenStatus::kMalformed; - } - - // Protect against attempting to extract arbitrarily large tokens. - // See crbug.com/802377. - if (token_text.length() > kMaxTokenSize) { - return OriginTrialTokenStatus::kMalformed; - } - - // Token is base64-encoded; decode first. - std::string token_contents; - if (!base::Base64Decode(token_text, &token_contents)) { - return OriginTrialTokenStatus::kMalformed; - } - - // Only version 2 and 3 currently supported. - if (token_contents.length() < (kVersionOffset + kVersionSize)) { - return OriginTrialTokenStatus::kMalformed; - } - uint8_t version = token_contents[kVersionOffset]; - if (version != kVersion2 && version != kVersion3) { - return OriginTrialTokenStatus::kWrongVersion; - } - - // Token must be large enough to contain a version, signature, and payload - // length. - if (token_contents.length() < (kPayloadLengthOffset + kPayloadLengthSize)) { - return OriginTrialTokenStatus::kMalformed; - } - - // Extract the length of the signed data (Big-endian). - uint32_t payload_length; - base::ReadBigEndian(&(token_contents[kPayloadLengthOffset]), &payload_length); - - // Validate that the stated length matches the actual payload length. - if (payload_length != token_contents.length() - kPayloadOffset) { - return OriginTrialTokenStatus::kMalformed; - } - - // Extract the version-specific contents of the token. - const char* token_bytes = token_contents.data(); - base::StringPiece version_piece(token_bytes + kVersionOffset, kVersionSize); - base::StringPiece signature(token_bytes + kSignatureOffset, kSignatureSize); - base::StringPiece payload_piece(token_bytes + kPayloadLengthOffset, - kPayloadLengthSize + payload_length); - - // The data which is covered by the signature is (version + length + payload). - std::string signed_data = - version_piece.as_string() + payload_piece.as_string(); - - // Validate the signature on the data before proceeding. - if (!TrialToken::ValidateSignature(signature, signed_data, public_key)) { - return OriginTrialTokenStatus::kInvalidSignature; - } - - // Return the payload and signature, as new strings. - *out_token_version = version; - *out_token_payload = token_contents.substr(kPayloadOffset, payload_length); - *out_token_signature = signature.as_string(); - return OriginTrialTokenStatus::kSuccess; -} - -// static -std::unique_ptr<TrialToken> TrialToken::Parse(const std::string& token_payload, - const uint8_t version) { - // Protect against attempting to parse arbitrarily large tokens. This check is - // required here because the fuzzer calls Parse() directly, bypassing the size - // check in Extract(). - // See crbug.com/802377. - if (token_payload.length() > kMaxPayloadSize) { - return nullptr; - } - - base::Optional<base::Value> datadict = base::JSONReader::Read(token_payload); - if (!datadict || !datadict->is_dict()) { - return nullptr; - } - - // Ensure that the origin is a valid (non-opaque) origin URL. - std::string* origin_string = datadict->FindStringKey("origin"); - if (!origin_string) { - return nullptr; - } - url::Origin origin = url::Origin::Create(GURL(*origin_string)); - if (origin.opaque()) { - return nullptr; - } - - // The |isSubdomain| flag is optional. If found, ensure it is a valid boolean. - bool is_subdomain = false; - base::Value* is_subdomain_value = datadict->FindKey("isSubdomain"); - if (is_subdomain_value) { - if (!is_subdomain_value->is_bool()) { - return nullptr; - } - is_subdomain = is_subdomain_value->GetBool(); - } - - // Ensure that the feature name is a valid string. - std::string* feature_name = datadict->FindStringKey("feature"); - if (!feature_name || feature_name->empty()) { - return nullptr; - } - - // Ensure that the expiry timestamp is a valid (positive) integer. - int expiry_timestamp = datadict->FindIntKey("expiry").value_or(0); - if (expiry_timestamp <= 0) { - return nullptr; - } - - // Initialize optional version 3 fields to default values. - bool is_third_party = false; - UsageRestriction usage = UsageRestriction::kNone; - - if (version == kVersion3) { - // The |isThirdParty| flag is optional. If found, ensure it is a valid - // boolean. - base::Value* is_third_party_value = datadict->FindKey("isThirdParty"); - if (is_third_party_value) { - if (!is_third_party_value->is_bool()) { - return nullptr; - } - is_third_party = is_third_party_value->GetBool(); - } - - // The |usage| field is optional. If found, ensure its value is either empty - // or "subset". - std::string* usage_value = datadict->FindStringKey("usage"); - if (usage_value) { - if (usage_value->empty()) { - usage = UsageRestriction::kNone; - } else if (*usage_value == kUsageSubset) { - usage = UsageRestriction::kSubset; - } else { - return nullptr; - } - } - } - - return base::WrapUnique(new TrialToken(origin, is_subdomain, *feature_name, - expiry_timestamp, is_third_party, - usage)); -} - -bool TrialToken::ValidateOrigin(const url::Origin& origin) const { - if (match_subdomains_) { - return origin.scheme() == origin_.scheme() && - origin.DomainIs(origin_.host()) && origin.port() == origin_.port(); - } - return origin == origin_; -} - -bool TrialToken::ValidateFeatureName(base::StringPiece feature_name) const { - return feature_name == feature_name_; -} - -bool TrialToken::ValidateDate(const base::Time& now) const { - return expiry_time_ > now; -} - -// static -bool TrialToken::ValidateSignature(base::StringPiece signature, - const std::string& data, - base::StringPiece public_key) { - // Public key must be 32 bytes long for Ed25519. - CHECK_EQ(public_key.length(), 32UL); - - // Signature must be 64 bytes long. - if (signature.length() != 64) { - return false; - } - - int result = ED25519_verify( - reinterpret_cast<const uint8_t*>(data.data()), data.length(), - reinterpret_cast<const uint8_t*>(signature.data()), - reinterpret_cast<const uint8_t*>(public_key.data())); - return (result != 0); -} - -TrialToken::TrialToken(const url::Origin& origin, - bool match_subdomains, - const std::string& feature_name, - uint64_t expiry_timestamp, - bool is_third_party, - UsageRestriction usage_restriction) - : origin_(origin), - match_subdomains_(match_subdomains), - feature_name_(feature_name), - expiry_time_(base::Time::FromDoubleT(expiry_timestamp)), - is_third_party_(is_third_party), - usage_restriction_(usage_restriction) {} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/origin_trials/trial_token_validator.cc b/chromium/src/third_party/blink/common/origin_trials/trial_token_validator.cc deleted file mode 100644 index 7694882..0000000 --- a/chromium/src/third_party/blink/common/origin_trials/trial_token_validator.cc +++ /dev/null
@@ -1,199 +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. - -#include "third_party/blink/public/common/origin_trials/trial_token_validator.h" - -#include <memory> -#include "base/bind.h" -#include "base/feature_list.h" -#include "base/no_destructor.h" -#include "base/time/time.h" -#include "net/http/http_response_headers.h" -#include "net/url_request/url_request.h" -#include "third_party/blink/public/common/origin_trials/origin_trial_policy.h" -#include "third_party/blink/public/common/origin_trials/trial_token.h" - -namespace { - -static base::RepeatingCallback<blink::OriginTrialPolicy*()>& PolicyGetter() { - static base::NoDestructor< - base::RepeatingCallback<blink::OriginTrialPolicy*()>> - policy(base::BindRepeating( - []() -> blink::OriginTrialPolicy* { return nullptr; })); - return *policy; -} -} // namespace - -namespace blink { - -TrialTokenResult::TrialTokenResult() = default; -TrialTokenResult::TrialTokenResult(OriginTrialTokenStatus status) - : status(status) {} -TrialTokenResult::TrialTokenResult(OriginTrialTokenStatus status, - std::string name, - base::Time expiry, - bool is_third_party) - : status(status), - feature_name(name), - expiry_time(expiry), - is_third_party(is_third_party) {} -TrialTokenResult::~TrialTokenResult() = default; - -TrialTokenValidator::TrialTokenValidator() {} - -TrialTokenValidator::~TrialTokenValidator() = default; - -void TrialTokenValidator::SetOriginTrialPolicyGetter( - base::RepeatingCallback<OriginTrialPolicy*()> policy_getter) { - PolicyGetter() = policy_getter; -} - -void TrialTokenValidator::ResetOriginTrialPolicyGetter() { - SetOriginTrialPolicyGetter(base::BindRepeating( - []() -> blink::OriginTrialPolicy* { return nullptr; })); -} - -TrialTokenResult TrialTokenValidator::ValidateToken( - base::StringPiece token, - const url::Origin& origin, - base::Time current_time) const { - return ValidateToken(token, origin, nullptr, current_time); -} - -TrialTokenResult TrialTokenValidator::ValidateToken( - base::StringPiece token, - const url::Origin& origin, - const url::Origin* third_party_origin, - base::Time current_time) const { - OriginTrialPolicy* policy = PolicyGetter().Run(); - - if (!policy || !policy->IsOriginTrialsSupported()) - return TrialTokenResult(OriginTrialTokenStatus::kNotSupported); - - std::vector<base::StringPiece> public_keys = policy->GetPublicKeys(); - if (public_keys.size() == 0) - return TrialTokenResult(OriginTrialTokenStatus::kNotSupported); - - OriginTrialTokenStatus status; - std::unique_ptr<TrialToken> trial_token; - for (auto& key : public_keys) { - trial_token = TrialToken::From(token, key, &status); - if (status == OriginTrialTokenStatus::kSuccess) - break; - } - - if (status != OriginTrialTokenStatus::kSuccess) - return TrialTokenResult(status); - - // If the third_party flag is set on the token, we match it against third - // party origin if it exists. Otherwise match against document origin. - if (trial_token->is_third_party()) { - if (third_party_origin) { - status = trial_token->IsValid(*third_party_origin, current_time); - } else { - status = OriginTrialTokenStatus::kWrongOrigin; - } - } else { - status = trial_token->IsValid(origin, current_time); - } - - if (status != OriginTrialTokenStatus::kSuccess) - return TrialTokenResult(status); - - if (policy->IsFeatureDisabled(trial_token->feature_name())) - return TrialTokenResult(OriginTrialTokenStatus::kFeatureDisabled); - - if (policy->IsTokenDisabled(trial_token->signature())) - return TrialTokenResult(OriginTrialTokenStatus::kTokenDisabled); - - if (trial_token->usage_restriction() == - TrialToken::UsageRestriction::kSubset && - policy->IsFeatureDisabledForUser(trial_token->feature_name())) - return TrialTokenResult(OriginTrialTokenStatus::kFeatureDisabledForUser); - - return TrialTokenResult(status, trial_token->feature_name(), - trial_token->expiry_time(), - trial_token->is_third_party()); -} - -bool TrialTokenValidator::RequestEnablesFeature(const net::URLRequest* request, - base::StringPiece feature_name, - base::Time current_time) const { - // TODO(mek): Possibly cache the features that are availble for request in - // UserData associated with the request. - return RequestEnablesFeature(request->url(), request->response_headers(), - feature_name, current_time); -} - -bool TrialTokenValidator::RequestEnablesFeature( - const GURL& request_url, - const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, - base::Time current_time) const { - if (!IsTrialPossibleOnOrigin(request_url)) - return false; - - url::Origin origin = url::Origin::Create(request_url); - size_t iter = 0; - std::string token; - while (response_headers->EnumerateHeader(&iter, "Origin-Trial", &token)) { - TrialTokenResult result = ValidateToken(token, origin, current_time); - // TODO(mek): Log the validation errors to histograms? - if (result.status == OriginTrialTokenStatus::kSuccess) - if (result.feature_name == feature_name) - return true; - } - return false; -} - -std::unique_ptr<TrialTokenValidator::FeatureToTokensMap> -TrialTokenValidator::GetValidTokensFromHeaders( - const url::Origin& origin, - const net::HttpResponseHeaders* headers, - base::Time current_time) const { - std::unique_ptr<FeatureToTokensMap> tokens( - std::make_unique<FeatureToTokensMap>()); - if (!IsTrialPossibleOnOrigin(origin.GetURL())) - return tokens; - - size_t iter = 0; - std::string token; - while (headers->EnumerateHeader(&iter, "Origin-Trial", &token)) { - TrialTokenResult result = ValidateToken(token, origin, current_time); - if (result.status == OriginTrialTokenStatus::kSuccess) { - (*tokens)[result.feature_name].push_back(token); - } - } - return tokens; -} - -std::unique_ptr<TrialTokenValidator::FeatureToTokensMap> -TrialTokenValidator::GetValidTokens(const url::Origin& origin, - const FeatureToTokensMap& tokens, - base::Time current_time) const { - std::unique_ptr<FeatureToTokensMap> out_tokens( - std::make_unique<FeatureToTokensMap>()); - if (!IsTrialPossibleOnOrigin(origin.GetURL())) - return out_tokens; - - for (const auto& feature : tokens) { - for (const std::string& token : feature.second) { - TrialTokenResult result = ValidateToken(token, origin, current_time); - if (result.status == OriginTrialTokenStatus::kSuccess) { - DCHECK_EQ(result.feature_name, feature.first); - (*out_tokens)[feature.first].push_back(token); - } - } - } - return out_tokens; -} - -// static -bool TrialTokenValidator::IsTrialPossibleOnOrigin(const GURL& url) { - OriginTrialPolicy* policy = PolicyGetter().Run(); - return policy && policy->IsOriginTrialsSupported() && - policy->IsOriginSecure(url); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc b/chromium/src/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc deleted file mode 100644 index 8cc3ab2..0000000 --- a/chromium/src/third_party/blink/common/origin_trials/trial_token_validator_unittest.cc +++ /dev/null
@@ -1,486 +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. - -#include "third_party/blink/public/common/origin_trials/trial_token_validator.h" - -#include <memory> -#include <set> -#include <string> - -#include "base/bind.h" -#include "base/memory/ptr_util.h" -#include "base/stl_util.h" -#include "base/strings/string_util.h" -#include "base/test/simple_test_clock.h" -#include "base/time/time.h" -#include "net/http/http_response_headers.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/origin_trials/origin_trial_policy.h" -#include "third_party/blink/public/common/origin_trials/trial_token.h" -#include "url/gurl.h" - -namespace blink { -namespace trial_token_validator_unittest { - -// These are sample public keys for testing the API. - -// For the first public key, the corresponding private key (use this -// to generate new samples for this test file) is: -// -// 0x83, 0x67, 0xf4, 0xcd, 0x2a, 0x1f, 0x0e, 0x04, 0x0d, 0x43, 0x13, -// 0x4c, 0x67, 0xc4, 0xf4, 0x28, 0xc9, 0x90, 0x15, 0x02, 0xe2, 0xba, -// 0xfd, 0xbb, 0xfa, 0xbc, 0x92, 0x76, 0x8a, 0x2c, 0x4b, 0xc7, 0x75, -// 0x10, 0xac, 0xf9, 0x3a, 0x1c, 0xb8, 0xa9, 0x28, 0x70, 0xd2, 0x9a, -// 0xd0, 0x0b, 0x59, 0xe1, 0xac, 0x2b, 0xb7, 0xd5, 0xca, 0x1f, 0x64, -// 0x90, 0x08, 0x8e, 0xa8, 0xe0, 0x56, 0x3a, 0x04, 0xd0 - -// For the second public key, the corresponding private key is: - -// 0x21, 0xee, 0xfa, 0x81, 0x6a, 0xff, 0xdf, 0xb8, 0xc1, 0xdd, 0x75, -// 0x05, 0x04, 0x29, 0x68, 0x67, 0x60, 0x85, 0x91, 0xd0, 0x50, 0x16, -// 0x0a, 0xcf, 0xa2, 0x37, 0xa3, 0x2e, 0x11, 0x7a, 0x17, 0x96, 0x50, -// 0x07, 0x4d, 0x76, 0x55, 0x56, 0x42, 0x17, 0x2d, 0x8a, 0x9c, 0x47, -// 0x96, 0x25, 0xda, 0x70, 0xaa, 0xb9, 0xfd, 0x53, 0x5d, 0x51, 0x3e, -// 0x16, 0xab, 0xb4, 0x86, 0xea, 0xf3, 0x35, 0xc6, 0xca -const uint8_t kTestPublicKeys[][32] = { - { - 0x75, 0x10, 0xac, 0xf9, 0x3a, 0x1c, 0xb8, 0xa9, 0x28, 0x70, 0xd2, - 0x9a, 0xd0, 0x0b, 0x59, 0xe1, 0xac, 0x2b, 0xb7, 0xd5, 0xca, 0x1f, - 0x64, 0x90, 0x08, 0x8e, 0xa8, 0xe0, 0x56, 0x3a, 0x04, 0xd0, - }, - { - 0x50, 0x07, 0x4d, 0x76, 0x55, 0x56, 0x42, 0x17, 0x2d, 0x8a, 0x9c, - 0x47, 0x96, 0x25, 0xda, 0x70, 0xaa, 0xb9, 0xfd, 0x53, 0x5d, 0x51, - 0x3e, 0x16, 0xab, 0xb4, 0x86, 0xea, 0xf3, 0x35, 0xc6, 0xca, - }}; -const int kTestPublicKeysSize = 2; - -// The corresponding private key can be found above. -const uint8_t kTestPublicKeys2[][32] = {{ - 0x50, 0x07, 0x4d, 0x76, 0x55, 0x56, 0x42, 0x17, 0x2d, 0x8a, 0x9c, - 0x47, 0x96, 0x25, 0xda, 0x70, 0xaa, 0xb9, 0xfd, 0x53, 0x5d, 0x51, - 0x3e, 0x16, 0xab, 0xb4, 0x86, 0xea, 0xf3, 0x35, 0xc6, 0xca, -}}; -const int kTestPublicKeys2Size = 1; - -// This is a good trial token, signed with the above test private key. -// TODO(iclelland): This token expires in 2033. Update it or find a way -// to autogenerate it before then. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py valid.example.com Frobulate --expire-timestamp=2000000000 -const char kSampleToken[] = - "AuR/1mg+/w5ROLN54Ok20rApK3opgR7Tq9ZfzhATQmnCa+BtPA1RRw4Nigf336r+" - "O4fM3Sa+MEd+5JcIgSZafw8AAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" - "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" - "IjogMjAwMDAwMDAwMH0="; -const uint8_t kSampleTokenSignature[] = { - 0xe4, 0x7f, 0xd6, 0x68, 0x3e, 0xff, 0x0e, 0x51, 0x38, 0xb3, 0x79, - 0xe0, 0xe9, 0x36, 0xd2, 0xb0, 0x29, 0x2b, 0x7a, 0x29, 0x81, 0x1e, - 0xd3, 0xab, 0xd6, 0x5f, 0xce, 0x10, 0x13, 0x42, 0x69, 0xc2, 0x6b, - 0xe0, 0x6d, 0x3c, 0x0d, 0x51, 0x47, 0x0e, 0x0d, 0x8a, 0x07, 0xf7, - 0xdf, 0xaa, 0xfe, 0x3b, 0x87, 0xcc, 0xdd, 0x26, 0xbe, 0x30, 0x47, - 0x7e, 0xe4, 0x97, 0x08, 0x81, 0x26, 0x5a, 0x7f, 0x0f}; - -// The expiry time of the sample token (2033-05-18 03:33:20 UTC). -const base::Time kSampleTokenExpiryTime = base::Time::FromJsTime(2000000000000); - -// This is a trial token signed with the corresponding private key -// for kTestPublicKeys2 -// TODO(iclelland): This token expires in 2033. Update it or find a way -// to autogenerate it before then. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py valid.example.com Frobulate --expire-timestamp=2000000000 -// --key-file=eftest2.key -const char kSampleToken2[] = - "Ar3e2ev1rH7T/5NRr/9g/ehLLk7dXBi4mjluPG7pohGifzTJCgBtuGhgJXO/8tD/" - "m59D2hj0sLjSYSDw4B5NiA4AAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5le" - "GFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5Ij" - "ogMjAwMDAwMDAwMH0="; - -// The token should be valid for this origin and for this feature. -const char kAppropriateOrigin[] = "https://valid.example.com"; -const char kAppropriateFeatureName[] = "Frobulate"; -const char kAppropriateThirdPartyFeatureName[] = "FrobulateThirdParty"; - -const char kInappropriateFeatureName[] = "Grokalyze"; -const char kInappropriateOrigin[] = "https://invalid.example.com"; -const char kInsecureOrigin[] = "http://valid.example.com"; - -// Well-formed trial token with an invalid signature. -// This token is a corruption of the above valid token. -const char kInvalidSignatureToken[] = - "AuR/1mg+/w5ROLN54Ok20rApK3opgR7Tq9ZfzhATQmnCa+BtPA1RRw4Nigf336r+" - "RrOtlAwa0gPqqn+A8GTD3AQAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" - "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" - "IjogMjAwMDAwMDAwMH0="; - -// Well-formed, but expired, trial token. (Expired in 2001) -// Generate this token with the command (in tools/origin_trials): -// generate_token.py valid.example.com Frobulate --expire-timestamp=1000000000 -const char kExpiredToken[] = - "AmHPUIXMaXe9jWW8kJeDFXolVjT93p4XMnK4+jMYd2pjqtFcYB1bUmdD8PunQKM+" - "RrOtlAwa0gPqqn+A8GTD3AQAAABZeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" - "eGFtcGxlLmNvbTo0NDMiLCAiZmVhdHVyZSI6ICJGcm9idWxhdGUiLCAiZXhwaXJ5" - "IjogMTAwMDAwMDAwMH0="; -const uint8_t kExpiredTokenSignature[] = { - 0x61, 0xcf, 0x50, 0x85, 0xcc, 0x69, 0x77, 0xbd, 0x8d, 0x65, 0xbc, - 0x90, 0x97, 0x83, 0x15, 0x7a, 0x25, 0x56, 0x34, 0xfd, 0xde, 0x9e, - 0x17, 0x32, 0x72, 0xb8, 0xfa, 0x33, 0x18, 0x77, 0x6a, 0x63, 0xaa, - 0xd1, 0x5c, 0x60, 0x1d, 0x5b, 0x52, 0x67, 0x43, 0xf0, 0xfb, 0xa7, - 0x40, 0xa3, 0x3e, 0x46, 0xb3, 0xad, 0x94, 0x0c, 0x1a, 0xd2, 0x03, - 0xea, 0xaa, 0x7f, 0x80, 0xf0, 0x64, 0xc3, 0xdc, 0x04}; - -const char kUnparsableToken[] = "abcde"; - -// Well-formed token, for an insecure origin. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py http://valid.example.com Frobulate -// --expire-timestamp=2000000000 -const char kInsecureOriginToken[] = - "AjfC47H1q8/Ho5ALFkjkwf9CBK6oUUeRTlFc50Dj+eZEyGGKFIY2WTxMBfy8cLc3" - "E0nmFroDA3OmABmO5jMCFgkAAABXeyJvcmlnaW4iOiAiaHR0cDovL3ZhbGlkLmV4" - "YW1wbGUuY29tOjgwIiwgImZlYXR1cmUiOiAiRnJvYnVsYXRlIiwgImV4cGlyeSI6" - "IDIwMDAwMDAwMDB9"; - -// Well-formed token, for match against third party origins. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py 3 valid.example.com Frobulate -// --is-third-party --expire-timestamp=2000000000 -const char kThirdPartyToken[] = - "A8ZESIWJHtuoIZyWgaHUPEhuc4CnbiETy5D4" - "PeABEP8NB8oI2fUfF9N53elgnNuyL0ltq+fzMta1pgU3VYLyuAcAAABveyJvcmln" - "aW4iOiAiaHR0cHM6Ly92YWxpZC5leGFtcGxlLmNvbTo0NDMiLCAiaXNUaGlyZFBh" - "cnR5IjogdHJ1ZSwgImZlYXR1cmUiOiAiRnJvYnVsYXRlIiwgImV4cGlyeSI6IDIw" - "MDAwMDAwMDB9"; - -// Well-formed token, for match against third party origins and its usage -// set to user subset exclusion. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py valid.example.com FrobulateThirdParty -// --version 3 --is-third-party --usage-restriction subset -// --expire-timestamp=2000000000 -const char kThirdPartyUsageSubsetToken[] = - "A3mGpVqzEea9V9Nl6Qr2LS84PxTf2ZnWdtU6cNZvGmX1rRX5khvJSYuYSCP0J8Ca" - "XLG+MH6jT+3IH7CWVASK0gcAAACMeyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5l" - "eGFtcGxlLmNvbTo0NDMiLCAiaXNUaGlyZFBhcnR5IjogdHJ1ZSwgInVzYWdlIjog" - "InN1YnNldCIsICJmZWF0dXJlIjogIkZyb2J1bGF0ZVRoaXJkUGFydHkiLCAiZXhw" - "aXJ5IjogMjAwMDAwMDAwMH0="; - -// Well-formed token, for first party, with usage set to user subset exclusion. -// Generate this token with the command (in tools/origin_trials): -// generate_token.py valid.example.com FrobulateThirdParty -// --version 3 --usage-restriction subset --expire-timestamp=2000000000 -const char kUsageSubsetToken[] = - "Axi0wjIp8gaGr/" - "pTPzwrHqeWXnmhCiZhE2edsJ9fHX25GV6A8zg1fCv27qhBNnbxjqDpU0a+" - "xKScEiqKK1MS3QUAAAB2eyJvcmlnaW4iOiAiaHR0cHM6Ly92YWxpZC5leGFtcGxlLmNvbTo0ND" - "MiLCAidXNhZ2UiOiAic3Vic2V0IiwgImZlYXR1cmUiOiAiRnJvYnVsYXRlVGhpcmRQYXJ0eSIs" - "ICJleHBpcnkiOiAyMDAwMDAwMDAwfQ=="; - -// This timestamp is set to a time after the expiry timestamp of kExpiredToken, -// but before the expiry timestamp of kValidToken. -double kNowTimestamp = 1500000000; - -class TestOriginTrialPolicy : public OriginTrialPolicy { - public: - bool IsOriginTrialsSupported() const override { return true; } - bool IsOriginSecure(const GURL& url) const override { - return url.SchemeIs("https"); - } - std::vector<base::StringPiece> GetPublicKeys() const override { - return keys_; - } - bool IsFeatureDisabled(base::StringPiece feature) const override { - return disabled_features_.count(feature.as_string()) > 0; - } - - bool IsFeatureDisabledForUser(base::StringPiece feature) const override { - return disabled_features_for_user_.count(feature.as_string()) > 0; - } - - // Test setup methods - void SetPublicKeys(const uint8_t keys[][32], const int keys_size) { - keys_.clear(); - for (int n = 0; n < keys_size; n++) { - keys_.push_back(base::StringPiece(reinterpret_cast<const char*>(keys[n]), - base::size(keys[n]))); - } - } - void DisableFeature(const std::string& feature) { - disabled_features_.insert(feature); - } - void DisableFeatureForUser(const std::string& feature) { - disabled_features_for_user_.insert(feature); - } - void DisableToken(const std::string& token) { - disabled_tokens_.insert(token); - } - - protected: - bool IsTokenDisabled(base::StringPiece token_signature) const override { - return disabled_tokens_.count(token_signature.as_string()) > 0; - } - - private: - std::vector<base::StringPiece> keys_; - std::set<std::string> disabled_features_; - std::set<std::string> disabled_features_for_user_; - std::set<std::string> disabled_tokens_; -}; - -class TrialTokenValidatorTest : public testing::Test { - public: - TrialTokenValidatorTest() - : appropriate_origin_(url::Origin::Create(GURL(kAppropriateOrigin))), - inappropriate_origin_(url::Origin::Create(GURL(kInappropriateOrigin))), - insecure_origin_(url::Origin::Create(GURL(kInsecureOrigin))), - valid_token_signature_( - std::string(reinterpret_cast<const char*>(kSampleTokenSignature), - base::size(kSampleTokenSignature))), - expired_token_signature_( - std::string(reinterpret_cast<const char*>(kExpiredTokenSignature), - base::size(kExpiredTokenSignature))), - response_headers_(new net::HttpResponseHeaders("")) { - TrialTokenValidator::SetOriginTrialPolicyGetter( - base::BindRepeating([](OriginTrialPolicy* policy) { return policy; }, - base::Unretained(&policy_))); - SetPublicKeys(kTestPublicKeys, kTestPublicKeysSize); - } - - ~TrialTokenValidatorTest() override { - TrialTokenValidator::ResetOriginTrialPolicyGetter(); - } - - void SetPublicKeys(const uint8_t keys[][32], const int keys_size) { - policy_.SetPublicKeys(keys, keys_size); - } - - void DisableFeature(const std::string& feature) { - policy_.DisableFeature(feature); - } - - void DisableFeatureForUser(const std::string& feature) { - policy_.DisableFeatureForUser(feature); - } - - void DisableToken(const std::string& token_signature) { - policy_.DisableToken(token_signature); - } - - base::Time Now() { return base::Time::FromDoubleT(kNowTimestamp); } - - const url::Origin appropriate_origin_; - const url::Origin inappropriate_origin_; - const url::Origin insecure_origin_; - - std::string valid_token_signature_; - std::string expired_token_signature_; - - scoped_refptr<net::HttpResponseHeaders> response_headers_; - - TestOriginTrialPolicy policy_; - const TrialTokenValidator validator_; -}; - -TEST_F(TrialTokenValidatorTest, ValidateValidToken) { - TrialTokenResult result = - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - EXPECT_EQ(false, result.is_third_party); - - // All signing keys should be able to validate their tokens. - result = validator_.ValidateToken(kSampleToken2, appropriate_origin_, Now()); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - EXPECT_EQ(false, result.is_third_party); -} - -TEST_F(TrialTokenValidatorTest, ValidateThirdPartyTokenFromExternalScript) { - TrialTokenResult result = validator_.ValidateToken( - kThirdPartyToken, inappropriate_origin_, &appropriate_origin_, Now()); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - EXPECT_EQ(true, result.is_third_party); -} - -TEST_F(TrialTokenValidatorTest, - ValidateThirdPartyTokenFromInappropriateScriptOrigin) { - EXPECT_EQ(blink::OriginTrialTokenStatus::kWrongOrigin, - validator_ - .ValidateToken(kThirdPartyToken, appropriate_origin_, - &inappropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateThirdPartyTokenNotFromExternalScript) { - EXPECT_EQ( - blink::OriginTrialTokenStatus::kWrongOrigin, - validator_ - .ValidateToken(kThirdPartyToken, appropriate_origin_, nullptr, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateInappropriateOrigin) { - EXPECT_EQ(blink::OriginTrialTokenStatus::kWrongOrigin, - validator_.ValidateToken(kSampleToken, inappropriate_origin_, Now()) - .status); - EXPECT_EQ( - blink::OriginTrialTokenStatus::kWrongOrigin, - validator_.ValidateToken(kSampleToken, insecure_origin_, Now()).status); -} - -TEST_F(TrialTokenValidatorTest, ValidateInvalidSignature) { - EXPECT_EQ( - blink::OriginTrialTokenStatus::kInvalidSignature, - validator_ - .ValidateToken(kInvalidSignatureToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateUnparsableToken) { - EXPECT_EQ( - blink::OriginTrialTokenStatus::kMalformed, - validator_.ValidateToken(kUnparsableToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateExpiredToken) { - EXPECT_EQ(blink::OriginTrialTokenStatus::kExpired, - validator_.ValidateToken(kExpiredToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateValidTokenWithIncorrectKey) { - SetPublicKeys(kTestPublicKeys2, kTestPublicKeys2Size); - EXPECT_EQ(blink::OriginTrialTokenStatus::kInvalidSignature, - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, PublicKeyNotAvailable) { - SetPublicKeys({}, 0); - EXPECT_EQ(blink::OriginTrialTokenStatus::kNotSupported, - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidatorRespectsDisabledFeatures) { - TrialTokenResult result = - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()); - // Disable an irrelevant feature; token should still validate - DisableFeature(kInappropriateFeatureName); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - // Disable the token's feature; it should no longer be valid - DisableFeature(kAppropriateFeatureName); - EXPECT_EQ(blink::OriginTrialTokenStatus::kFeatureDisabled, - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()) - .status); -} -TEST_F(TrialTokenValidatorTest, - ValidatorRespectsDisabledFeaturesForUserWithFirstPartyToken) { - // Token should be valid if the feature is not disabled for user. - TrialTokenResult result = - validator_.ValidateToken(kUsageSubsetToken, appropriate_origin_, Now()); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateThirdPartyFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - // Token should be invalid when the feature is disabled for user. - DisableFeatureForUser(kAppropriateThirdPartyFeatureName); - EXPECT_EQ( - blink::OriginTrialTokenStatus::kFeatureDisabledForUser, - validator_.ValidateToken(kUsageSubsetToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, - ValidatorRespectsDisabledFeaturesForUserWithThirdPartyToken) { - // Token should be valid if the feature is not disabled for user. - TrialTokenResult result = validator_.ValidateToken( - kThirdPartyUsageSubsetToken, inappropriate_origin_, &appropriate_origin_, - Now()); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateThirdPartyFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - // Token should be invalid when the feature is disabled for user. - DisableFeatureForUser(kAppropriateThirdPartyFeatureName); - EXPECT_EQ( - blink::OriginTrialTokenStatus::kFeatureDisabledForUser, - validator_ - .ValidateToken(kThirdPartyUsageSubsetToken, inappropriate_origin_, - &appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidatorRespectsDisabledTokens) { - TrialTokenResult result = - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()); - // Disable an irrelevant token; token should still validate - DisableToken(expired_token_signature_); - EXPECT_EQ(blink::OriginTrialTokenStatus::kSuccess, result.status); - EXPECT_EQ(kAppropriateFeatureName, result.feature_name); - EXPECT_EQ(kSampleTokenExpiryTime, result.expiry_time); - - // Disable the token; it should no longer be valid - DisableToken(valid_token_signature_); - EXPECT_EQ(blink::OriginTrialTokenStatus::kTokenDisabled, - validator_.ValidateToken(kSampleToken, appropriate_origin_, Now()) - .status); -} - -TEST_F(TrialTokenValidatorTest, ValidateRequestInsecure) { - response_headers_->AddHeader("Origin-Trial", kInsecureOriginToken); - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kInsecureOrigin), response_headers_.get(), kAppropriateFeatureName, - Now())); -} - -TEST_F(TrialTokenValidatorTest, ValidateRequestValidToken) { - response_headers_->AddHeader("Origin-Trial", kSampleToken); - EXPECT_TRUE(validator_.RequestEnablesFeature(GURL(kAppropriateOrigin), - response_headers_.get(), - kAppropriateFeatureName, Now())); -} - -TEST_F(TrialTokenValidatorTest, ValidateRequestNoTokens) { - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kAppropriateOrigin), response_headers_.get(), - kAppropriateFeatureName, Now())); -} - -TEST_F(TrialTokenValidatorTest, ValidateRequestMultipleHeaders) { - response_headers_->AddHeader("Origin-Trial", kSampleToken); - response_headers_->AddHeader("Origin-Trial", kExpiredToken); - EXPECT_TRUE(validator_.RequestEnablesFeature(GURL(kAppropriateOrigin), - response_headers_.get(), - kAppropriateFeatureName, Now())); - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kAppropriateOrigin), response_headers_.get(), - kInappropriateFeatureName, Now())); - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kInappropriateOrigin), response_headers_.get(), - kAppropriateFeatureName, Now())); -} - -TEST_F(TrialTokenValidatorTest, ValidateRequestMultipleHeaderValues) { - response_headers_->AddHeader( - "Origin-Trial", std::string(kExpiredToken) + ", " + kSampleToken); - EXPECT_TRUE(validator_.RequestEnablesFeature(GURL(kAppropriateOrigin), - response_headers_.get(), - kAppropriateFeatureName, Now())); - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kAppropriateOrigin), response_headers_.get(), - kInappropriateFeatureName, Now())); - EXPECT_FALSE(validator_.RequestEnablesFeature( - GURL(kInappropriateOrigin), response_headers_.get(), - kAppropriateFeatureName, Now())); -} - -} // namespace trial_token_validator_unittest -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/page/OWNERS b/chromium/src/third_party/blink/common/page/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/page/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/page/content_to_visible_time_reporter_unittest.cc b/chromium/src/third_party/blink/common/page/content_to_visible_time_reporter_unittest.cc deleted file mode 100644 index b10a7ee..0000000 --- a/chromium/src/third_party/blink/common/page/content_to_visible_time_reporter_unittest.cc +++ /dev/null
@@ -1,544 +0,0 @@ -// Copyright 2019 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 <strstream> -#include <utility> - -#include "base/rand_util.h" -#include "base/strings/stringprintf.h" -#include "base/test/metrics/histogram_tester.h" -#include "base/test/task_environment.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/page/content_to_visible_time_reporter.h" -#include "ui/gfx/presentation_feedback.h" - -namespace blink { - -constexpr char kDurationWithSavedFramesHistogram[] = - "Browser.Tabs.TotalSwitchDuration.WithSavedFrames"; -constexpr char kDurationNoSavedFramesHistogram[] = - "Browser.Tabs.TotalSwitchDuration.NoSavedFrames_Loaded"; -constexpr char kDurationNoSavedFramesUnloadedHistogram[] = - "Browser.Tabs.TotalSwitchDuration.NoSavedFrames_NotLoaded"; - -constexpr char kIncompleteDurationWithSavedFramesHistogram[] = - "Browser.Tabs.TotalIncompleteSwitchDuration.WithSavedFrames"; -constexpr char kIncompleteDurationNoSavedFramesHistogram[] = - "Browser.Tabs.TotalIncompleteSwitchDuration.NoSavedFrames_Loaded"; -constexpr char kIncompleteDurationNoSavedFramesUnloadedHistogram[] = - "Browser.Tabs.TotalIncompleteSwitchDuration.NoSavedFrames_NotLoaded"; - -constexpr char kResultWithSavedFramesHistogram[] = - "Browser.Tabs.TabSwitchResult.WithSavedFrames"; -constexpr char kResultNoSavedFramesHistogram[] = - "Browser.Tabs.TabSwitchResult.NoSavedFrames_Loaded"; -constexpr char kResultNoSavedFramesUnloadedHistogram[] = - "Browser.Tabs.TabSwitchResult.NoSavedFrames_NotLoaded"; -constexpr char kWebContentsUnOccludedHistogram[] = - "Aura.WebContentsWindowUnOccludedTime"; -constexpr char kBfcacheRestoreHistogram[] = - "BackForwardCache.Restore.NavigationToFirstPaint"; - -constexpr base::TimeDelta kDuration = base::TimeDelta::FromMilliseconds(42); -constexpr base::TimeDelta kOtherDuration = - base::TimeDelta::FromMilliseconds(4242); - -class ContentToVisibleTimeReporterTest : public testing::Test { - protected: - void SetUp() override { - // Expect all histograms to be empty. - ExpectHistogramsEmptyExcept({}); - } - - void ExpectHistogramsEmptyExcept( - std::vector<const char*> histograms_with_values) { - constexpr const char* kAllHistograms[] = { - kDurationWithSavedFramesHistogram, - kDurationNoSavedFramesHistogram, - kDurationNoSavedFramesUnloadedHistogram, - kIncompleteDurationWithSavedFramesHistogram, - kIncompleteDurationNoSavedFramesHistogram, - kIncompleteDurationNoSavedFramesUnloadedHistogram, - kResultWithSavedFramesHistogram, - kResultNoSavedFramesHistogram, - kResultNoSavedFramesUnloadedHistogram, - kWebContentsUnOccludedHistogram}; - for (const char* histogram : kAllHistograms) { - if (!base::Contains(histograms_with_values, histogram)) - ExpectTotalSamples(histogram, 0); - } - } - - void ExpectTotalSamples(const char* histogram_name, int expected_count) { - SCOPED_TRACE(base::StringPrintf("Expect %d samples in %s.", expected_count, - histogram_name)); - EXPECT_EQ(static_cast<int>( - histogram_tester_.GetAllSamples(histogram_name).size()), - expected_count); - } - - void ExpectTimeBucketCount(const char* histogram_name, - base::TimeDelta value, - int count) { - histogram_tester_.ExpectTimeBucketCount(histogram_name, value, count); - } - - void ExpectResultBucketCount( - const char* histogram_name, - ContentToVisibleTimeReporter::TabSwitchResult value, - int count) { - histogram_tester_.ExpectBucketCount(histogram_name, value, count); - } - - base::test::TaskEnvironment task_environment_{ - base::test::TaskEnvironment::TimeSource::MOCK_TIME}; - ContentToVisibleTimeReporter tab_switch_time_recorder_; - base::HistogramTester histogram_tester_; -}; - -// Time is properly recorded to histogram when we have saved frames and if we -// have a proper matching TabWasShown and callback execution. -TEST_F(ContentToVisibleTimeReporterTest, TimeIsRecordedWithSavedFrames) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept( - {kDurationWithSavedFramesHistogram, kResultWithSavedFramesHistogram}); - - // Duration. - ExpectTotalSamples(kDurationWithSavedFramesHistogram, 1); - ExpectTimeBucketCount(kDurationWithSavedFramesHistogram, kDuration, 1); - - // Result. - ExpectTotalSamples(kResultWithSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); -} - -// Time is properly recorded to histogram when we have no saved frame and if we -// have a proper matching TabWasShown and callback execution. -TEST_F(ContentToVisibleTimeReporterTest, TimeIsRecordedNoSavedFrame) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept( - {kDurationNoSavedFramesHistogram, kResultNoSavedFramesHistogram}); - - // Duration. - ExpectTotalSamples(kDurationNoSavedFramesHistogram, 1); - ExpectTimeBucketCount(kDurationNoSavedFramesHistogram, kDuration, 1); - - // Result. - ExpectTotalSamples(kResultNoSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultNoSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); -} - -// Same as TimeIsRecordedNoSavedFrame but with the destination frame unloaded. -TEST_F(ContentToVisibleTimeReporterTest, TimeIsRecordedNoSavedFrameUnloaded) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, - /* destination_is_loaded */ false, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kDurationNoSavedFramesUnloadedHistogram, - kResultNoSavedFramesUnloadedHistogram}); - - // Duration. - ExpectTotalSamples(kDurationNoSavedFramesUnloadedHistogram, 1); - ExpectTimeBucketCount(kDurationNoSavedFramesUnloadedHistogram, kDuration, 1); - - // Result. - ExpectTotalSamples(kResultNoSavedFramesUnloadedHistogram, 1); - ExpectResultBucketCount( - kResultNoSavedFramesUnloadedHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); -} - -// A failure should be reported if gfx::PresentationFeedback contains the -// kFailure flag. -TEST_F(ContentToVisibleTimeReporterTest, PresentationFailureWithSavedFrames) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start); - std::move(callback).Run(gfx::PresentationFeedback::Failure()); - - ExpectHistogramsEmptyExcept({kResultWithSavedFramesHistogram}); - - // Result (no duration is recorded on presentation failure). - ExpectTotalSamples(kResultWithSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kPresentationFailure, 1); -} - -// A failure should be reported if gfx::PresentationFeedback contains the -// kFailure flag. -TEST_F(ContentToVisibleTimeReporterTest, PresentationFailureNoSavedFrames) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start); - std::move(callback).Run(gfx::PresentationFeedback::Failure()); - - // Result (no duration is recorded on presentation failure). - ExpectTotalSamples(kResultNoSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultNoSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kPresentationFailure, 1); -} - -// An incomplete tab switch is reported when no frame is shown before a tab is -// hidden. -TEST_F(ContentToVisibleTimeReporterTest, - HideBeforePresentFrameWithSavedFrames) { - const auto start1 = base::TimeTicks::Now(); - auto callback1 = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start1, - /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start1); - - task_environment_.FastForwardBy(kDuration); - tab_switch_time_recorder_.TabWasHidden(); - - ExpectHistogramsEmptyExcept({kResultWithSavedFramesHistogram, - kIncompleteDurationWithSavedFramesHistogram}); - - // Duration. - ExpectTotalSamples(kIncompleteDurationWithSavedFramesHistogram, 1); - ExpectTimeBucketCount(kIncompleteDurationWithSavedFramesHistogram, kDuration, - 1); - - // Result. - ExpectTotalSamples(kResultWithSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kIncomplete, 1); - - const auto start2 = base::TimeTicks::Now(); - auto callback2 = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start2, - /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start2); - const auto end2 = start2 + kOtherDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end2, end2 - start2, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback2).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kDurationWithSavedFramesHistogram, - kResultWithSavedFramesHistogram, - kIncompleteDurationWithSavedFramesHistogram}); - - // Duration. - ExpectTotalSamples(kIncompleteDurationWithSavedFramesHistogram, 1); - ExpectTotalSamples(kDurationWithSavedFramesHistogram, 1); - ExpectTimeBucketCount(kDurationWithSavedFramesHistogram, kOtherDuration, 1); - - // Result. - ExpectTotalSamples(kResultWithSavedFramesHistogram, 2); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kIncomplete, 1); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); -} - -// An incomplete tab switch is reported when no frame is shown before a tab is -// hidden. -TEST_F(ContentToVisibleTimeReporterTest, HideBeforePresentFrameNoSavedFrames) { - const auto start1 = base::TimeTicks::Now(); - auto callback1 = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start1, - /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start1); - - task_environment_.FastForwardBy(kDuration); - tab_switch_time_recorder_.TabWasHidden(); - - // Duration. - ExpectTotalSamples(kIncompleteDurationNoSavedFramesHistogram, 1); - ExpectTimeBucketCount(kIncompleteDurationNoSavedFramesHistogram, kDuration, - 1); - - // Result. - ExpectTotalSamples(kResultNoSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultNoSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kIncomplete, 1); - - const auto start2 = base::TimeTicks::Now(); - auto callback2 = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start2, - /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ false), - start2); - const auto end2 = start2 + kOtherDuration; - - auto presentation_feedback = gfx::PresentationFeedback( - end2, end2 - start2, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback2).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kIncompleteDurationNoSavedFramesHistogram, - kDurationNoSavedFramesHistogram, - kResultNoSavedFramesHistogram}); - - // Duration. - ExpectTotalSamples(kIncompleteDurationNoSavedFramesHistogram, 1); - ExpectTimeBucketCount(kIncompleteDurationNoSavedFramesHistogram, kDuration, - 1); - - ExpectTotalSamples(kDurationNoSavedFramesHistogram, 1); - ExpectTimeBucketCount(kDurationNoSavedFramesHistogram, kOtherDuration, 1); - - // Result. - ExpectTotalSamples(kResultNoSavedFramesHistogram, 2); - ExpectResultBucketCount( - kResultNoSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kIncomplete, 1); - ExpectResultBucketCount( - kResultNoSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); -} - -// Time is properly recorded to histogram when we have unoccluded event. -TEST_F(ContentToVisibleTimeReporterTest, UnoccludedTimeIsRecorded) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ false, - /* show_reason_tab_switching */ false, - /* show_reason_unoccluded */ true, - /* show_reason_bfcache_restore */ false), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kWebContentsUnOccludedHistogram}); - - // UnOccluded. - ExpectTotalSamples(kWebContentsUnOccludedHistogram, 1); - ExpectTimeBucketCount(kWebContentsUnOccludedHistogram, kDuration, 1); -} - -// Time is properly recorded to histogram when we have unoccluded event -// and some other events too. -TEST_F(ContentToVisibleTimeReporterTest, - TimeIsRecordedWithSavedFramesPlusUnoccludedTimeIsRecorded) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - true /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ true, - /* show_reason_tab_switching */ true, - /* show_reason_unoccluded */ true, - /* show_reason_bfcache_restore */ false), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kDurationWithSavedFramesHistogram, - kResultWithSavedFramesHistogram, - kWebContentsUnOccludedHistogram}); - - // Duration. - ExpectTotalSamples(kDurationWithSavedFramesHistogram, 1); - ExpectTimeBucketCount(kDurationWithSavedFramesHistogram, kDuration, 1); - - // Result. - ExpectTotalSamples(kResultWithSavedFramesHistogram, 1); - ExpectResultBucketCount( - kResultWithSavedFramesHistogram, - ContentToVisibleTimeReporter::TabSwitchResult::kSuccess, 1); - - // UnOccluded. - ExpectTotalSamples(kWebContentsUnOccludedHistogram, 1); - ExpectTimeBucketCount(kWebContentsUnOccludedHistogram, kDuration, 1); -} - -// Time is properly recorded to histogram when we have bfcache restore event. -TEST_F(ContentToVisibleTimeReporterTest, BfcacheRestoreTimeIsRecorded) { - const auto start = base::TimeTicks::Now(); - auto callback = tab_switch_time_recorder_.TabWasShown( - false /* has_saved_frames */, - blink::mojom::RecordContentToVisibleTimeRequest::New( - start, /* destination_is_loaded */ false, - /* show_reason_tab_switching */ false, - /* show_reason_unoccluded */ false, - /* show_reason_bfcache_restore */ true), - start); - const auto end = start + kDuration; - auto presentation_feedback = gfx::PresentationFeedback( - end, end - start, gfx::PresentationFeedback::Flags::kHWCompletion); - std::move(callback).Run(presentation_feedback); - - ExpectHistogramsEmptyExcept({kBfcacheRestoreHistogram}); - - // Bfcache restore. - ExpectTotalSamples(kBfcacheRestoreHistogram, 1); - ExpectTimeBucketCount(kBfcacheRestoreHistogram, kDuration, 1); -} - -class RecordContentToVisibleTimeRequestTest : public testing::Test { - protected: - // event_start_times are random, so caller is expected to provide failure - // message useful for debugging timestamps inequality. - void ExpectEqual(const blink::mojom::RecordContentToVisibleTimeRequest& left, - const blink::mojom::RecordContentToVisibleTimeRequest& right, - const std::string& msg) const { - EXPECT_EQ(left.event_start_time, right.event_start_time) << msg; - EXPECT_TRUE(left.destination_is_loaded == right.destination_is_loaded); - EXPECT_EQ(left.show_reason_tab_switching, right.show_reason_tab_switching); - EXPECT_EQ(left.show_reason_unoccluded, right.show_reason_unoccluded); - EXPECT_EQ(left.show_reason_bfcache_restore, - right.show_reason_bfcache_restore); - } -}; - -TEST_F(RecordContentToVisibleTimeRequestTest, MergeEmpty) { - // Merge two empty requests - blink::mojom::RecordContentToVisibleTimeRequest request; - UpdateRecordContentToVisibleTimeRequest({}, request); - ExpectEqual(request, {}, std::string()); -} - -// Merge two requests. Tuple represents the parameters of the two requests. -class RecordContentToVisibleTimeRequest_MergeRequestTest - : public RecordContentToVisibleTimeRequestTest, - public testing::WithParamInterface< - std::tuple<bool, bool, bool, bool, bool, bool, bool, bool>> { - protected: - blink::mojom::RecordContentToVisibleTimeRequestPtr GetRequest1() const { - const base::TimeTicks timestamp = RandomRequestTimeTicks(); - return blink::mojom::RecordContentToVisibleTimeRequest::New( - timestamp, std::get<0>(GetParam()) /* destination_is_loaded */, - std::get<1>(GetParam()) /* show_reason_tab_switching */, - std::get<2>(GetParam()) /* show_reason_unoccluded */, - std::get<3>(GetParam()) /* show_reason_bfcache_restore */); - } - - blink::mojom::RecordContentToVisibleTimeRequestPtr GetRequest2() const { - const base::TimeTicks timestamp = RandomRequestTimeTicks(); - return blink::mojom::RecordContentToVisibleTimeRequest::New( - timestamp, std::get<4>(GetParam()) /* destination_is_loaded */, - std::get<5>(GetParam()) /* show_reason_tab_switching */, - std::get<6>(GetParam()) /* show_reason_unoccluded */, - std::get<7>(GetParam()) /* show_reason_bfcache_restore */); - } - - private: - // Returns random moment between (Now) and (Now - random time in the past) - base::TimeTicks RandomRequestTimeTicks() const { - uint16_t number; - base::RandBytes(&number, sizeof(number)); - return base::TimeTicks::Now() - base::TimeDelta::FromMilliseconds(number); - } -}; - -TEST_P(RecordContentToVisibleTimeRequest_MergeRequestTest, DoMerge) { - auto request1 = GetRequest1(); - const auto request2 = GetRequest2(); - - // Timestamps are random, log them in case of failure. - std::ostringstream buf; - buf << "Original request1->event_start_time = " << request1->event_start_time - << ", merged request2->event_start_time = " << request2->event_start_time - << "."; - - UpdateRecordContentToVisibleTimeRequest(*request2, *request1); - - // We expect to get minimal timestamp and all the boolean flags set in any - // request. - const blink::mojom::RecordContentToVisibleTimeRequest expected( - std::min(request1->event_start_time, request2->event_start_time), - request1->destination_is_loaded || request2->destination_is_loaded, - request1->show_reason_tab_switching || - request2->show_reason_tab_switching, - request1->show_reason_unoccluded || request2->show_reason_unoccluded, - request1->show_reason_bfcache_restore || - request2->show_reason_bfcache_restore); - - ExpectEqual(*request1, expected, buf.str()); -} - -INSTANTIATE_TEST_SUITE_P(All, - RecordContentToVisibleTimeRequest_MergeRequestTest, - testing::Combine(testing::Bool(), - testing::Bool(), - testing::Bool(), - testing::Bool(), - testing::Bool(), - testing::Bool(), - testing::Bool(), - testing::Bool())); -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/page_state/page_state.cc b/chromium/src/third_party/blink/common/page_state/page_state.cc deleted file mode 100644 index 6de60c2..0000000 --- a/chromium/src/third_party/blink/common/page_state/page_state.cc +++ /dev/null
@@ -1,182 +0,0 @@ -// Copyright (c) 2013 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 "third_party/blink/public/common/page_state/page_state.h" - -#include <stddef.h> - -#include "base/files/file_path.h" -#include "base/optional.h" -#include "base/strings/string16.h" -#include "base/strings/utf_string_conversions.h" -#include "services/network/public/cpp/resource_request_body.h" -#include "services/network/public/mojom/referrer_policy.mojom.h" -#include "third_party/blink/public/common/page_state/page_state_serialization.h" - -namespace blink { -namespace { - -base::FilePath ToFilePath(const base::Optional<base::string16>& s) { - return s ? base::FilePath::FromUTF16Unsafe(*s) : base::FilePath(); -} - -void ToFilePathVector(const std::vector<base::Optional<base::string16>>& input, - std::vector<base::FilePath>* output) { - output->clear(); - output->reserve(input.size()); - for (size_t i = 0; i < input.size(); ++i) - output->emplace_back(ToFilePath(input[i])); -} - -PageState ToPageState(const ExplodedPageState& state) { - std::string encoded_data; - EncodePageState(state, &encoded_data); - return PageState::CreateFromEncodedData(encoded_data); -} - -void RecursivelyRemovePasswordData(ExplodedFrameState* state) { - if (state->http_body.contains_passwords) - state->http_body = ExplodedHttpBody(); -} - -void RecursivelyRemoveScrollOffset(ExplodedFrameState* state) { - state->scroll_offset = gfx::Point(); - state->visual_viewport_scroll_offset = gfx::PointF(); -} - -void RecursivelyRemoveReferrer(ExplodedFrameState* state) { - state->referrer.reset(); - state->referrer_policy = network::mojom::ReferrerPolicy::kDefault; - for (std::vector<ExplodedFrameState>::iterator it = state->children.begin(); - it != state->children.end(); ++it) { - RecursivelyRemoveReferrer(&*it); - } -} - -} // namespace - -// static -PageState PageState::CreateFromEncodedData(const std::string& data) { - return PageState(data); -} - -// static -PageState PageState::CreateFromURL(const GURL& url) { - ExplodedPageState state; - - state.top.url_string = base::UTF8ToUTF16(url.possibly_invalid_spec()); - - return ToPageState(state); -} - -// static -PageState PageState::CreateForTesting( - const GURL& url, - bool body_contains_password_data, - const char* optional_body_data, - const base::FilePath* optional_body_file_path) { - ExplodedPageState state; - - state.top.url_string = base::UTF8ToUTF16(url.possibly_invalid_spec()); - - if (optional_body_data || optional_body_file_path) { - if (optional_body_data) { - std::string body_data(optional_body_data); - state.top.http_body.request_body = new network::ResourceRequestBody(); - state.top.http_body.request_body->AppendBytes(body_data.data(), - body_data.size()); - } - if (optional_body_file_path) { - state.top.http_body.request_body = new network::ResourceRequestBody(); - state.top.http_body.request_body->AppendFileRange( - *optional_body_file_path, 0, std::numeric_limits<uint64_t>::max(), - base::Time()); - state.referenced_files.emplace_back( - optional_body_file_path->AsUTF16Unsafe()); - } - state.top.http_body.contains_passwords = body_contains_password_data; - } - - return ToPageState(state); -} - -// static -PageState PageState::CreateForTestingWithSequenceNumbers( - const GURL& url, - int64_t item_sequence_number, - int64_t document_sequence_number) { - ExplodedPageState page_state; - page_state.top.url_string = base::UTF8ToUTF16(url.spec()); - page_state.top.item_sequence_number = item_sequence_number; - page_state.top.document_sequence_number = document_sequence_number; - - std::string encoded_page_state; - EncodePageState(page_state, &encoded_page_state); - return CreateFromEncodedData(encoded_page_state); -} - -PageState::PageState() {} - -bool PageState::IsValid() const { - return !data_.empty(); -} - -bool PageState::Equals(const PageState& other) const { - return data_ == other.data_; -} - -const std::string& PageState::ToEncodedData() const { - return data_; -} - -std::vector<base::FilePath> PageState::GetReferencedFiles() const { - std::vector<base::FilePath> results; - - ExplodedPageState state; - if (DecodePageState(data_, &state)) - ToFilePathVector(state.referenced_files, &results); - - return results; -} - -PageState PageState::RemovePasswordData() const { - ExplodedPageState state; - if (!DecodePageState(data_, &state)) - return PageState(); // Oops! - - RecursivelyRemovePasswordData(&state.top); - - return ToPageState(state); -} - -PageState PageState::RemoveScrollOffset() const { - ExplodedPageState state; - if (!DecodePageState(data_, &state)) - return PageState(); // Oops! - - RecursivelyRemoveScrollOffset(&state.top); - - return ToPageState(state); -} - -PageState PageState::RemoveReferrer() const { - if (data_.empty()) - return *this; - - ExplodedPageState state; - if (!DecodePageState(data_, &state)) - return PageState(); // Oops! - - RecursivelyRemoveReferrer(&state.top); - - return ToPageState(state); -} - -PageState::PageState(const std::string& data) : data_(data) { - // TODO(darin): Enable this DCHECK once tests have been fixed up to not pass - // bogus encoded data to CreateFromEncodedData. - // DCHECK(IsValid()); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/page_state/page_state_serialization.cc b/chromium/src/third_party/blink/common/page_state/page_state_serialization.cc deleted file mode 100644 index 33f3bc9..0000000 --- a/chromium/src/third_party/blink/common/page_state/page_state_serialization.cc +++ /dev/null
@@ -1,1046 +0,0 @@ -// Copyright 2013 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 "third_party/blink/public/common/page_state/page_state_serialization.h" - -#include <algorithm> -#include <limits> -#include <utility> - -#include "base/pickle.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_util.h" -#include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#include "mojo/public/cpp/base/time_mojom_traits.h" -#include "mojo/public/cpp/bindings/enum_utils.h" -#include "services/network/public/cpp/resource_request_body.h" -#include "third_party/blink/public/common/loader/http_body_element_type.h" -#include "third_party/blink/public/common/unique_name/unique_name_helper.h" -#include "third_party/blink/public/mojom/page_state/page_state.mojom.h" -#include "ui/display/display.h" -#include "ui/display/screen.h" -#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h" -#include "url/mojom/url_gurl_mojom_traits.h" - -namespace blink { - -namespace { - -#if defined(OS_ANDROID) -float g_device_scale_factor_for_testing = 0.0; -#endif - -//----------------------------------------------------------------------------- - -void AppendDataToRequestBody( - const scoped_refptr<network::ResourceRequestBody>& request_body, - const char* data, - int data_length) { - request_body->AppendBytes(data, data_length); -} - -void AppendFileRangeToRequestBody( - const scoped_refptr<network::ResourceRequestBody>& request_body, - const base::Optional<base::string16>& file_path, - int file_start, - int file_length, - base::Time file_modification_time) { - request_body->AppendFileRange( - file_path ? base::FilePath::FromUTF16Unsafe(*file_path) - : base::FilePath(), - static_cast<uint64_t>(file_start), static_cast<uint64_t>(file_length), - file_modification_time); -} - -//---------------------------------------------------------------------------- - -void AppendReferencedFilesFromHttpBody( - const std::vector<network::DataElement>& elements, - std::vector<base::Optional<base::string16>>* referenced_files) { - for (size_t i = 0; i < elements.size(); ++i) { - if (elements[i].type() == network::DataElement::Tag::kFile) { - referenced_files->emplace_back( - elements[i].As<network::DataElementFile>().path().AsUTF16Unsafe()); - } - } -} - -bool AppendReferencedFilesFromDocumentState( - const std::vector<base::Optional<base::string16>>& document_state, - std::vector<base::Optional<base::string16>>* referenced_files) { - if (document_state.empty()) - return true; - - // This algorithm is adapted from Blink's FormController code. - // We only care about how that code worked when this code snapshot was taken - // as this code is only needed for backwards compat. - // - // For reference, see FormController::formStatesFromStateVector in - // third_party/WebKit/Source/core/html/forms/FormController.cpp. - - size_t index = 0; - - if (document_state.size() < 3) - return false; - - index++; // Skip over magic signature. - index++; // Skip over form key. - - size_t item_count; - if (!document_state[index] || - !base::StringToSizeT(*document_state[index++], &item_count)) - return false; - - while (item_count--) { - if (index + 1 >= document_state.size()) - return false; - - index++; // Skip over name. - const base::Optional<base::string16>& type = document_state[index++]; - - if (index >= document_state.size()) - return false; - - size_t value_size; - if (!document_state[index] || - !base::StringToSizeT(*document_state[index++], &value_size)) - return false; - - if (index + value_size > document_state.size() || - index + value_size < index) // Check for overflow. - return false; - - if (type && base::EqualsASCII(*type, "file")) { - if (value_size != 2) - return false; - - referenced_files->emplace_back(document_state[index++]); - index++; // Skip over display name. - } else { - index += value_size; - } - } - - return true; -} - -bool RecursivelyAppendReferencedFiles( - const ExplodedFrameState& frame_state, - std::vector<base::Optional<base::string16>>* referenced_files) { - if (frame_state.http_body.request_body) { - AppendReferencedFilesFromHttpBody( - *frame_state.http_body.request_body->elements(), referenced_files); - } - - if (!AppendReferencedFilesFromDocumentState(frame_state.document_state, - referenced_files)) - return false; - - for (size_t i = 0; i < frame_state.children.size(); ++i) { - if (!RecursivelyAppendReferencedFiles(frame_state.children[i], - referenced_files)) - return false; - } - - return true; -} - -//---------------------------------------------------------------------------- - -struct SerializeObject { - SerializeObject() : version(0), parse_error(false) {} - - SerializeObject(const char* data, int len) - : pickle(data, len), version(0), parse_error(false) { - iter = base::PickleIterator(pickle); - } - - std::string GetAsString() { - return std::string(static_cast<const char*>(pickle.data()), pickle.size()); - } - - base::Pickle pickle; - base::PickleIterator iter; - int version; - bool parse_error; -}; - -// Version ID of serialized format. -// 11: Min version -// 12: Adds support for contains_passwords in HTTP body -// 13: Adds support for URL (FileSystem URL) -// 14: Adds list of referenced files, version written only for first item. -// 15: Removes a bunch of values we defined but never used. -// 16: Switched from blob urls to blob uuids. -// 17: Add a target frame id number. -// 18: Add referrer policy. -// 19: Remove target frame id, which was a bad idea, and original url string, -// which is no longer used. -// 20: Add visual viewport scroll offset, the offset of the pinched zoomed -// viewport within the unzoomed main frame. -// 21: Add frame sequence number. -// 22: Add scroll restoration type. -// 23: Remove frame sequence number, there are easier ways. -// 24: Add did save scroll or scale state. -// 25: Limit the length of unique names: https://crbug.com/626202 -// 26: Switch to mojo-based serialization. -// 27: Add serialized scroll anchor to FrameState. -// 28: Add initiator origin to FrameState. -// NOTE: If the version is -1, then the pickle contains only a URL string. -// See ReadPageState. -// -const int kMinVersion = 11; -// NOTE: When changing the version, please add a backwards compatibility test. -// See PageStateSerializationTest.DumpExpectedPageStateForBackwardsCompat for -// instructions on how to generate the new test case. -const int kCurrentVersion = 28; - -// A bunch of convenience functions to write to/read from SerializeObjects. The -// de-serializers assume the input data will be in the correct format and fall -// back to returning safe defaults when not. These are mostly used by -// legacy(pre-mojo) serialization methods. If you're making changes to the -// PageState serialization format you almost certainly want to add/remove fields -// in page_state.mojom rather than using these methods. - -void WriteData(const void* data, int length, SerializeObject* obj) { - obj->pickle.WriteData(static_cast<const char*>(data), length); -} - -void ReadData(SerializeObject* obj, const void** data, int* length) { - const char* tmp; - if (obj->iter.ReadData(&tmp, length)) { - *data = tmp; - } else { - obj->parse_error = true; - *data = nullptr; - *length = 0; - } -} - -void WriteInteger(int data, SerializeObject* obj) { - obj->pickle.WriteInt(data); -} - -int ReadInteger(SerializeObject* obj) { - int tmp; - if (obj->iter.ReadInt(&tmp)) - return tmp; - obj->parse_error = true; - return 0; -} - -void WriteInteger64(int64_t data, SerializeObject* obj) { - obj->pickle.WriteInt64(data); -} - -int64_t ReadInteger64(SerializeObject* obj) { - int64_t tmp = 0; - if (obj->iter.ReadInt64(&tmp)) - return tmp; - obj->parse_error = true; - return 0; -} - -void WriteReal(double data, SerializeObject* obj) { - WriteData(&data, sizeof(double), obj); -} - -double ReadReal(SerializeObject* obj) { - const void* tmp = nullptr; - int length = 0; - double value = 0.0; - ReadData(obj, &tmp, &length); - if (length == static_cast<int>(sizeof(double))) { - // Use memcpy, as tmp may not be correctly aligned. - memcpy(&value, tmp, sizeof(double)); - } else { - obj->parse_error = true; - } - return value; -} - -void WriteBoolean(bool data, SerializeObject* obj) { - obj->pickle.WriteInt(data ? 1 : 0); -} - -bool ReadBoolean(SerializeObject* obj) { - bool tmp; - if (obj->iter.ReadBool(&tmp)) - return tmp; - obj->parse_error = true; - return false; -} - -GURL ReadGURL(SerializeObject* obj) { - std::string spec; - if (obj->iter.ReadString(&spec)) - return GURL(spec); - obj->parse_error = true; - return GURL(); -} - -std::string ReadStdString(SerializeObject* obj) { - std::string s; - if (obj->iter.ReadString(&s)) - return s; - obj->parse_error = true; - return std::string(); -} - -// Pickles a base::string16 as <int length>:<char*16 data> tuple>. -void WriteString(const base::string16& str, SerializeObject* obj) { - const base::char16* data = str.data(); - size_t length_in_bytes = str.length() * sizeof(base::char16); - - CHECK_LT(length_in_bytes, - static_cast<size_t>(std::numeric_limits<int>::max())); - obj->pickle.WriteInt(length_in_bytes); - obj->pickle.WriteBytes(data, length_in_bytes); -} - -// If str is a null optional, this simply pickles a length of -1. Otherwise, -// delegates to the base::string16 overload. -void WriteString(const base::Optional<base::string16>& str, - SerializeObject* obj) { - if (!str) { - obj->pickle.WriteInt(-1); - } else { - WriteString(*str, obj); - } -} - -// This reads a serialized base::Optional<base::string16> from obj. If a string -// can't be read, nullptr is returned. -const base::char16* ReadStringNoCopy(SerializeObject* obj, int* num_chars) { - int length_in_bytes; - if (!obj->iter.ReadInt(&length_in_bytes)) { - obj->parse_error = true; - return nullptr; - } - - if (length_in_bytes < 0) - return nullptr; - - const char* data; - if (!obj->iter.ReadBytes(&data, length_in_bytes)) { - obj->parse_error = true; - return nullptr; - } - - if (num_chars) - *num_chars = length_in_bytes / sizeof(base::char16); - return reinterpret_cast<const base::char16*>(data); -} - -base::Optional<base::string16> ReadString(SerializeObject* obj) { - int num_chars; - const base::char16* chars = ReadStringNoCopy(obj, &num_chars); - base::Optional<base::string16> result; - if (chars) - result.emplace(chars, num_chars); - return result; -} - -template <typename T> -void WriteAndValidateVectorSize(const std::vector<T>& v, SerializeObject* obj) { - CHECK_LT(v.size(), std::numeric_limits<int>::max() / sizeof(T)); - WriteInteger(static_cast<int>(v.size()), obj); -} - -size_t ReadAndValidateVectorSize(SerializeObject* obj, size_t element_size) { - size_t num_elements = static_cast<size_t>(ReadInteger(obj)); - - // Ensure that resizing a vector to size num_elements makes sense. - if (std::numeric_limits<int>::max() / element_size <= num_elements) { - obj->parse_error = true; - return 0; - } - - // Ensure that it is plausible for the pickle to contain num_elements worth - // of data. - if (obj->pickle.payload_size() <= num_elements) { - obj->parse_error = true; - return 0; - } - - return num_elements; -} - -// Writes a Vector of strings into a SerializeObject for serialization. -void WriteStringVector(const std::vector<base::Optional<base::string16>>& data, - SerializeObject* obj) { - WriteAndValidateVectorSize(data, obj); - for (size_t i = 0; i < data.size(); ++i) { - WriteString(data[i], obj); - } -} - -void ReadStringVector(SerializeObject* obj, - std::vector<base::Optional<base::string16>>* result) { - size_t num_elements = - ReadAndValidateVectorSize(obj, sizeof(base::Optional<base::string16>)); - - result->resize(num_elements); - for (size_t i = 0; i < num_elements; ++i) - (*result)[i] = ReadString(obj); -} - -void WriteResourceRequestBody(const network::ResourceRequestBody& request_body, - SerializeObject* obj) { - WriteAndValidateVectorSize(*request_body.elements(), obj); - for (const auto& element : *request_body.elements()) { - switch (element.type()) { - case network::DataElement::Tag::kBytes: { - const auto& bytes = element.As<network::DataElementBytes>().bytes(); - WriteInteger(static_cast<int>(HTTPBodyElementType::kTypeData), obj); - WriteData(bytes.data(), static_cast<int>(bytes.size()), obj); - break; - } - case network::DataElement::Tag::kFile: { - const auto& file = element.As<network::DataElementFile>(); - WriteInteger(static_cast<int>(HTTPBodyElementType::kTypeFile), obj); - WriteString(file.path().AsUTF16Unsafe(), obj); - WriteInteger64(static_cast<int64_t>(file.offset()), obj); - WriteInteger64(static_cast<int64_t>(file.length()), obj); - WriteReal(file.expected_modification_time().ToDoubleT(), obj); - break; - } - default: - NOTREACHED(); - continue; - } - } - WriteInteger64(request_body.identifier(), obj); -} - -void ReadResourceRequestBody( - SerializeObject* obj, - const scoped_refptr<network::ResourceRequestBody>& request_body) { - int num_elements = ReadInteger(obj); - for (int i = 0; i < num_elements; ++i) { - HTTPBodyElementType type = - static_cast<HTTPBodyElementType>(ReadInteger(obj)); - if (type == HTTPBodyElementType::kTypeData) { - const void* data; - int length = -1; - ReadData(obj, &data, &length); - if (length >= 0) { - AppendDataToRequestBody(request_body, static_cast<const char*>(data), - length); - } - } else if (type == HTTPBodyElementType::kTypeFile) { - base::Optional<base::string16> file_path = ReadString(obj); - int64_t file_start = ReadInteger64(obj); - int64_t file_length = ReadInteger64(obj); - double file_modification_time = ReadReal(obj); - AppendFileRangeToRequestBody( - request_body, file_path, file_start, file_length, - base::Time::FromDoubleT(file_modification_time)); - } else if (type == HTTPBodyElementType::kTypeBlob) { - // Skip obsolete blob values. - if (obj->version >= 16) { - ReadStdString(obj); - } else { - ReadGURL(obj); - } - } - } - request_body->set_identifier(ReadInteger64(obj)); -} - -void ReadHttpBody(SerializeObject* obj, ExplodedHttpBody* http_body) { - // An initial boolean indicates if we have an HTTP body. - if (!ReadBoolean(obj)) - return; - - http_body->request_body = new network::ResourceRequestBody(); - ReadResourceRequestBody(obj, http_body->request_body); - - if (obj->version >= 12) - http_body->contains_passwords = ReadBoolean(obj); -} - -void WriteHttpBody(const ExplodedHttpBody& http_body, SerializeObject* obj) { - bool is_null = !http_body.request_body; - WriteBoolean(!is_null, obj); - if (is_null) - return; - - WriteResourceRequestBody(*http_body.request_body, obj); - WriteBoolean(http_body.contains_passwords, obj); -} - -void ReadFrameState( - SerializeObject* obj, - bool is_top, - std::vector<UniqueNameHelper::Replacement>* unique_name_replacements, - ExplodedFrameState* state) { - if (obj->version < 14 && !is_top) - ReadInteger(obj); // Skip over redundant version field. - - state->url_string = ReadString(obj); - - if (obj->version < 19) - ReadString(obj); // Skip obsolete original url string field. - - state->target = ReadString(obj); - if (obj->version < 25 && state->target) { - state->target = base::UTF8ToUTF16(UniqueNameHelper::UpdateLegacyNameFromV24( - base::UTF16ToUTF8(*state->target), unique_name_replacements)); - } - if (obj->version < 15) { - ReadString(obj); // Skip obsolete parent field. - ReadString(obj); // Skip obsolete title field. - ReadString(obj); // Skip obsolete alternate title field. - ReadReal(obj); // Skip obsolete visited time field. - } - - if (obj->version >= 24) { - state->did_save_scroll_or_scale_state = ReadBoolean(obj); - } else { - state->did_save_scroll_or_scale_state = true; - } - - if (state->did_save_scroll_or_scale_state) { - int x = ReadInteger(obj); - int y = ReadInteger(obj); - state->scroll_offset = gfx::Point(x, y); - } - - if (obj->version < 15) { - ReadBoolean(obj); // Skip obsolete target item flag. - ReadInteger(obj); // Skip obsolete visit count field. - } - state->referrer = ReadString(obj); - - ReadStringVector(obj, &state->document_state); - - if (state->did_save_scroll_or_scale_state) - state->page_scale_factor = ReadReal(obj); - - state->item_sequence_number = ReadInteger64(obj); - state->document_sequence_number = ReadInteger64(obj); - if (obj->version >= 21 && obj->version < 23) - ReadInteger64(obj); // Skip obsolete frame sequence number. - - if (obj->version >= 17 && obj->version < 19) - ReadInteger64(obj); // Skip obsolete target frame id number. - - if (obj->version >= 18) { - state->referrer_policy = - mojo::ConvertIntToMojoEnum<network::mojom::ReferrerPolicy>( - ReadInteger(obj)) - .value_or(network::mojom::ReferrerPolicy::kDefault); - } - - if (obj->version >= 20 && state->did_save_scroll_or_scale_state) { - double x = ReadReal(obj); - double y = ReadReal(obj); - state->visual_viewport_scroll_offset = gfx::PointF(x, y); - } else { - state->visual_viewport_scroll_offset = gfx::PointF(-1, -1); - } - - if (obj->version >= 22) { - state->scroll_restoration_type = - static_cast<mojom::ScrollRestorationType>(ReadInteger(obj)); - } - - bool has_state_object = ReadBoolean(obj); - if (has_state_object) - state->state_object = ReadString(obj); - - ReadHttpBody(obj, &state->http_body); - - // NOTE: It is a quirk of the format that we still have to read the - // http_content_type field when the HTTP body is null. That's why this code - // is here instead of inside ReadHttpBody. - state->http_body.http_content_type = ReadString(obj); - - if (obj->version < 14) - ReadString(obj); // Skip unused referrer string. - -#if defined(OS_ANDROID) - if (obj->version == 11) { - // Now-unused values that shipped in this version of Chrome for Android when - // it was on a private branch. - ReadReal(obj); - ReadBoolean(obj); - - // In this version, page_scale_factor included device_scale_factor and - // scroll offsets were premultiplied by pageScaleFactor. - if (state->page_scale_factor) { - float device_scale_factor = g_device_scale_factor_for_testing; - if (!device_scale_factor) { - device_scale_factor = display::Screen::GetScreen() - ->GetPrimaryDisplay() - .device_scale_factor(); - } - state->scroll_offset = - gfx::Point(state->scroll_offset.x() / state->page_scale_factor, - state->scroll_offset.y() / state->page_scale_factor); - state->page_scale_factor /= device_scale_factor; - } - } -#endif - - // Subitems - size_t num_children = - ReadAndValidateVectorSize(obj, sizeof(ExplodedFrameState)); - state->children.resize(num_children); - for (size_t i = 0; i < num_children; ++i) - ReadFrameState(obj, false, unique_name_replacements, &state->children[i]); -} - -// Writes the ExplodedFrameState data into the SerializeObject object for -// serialization. This uses the custom, legacy format, and its implementation -// should remain frozen in order to preserve this format. -// TODO(pnoland, dcheng) Move the legacy write methods into a test-only helper. -void WriteFrameState(const ExplodedFrameState& state, - SerializeObject* obj, - bool is_top) { - // WARNING: This data may be persisted for later use. As such, care must be - // taken when changing the serialized format. If a new field needs to be - // written, only adding at the end will make it easier to deal with loading - // older versions. Similarly, this should NOT save fields with sensitive - // data, such as password fields. - - WriteString(state.url_string, obj); - WriteString(state.target, obj); - WriteBoolean(state.did_save_scroll_or_scale_state, obj); - - if (state.did_save_scroll_or_scale_state) { - WriteInteger(state.scroll_offset.x(), obj); - WriteInteger(state.scroll_offset.y(), obj); - } - - WriteString(state.referrer, obj); - - WriteStringVector(state.document_state, obj); - - if (state.did_save_scroll_or_scale_state) - WriteReal(state.page_scale_factor, obj); - - WriteInteger64(state.item_sequence_number, obj); - WriteInteger64(state.document_sequence_number, obj); - WriteInteger(static_cast<int>(state.referrer_policy), obj); - - if (state.did_save_scroll_or_scale_state) { - WriteReal(state.visual_viewport_scroll_offset.x(), obj); - WriteReal(state.visual_viewport_scroll_offset.y(), obj); - } - - WriteInteger(static_cast<int>(state.scroll_restoration_type), obj); - - bool has_state_object = state.state_object.has_value(); - WriteBoolean(has_state_object, obj); - if (has_state_object) - WriteString(*state.state_object, obj); - - WriteHttpBody(state.http_body, obj); - - // NOTE: It is a quirk of the format that we still have to write the - // http_content_type field when the HTTP body is null. That's why this code - // is here instead of inside WriteHttpBody. - WriteString(state.http_body.http_content_type, obj); - - // Subitems - const std::vector<ExplodedFrameState>& children = state.children; - WriteAndValidateVectorSize(children, obj); - for (size_t i = 0; i < children.size(); ++i) - WriteFrameState(children[i], obj, false); -} - -void WritePageState(const ExplodedPageState& state, SerializeObject* obj) { - WriteInteger(obj->version, obj); - WriteStringVector(state.referenced_files, obj); - WriteFrameState(state.top, obj, true); -} - -// Legacy read/write functions above this line. Don't change these. -//----------------------------------------------------------------------------- -// "Modern" read/write functions start here. These are probably what you want. - -void WriteResourceRequestBody(const network::ResourceRequestBody& request_body, - mojom::RequestBody* mojo_body) { - for (const auto& element : *request_body.elements()) { - mojom::ElementPtr data_element = mojom::Element::New(); - switch (element.type()) { - case network::DataElement::Tag::kBytes: { - const auto& bytes = element.As<network::DataElementBytes>().bytes(); - const char* data = reinterpret_cast<const char*>(bytes.data()); - data_element->set_bytes( - std::vector<unsigned char>(data, data + bytes.size())); - break; - } - case network::DataElement::Tag::kFile: { - const auto& element_file = element.As<network::DataElementFile>(); - mojom::FilePtr file = mojom::File::New( - element_file.path().AsUTF16Unsafe(), element_file.offset(), - element_file.length(), element_file.expected_modification_time()); - data_element->set_file(std::move(file)); - break; - } - case network::DataElement::Tag::kDataPipe: - NOTIMPLEMENTED(); - break; - case network::DataElement::Tag::kChunkedDataPipe: - NOTREACHED(); - continue; - } - mojo_body->elements.push_back(std::move(data_element)); - } - mojo_body->identifier = request_body.identifier(); -} - -void ReadResourceRequestBody( - mojom::RequestBody* mojo_body, - const scoped_refptr<network::ResourceRequestBody>& request_body) { - for (const auto& element : mojo_body->elements) { - mojom::Element::Tag tag = element->which(); - switch (tag) { - case mojom::Element::Tag::BYTES: - AppendDataToRequestBody( - request_body, - reinterpret_cast<const char*>(element->get_bytes().data()), - element->get_bytes().size()); - break; - case mojom::Element::Tag::FILE: { - mojom::File* file = element->get_file().get(); - AppendFileRangeToRequestBody(request_body, file->path, file->offset, - file->length, file->modification_time); - break; - } - case mojom::Element::Tag::BLOB_UUID: - // No longer supported. - break; - case mojom::Element::Tag::DEPRECATED_FILE_SYSTEM_FILE: - // No longer supported. - break; - } - } - request_body->set_identifier(mojo_body->identifier); -} - -void WriteHttpBody(const ExplodedHttpBody& http_body, - mojom::HttpBody* mojo_body) { - if (http_body.request_body) { - mojo_body->request_body = mojom::RequestBody::New(); - mojo_body->contains_passwords = http_body.contains_passwords; - mojo_body->http_content_type = http_body.http_content_type; - WriteResourceRequestBody(*http_body.request_body, - mojo_body->request_body.get()); - } -} - -void ReadHttpBody(mojom::HttpBody* mojo_body, ExplodedHttpBody* http_body) { - http_body->contains_passwords = mojo_body->contains_passwords; - http_body->http_content_type = mojo_body->http_content_type; - if (mojo_body->request_body) { - http_body->request_body = - base::MakeRefCounted<network::ResourceRequestBody>(); - ReadResourceRequestBody(mojo_body->request_body.get(), - http_body->request_body); - } -} - -void WriteFrameState(const ExplodedFrameState& state, - mojom::FrameState* frame) { - frame->url_string = state.url_string; - frame->referrer = state.referrer; - if (state.initiator_origin.has_value()) - frame->initiator_origin = state.initiator_origin.value().Serialize(); - frame->target = state.target; - frame->state_object = state.state_object; - - for (const auto& s : state.document_state) { - frame->document_state.push_back(s); - } - - frame->scroll_restoration_type = - static_cast<mojom::ScrollRestorationType>(state.scroll_restoration_type); - - if (state.did_save_scroll_or_scale_state) { - frame->view_state = mojom::ViewState::New(); - frame->view_state->scroll_offset = state.scroll_offset; - frame->view_state->visual_viewport_scroll_offset = - state.visual_viewport_scroll_offset; - frame->view_state->page_scale_factor = state.page_scale_factor; - // We discard all scroll anchor data if the selector is over the length - // limit. We don't want to bloat the size of FrameState, and the other - // fields are useless without the selector. - if (state.scroll_anchor_selector && state.scroll_anchor_selector->length() < - kMaxScrollAnchorSelectorLength) { - frame->view_state->scroll_anchor_selector = state.scroll_anchor_selector; - frame->view_state->scroll_anchor_offset = state.scroll_anchor_offset; - frame->view_state->scroll_anchor_simhash = state.scroll_anchor_simhash; - } - } - - frame->item_sequence_number = state.item_sequence_number; - frame->document_sequence_number = state.document_sequence_number; - - frame->referrer_policy = state.referrer_policy; - - frame->http_body = mojom::HttpBody::New(); - WriteHttpBody(state.http_body, frame->http_body.get()); - - // Subitems - const std::vector<ExplodedFrameState>& children = state.children; - for (const auto& child : children) { - mojom::FrameStatePtr child_frame = mojom::FrameState::New(); - WriteFrameState(child, child_frame.get()); - frame->children.push_back(std::move(child_frame)); - } -} - -void ReadFrameState(mojom::FrameState* frame, ExplodedFrameState* state) { - state->url_string = frame->url_string; - state->referrer = frame->referrer; - if (frame->initiator_origin.has_value()) { - state->initiator_origin = - url::Origin::Create(GURL(frame->initiator_origin.value())); - } - - state->target = frame->target; - state->state_object = frame->state_object; - - for (const auto& s : frame->document_state) { - state->document_state.push_back(s); - } - - state->scroll_restoration_type = - static_cast<mojom::ScrollRestorationType>(frame->scroll_restoration_type); - - if (frame->view_state) { - state->did_save_scroll_or_scale_state = true; - state->visual_viewport_scroll_offset = - frame->view_state->visual_viewport_scroll_offset; - state->scroll_offset = frame->view_state->scroll_offset; - state->page_scale_factor = frame->view_state->page_scale_factor; - } - - if (frame->view_state) { - state->scroll_anchor_selector = frame->view_state->scroll_anchor_selector; - state->scroll_anchor_offset = - frame->view_state->scroll_anchor_offset.value_or(gfx::PointF()); - state->scroll_anchor_simhash = frame->view_state->scroll_anchor_simhash; - } - - state->item_sequence_number = frame->item_sequence_number; - state->document_sequence_number = frame->document_sequence_number; - - state->referrer_policy = frame->referrer_policy; - if (frame->http_body) { - ReadHttpBody(frame->http_body.get(), &state->http_body); - } else { - state->http_body.request_body = nullptr; - } - - state->children.resize(frame->children.size()); - int i = 0; - for (const auto& child : frame->children) - ReadFrameState(child.get(), &state->children[i++]); -} - -void ReadMojoPageState(SerializeObject* obj, ExplodedPageState* state) { - const void* tmp = nullptr; - int length = 0; - ReadData(obj, &tmp, &length); - DCHECK_GT(length, 0); - if (obj->parse_error) - return; - - mojom::PageStatePtr page; - obj->parse_error = !(mojom::PageState::Deserialize(tmp, length, &page)); - if (obj->parse_error) - return; - - for (const auto& referenced_file : page->referenced_files) { - state->referenced_files.push_back(referenced_file); - } - - ReadFrameState(page->top.get(), &state->top); - - state->referenced_files.erase(std::unique(state->referenced_files.begin(), - state->referenced_files.end()), - state->referenced_files.end()); -} - -void WriteMojoPageState(const ExplodedPageState& state, SerializeObject* obj) { - WriteInteger(obj->version, obj); - - mojom::PageStatePtr page = mojom::PageState::New(); - for (const auto& referenced_file : state.referenced_files) { - page->referenced_files.push_back(referenced_file.value()); - } - - page->top = mojom::FrameState::New(); - WriteFrameState(state.top, page->top.get()); - - std::vector<uint8_t> page_bytes = mojom::PageState::Serialize(&page); - obj->pickle.WriteData(reinterpret_cast<char*>(page_bytes.data()), - page_bytes.size()); -} - -void ReadPageState(SerializeObject* obj, ExplodedPageState* state) { - obj->version = ReadInteger(obj); - - if (obj->version == -1) { - GURL url = ReadGURL(obj); - // NOTE: GURL::possibly_invalid_spec() always returns valid UTF-8. - state->top.url_string = base::UTF8ToUTF16(url.possibly_invalid_spec()); - return; - } - - if (obj->version > kCurrentVersion || obj->version < kMinVersion) { - obj->parse_error = true; - return; - } - - if (obj->version >= 26) { - ReadMojoPageState(obj, state); - return; - } - - if (obj->version >= 14) - ReadStringVector(obj, &state->referenced_files); - - std::vector<UniqueNameHelper::Replacement> unique_name_replacements; - ReadFrameState(obj, true, &unique_name_replacements, &state->top); - - if (obj->version < 14) - RecursivelyAppendReferencedFiles(state->top, &state->referenced_files); - - // De-dupe - state->referenced_files.erase(std::unique(state->referenced_files.begin(), - state->referenced_files.end()), - state->referenced_files.end()); -} - -} // namespace - -ExplodedHttpBody::ExplodedHttpBody() : contains_passwords(false) {} - -ExplodedHttpBody::~ExplodedHttpBody() {} - -ExplodedFrameState::ExplodedFrameState() = default; - -ExplodedFrameState::ExplodedFrameState(const ExplodedFrameState& other) { - assign(other); -} - -ExplodedFrameState::~ExplodedFrameState() {} - -void ExplodedFrameState::operator=(const ExplodedFrameState& other) { - if (&other != this) - assign(other); -} - -void ExplodedFrameState::assign(const ExplodedFrameState& other) { - url_string = other.url_string; - referrer = other.referrer; - target = other.target; - state_object = other.state_object; - document_state = other.document_state; - scroll_restoration_type = other.scroll_restoration_type; - did_save_scroll_or_scale_state = other.did_save_scroll_or_scale_state; - visual_viewport_scroll_offset = other.visual_viewport_scroll_offset; - scroll_offset = other.scroll_offset; - item_sequence_number = other.item_sequence_number; - document_sequence_number = other.document_sequence_number; - page_scale_factor = other.page_scale_factor; - referrer_policy = other.referrer_policy; - http_body = other.http_body; - scroll_anchor_selector = other.scroll_anchor_selector; - scroll_anchor_offset = other.scroll_anchor_offset; - scroll_anchor_simhash = other.scroll_anchor_simhash; - children = other.children; -} - -ExplodedPageState::ExplodedPageState() {} - -ExplodedPageState::~ExplodedPageState() {} - -int DecodePageStateInternal(const std::string& encoded, - ExplodedPageState* exploded) { - *exploded = ExplodedPageState(); - - if (encoded.empty()) - return true; - - SerializeObject obj(encoded.data(), static_cast<int>(encoded.size())); - ReadPageState(&obj, exploded); - return obj.parse_error ? -1 : obj.version; -} - -bool DecodePageState(const std::string& encoded, ExplodedPageState* exploded) { - return DecodePageStateInternal(encoded, exploded) != -1; -} - -int DecodePageStateForTesting(const std::string& encoded, - ExplodedPageState* exploded) { - return DecodePageStateInternal(encoded, exploded); -} - -void EncodePageState(const ExplodedPageState& exploded, std::string* encoded) { - SerializeObject obj; - obj.version = kCurrentVersion; - WriteMojoPageState(exploded, &obj); - *encoded = obj.GetAsString(); - DCHECK(!encoded->empty()); -} - -void LegacyEncodePageStateForTesting(const ExplodedPageState& exploded, - int version, - std::string* encoded) { - SerializeObject obj; - obj.version = version; - WritePageState(exploded, &obj); - *encoded = obj.GetAsString(); -} - -#if defined(OS_ANDROID) -bool DecodePageStateWithDeviceScaleFactorForTesting( - const std::string& encoded, - float device_scale_factor, - ExplodedPageState* exploded) { - g_device_scale_factor_for_testing = device_scale_factor; - bool rv = DecodePageState(encoded, exploded); - g_device_scale_factor_for_testing = 0.0; - return rv; -} - -scoped_refptr<network::ResourceRequestBody> DecodeResourceRequestBody( - const char* data, - size_t size) { - scoped_refptr<network::ResourceRequestBody> result = - new network::ResourceRequestBody(); - SerializeObject obj(data, static_cast<int>(size)); - ReadResourceRequestBody(&obj, result); - // Please see the EncodeResourceRequestBody() function below for information - // about why the contains_sensitive_info() field is being explicitly - // deserialized. - result->set_contains_sensitive_info(ReadBoolean(&obj)); - return obj.parse_error ? nullptr : result; -} - -std::string EncodeResourceRequestBody( - const network::ResourceRequestBody& resource_request_body) { - SerializeObject obj; - obj.version = 25; - WriteResourceRequestBody(resource_request_body, &obj); - // EncodeResourceRequestBody() is different from WriteResourceRequestBody() - // because it covers additional data (e.g.|contains_sensitive_info|) which - // is marshaled between native code and java. WriteResourceRequestBody() - // serializes data which needs to be saved out to disk. - WriteBoolean(resource_request_body.contains_sensitive_info(), &obj); - return obj.GetAsString(); -} - -#endif - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/page_state/page_state_serialization_unittest.cc b/chromium/src/third_party/blink/common/page_state/page_state_serialization_unittest.cc deleted file mode 100644 index 3b5427e..0000000 --- a/chromium/src/third_party/blink/common/page_state/page_state_serialization_unittest.cc +++ /dev/null
@@ -1,710 +0,0 @@ -// Copyright 2013 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 <stddef.h> - -#include <cmath> - -#include "base/base64.h" -#include "base/files/file_util.h" -#include "base/path_service.h" -#include "base/pickle.h" -#include "base/strings/string_util.h" -#include "base/strings/stringprintf.h" -#include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/loader/http_body_element_type.h" -#include "third_party/blink/public/common/page_state/page_state_serialization.h" - -namespace blink { -namespace { - -base::FilePath GetFilePath() { - base::FilePath path; - base::PathService::Get(base::DIR_SOURCE_ROOT, &path); - return base::MakeAbsoluteFilePath(path.Append( - FILE_PATH_LITERAL("third_party/blink/common/page_state/test_data"))); -} - -//----------------------------------------------------------------------------- - -template <typename T> -void ExpectEquality(const T& expected, const T& actual) { - EXPECT_EQ(expected, actual); -} - -template <typename T> -void ExpectEquality(const std::vector<T>& expected, - const std::vector<T>& actual) { - EXPECT_EQ(expected.size(), actual.size()); - for (size_t i = 0; i < std::min(expected.size(), actual.size()); ++i) - ExpectEquality(expected[i], actual[i]); -} - -template <> -void ExpectEquality(const network::DataElement& expected, - const network::DataElement& actual) { - ASSERT_EQ(expected.type(), actual.type()); - if (expected.type() == network::DataElement::Tag::kBytes) { - EXPECT_EQ(expected.As<network::DataElementBytes>().bytes(), - actual.As<network::DataElementBytes>().bytes()); - return; - } - if (expected.type() != network::DataElement::Tag::kFile) { - ADD_FAILURE() << "Impossible to check equality."; - return; - } - - const auto& expected_file = expected.As<network::DataElementFile>(); - const auto& actual_file = actual.As<network::DataElementFile>(); - EXPECT_EQ(expected_file.path(), actual_file.path()); - EXPECT_EQ(expected_file.offset(), actual_file.offset()); - EXPECT_EQ(expected_file.length(), actual_file.length()); - EXPECT_EQ(expected_file.expected_modification_time(), - actual_file.expected_modification_time()); -} - -template <> -void ExpectEquality(const ExplodedHttpBody& expected, - const ExplodedHttpBody& actual) { - EXPECT_EQ(expected.http_content_type, actual.http_content_type); - EXPECT_EQ(expected.contains_passwords, actual.contains_passwords); - if (!expected.request_body || !actual.request_body) { - EXPECT_EQ(nullptr, expected.request_body); - EXPECT_EQ(nullptr, actual.request_body); - } else { - EXPECT_EQ(expected.request_body->identifier(), - actual.request_body->identifier()); - ExpectEquality(*expected.request_body->elements(), - *actual.request_body->elements()); - } -} - -template <> -void ExpectEquality(const ExplodedFrameState& expected, - const ExplodedFrameState& actual) { - EXPECT_EQ(expected.url_string, actual.url_string); - EXPECT_EQ(expected.referrer, actual.referrer); - EXPECT_EQ(expected.referrer_policy, actual.referrer_policy); - EXPECT_EQ(expected.initiator_origin, actual.initiator_origin); - EXPECT_EQ(expected.target, actual.target); - EXPECT_EQ(expected.state_object, actual.state_object); - ExpectEquality(expected.document_state, actual.document_state); - EXPECT_EQ(expected.scroll_restoration_type, actual.scroll_restoration_type); - EXPECT_EQ(expected.visual_viewport_scroll_offset, - actual.visual_viewport_scroll_offset); - EXPECT_EQ(expected.scroll_offset, actual.scroll_offset); - EXPECT_EQ(expected.item_sequence_number, actual.item_sequence_number); - EXPECT_EQ(expected.document_sequence_number, actual.document_sequence_number); - EXPECT_EQ(expected.page_scale_factor, actual.page_scale_factor); - EXPECT_EQ(expected.scroll_anchor_selector, actual.scroll_anchor_selector); - EXPECT_EQ(expected.scroll_anchor_offset, actual.scroll_anchor_offset); - EXPECT_EQ(expected.scroll_anchor_simhash, actual.scroll_anchor_simhash); - ExpectEquality(expected.http_body, actual.http_body); - ExpectEquality(expected.children, actual.children); -} - -void ExpectEquality(const ExplodedPageState& expected, - const ExplodedPageState& actual) { - ExpectEquality(expected.referenced_files, actual.referenced_files); - ExpectEquality(expected.top, actual.top); -} - -//----------------------------------------------------------------------------- - -class PageStateSerializationTest : public testing::Test { - public: - void PopulateFrameState(ExplodedFrameState* frame_state) { - // Invent some data for the various fields. - frame_state->url_string = base::UTF8ToUTF16("http://dev.chromium.org/"); - frame_state->referrer = - base::UTF8ToUTF16("https://www.google.com/search?q=dev.chromium.org"); - frame_state->referrer_policy = network::mojom::ReferrerPolicy::kAlways; - frame_state->target = base::UTF8ToUTF16("foo"); - frame_state->state_object = base::nullopt; - frame_state->document_state.push_back(base::UTF8ToUTF16("1")); - frame_state->document_state.push_back(base::UTF8ToUTF16("q")); - frame_state->document_state.push_back(base::UTF8ToUTF16("text")); - frame_state->document_state.push_back( - base::UTF8ToUTF16("dev.chromium.org")); - frame_state->scroll_restoration_type = - mojom::ScrollRestorationType::kManual; - frame_state->visual_viewport_scroll_offset = gfx::PointF(10, 15); - frame_state->scroll_offset = gfx::Point(0, 100); - frame_state->item_sequence_number = 1; - frame_state->document_sequence_number = 2; - frame_state->page_scale_factor = 2.0; - frame_state->scroll_anchor_selector = base::UTF8ToUTF16("#selector"); - frame_state->scroll_anchor_offset = gfx::PointF(2.5, 3.5); - frame_state->scroll_anchor_simhash = 12345; - } - - void PopulateHttpBody( - ExplodedHttpBody* http_body, - std::vector<base::Optional<base::string16>>* referenced_files) { - http_body->request_body = new network::ResourceRequestBody(); - http_body->request_body->set_identifier(12345); - http_body->contains_passwords = false; - http_body->http_content_type = base::UTF8ToUTF16("text/foo"); - - std::string test_body("foo"); - http_body->request_body->AppendBytes(test_body.data(), test_body.size()); - - base::FilePath path(FILE_PATH_LITERAL("file.txt")); - http_body->request_body->AppendFileRange(base::FilePath(path), 100, 1024, - base::Time::FromDoubleT(9999.0)); - - referenced_files->emplace_back(path.AsUTF16Unsafe()); - } - - void PopulateFrameStateForBackwardsCompatTest(ExplodedFrameState* frame_state, - bool is_child, - int version) { - if (version < 28) { - // Older versions didn't cover |initiator_origin| - we expect that - // deserialization will set it to the default, null value. - frame_state->initiator_origin = base::nullopt; - } else { - frame_state->initiator_origin = - url::Origin::Create(GURL("https://initiator.example.com")); - } - - // Some of the test values below are the same as the default value that - // would be deserialized when reading old versions. This is undesirable, - // because it means that the tests do not fully test that a non-default - // value is correctly deserialized. Unfortunately this is tricky to change, - // because these default/old test values are baked into serialized_XX.dat - // test files (which we should be wary of modifying, since they are supposed - // to represent set-in-stone old serialization format). - // - // When introducing new fields, please test a non-default value, starting - // with the |version| where the new field is being introduced (set the - // |version|-dependent test value above - next to and similarly to how - // |initiator_origin| is handled). - frame_state->url_string = base::UTF8ToUTF16("http://chromium.org/"); - frame_state->referrer = base::UTF8ToUTF16("http://google.com/"); - frame_state->referrer_policy = network::mojom::ReferrerPolicy::kDefault; - if (!is_child) - frame_state->target = base::UTF8ToUTF16("target"); - frame_state->scroll_restoration_type = mojom::ScrollRestorationType::kAuto; - frame_state->visual_viewport_scroll_offset = gfx::PointF(-1, -1); - frame_state->scroll_offset = gfx::Point(42, -42); - frame_state->item_sequence_number = 123; - frame_state->document_sequence_number = 456; - frame_state->page_scale_factor = 2.0f; - - frame_state->document_state.push_back(base::UTF8ToUTF16( - "\n\r?% WebKit serialized form state version 8 \n\r=&")); - frame_state->document_state.push_back(base::UTF8ToUTF16("form key")); - frame_state->document_state.push_back(base::UTF8ToUTF16("1")); - frame_state->document_state.push_back(base::UTF8ToUTF16("foo")); - frame_state->document_state.push_back(base::UTF8ToUTF16("file")); - frame_state->document_state.push_back(base::UTF8ToUTF16("2")); - frame_state->document_state.push_back(base::UTF8ToUTF16("file.txt")); - frame_state->document_state.push_back(base::UTF8ToUTF16("displayName")); - - if (!is_child) { - frame_state->http_body.http_content_type = base::UTF8ToUTF16("foo/bar"); - frame_state->http_body.request_body = new network::ResourceRequestBody(); - frame_state->http_body.request_body->set_identifier(789); - - std::string test_body("first data block"); - frame_state->http_body.request_body->AppendBytes(test_body.data(), - test_body.size()); - - frame_state->http_body.request_body->AppendFileRange( - base::FilePath(FILE_PATH_LITERAL("file.txt")), 0, - std::numeric_limits<uint64_t>::max(), base::Time::FromDoubleT(0.0)); - - std::string test_body2("data the second"); - frame_state->http_body.request_body->AppendBytes(test_body2.data(), - test_body2.size()); - - ExplodedFrameState child_state; - PopulateFrameStateForBackwardsCompatTest(&child_state, true, version); - frame_state->children.push_back(child_state); - } - } - - void PopulatePageStateForBackwardsCompatTest(ExplodedPageState* page_state, - int version) { - page_state->referenced_files.push_back(base::UTF8ToUTF16("file.txt")); - PopulateFrameStateForBackwardsCompatTest(&page_state->top, false, version); - } - - void ReadBackwardsCompatPageState(const std::string& suffix, - int version, - ExplodedPageState* page_state) { - base::FilePath path = GetFilePath(); - path = path.AppendASCII( - base::StringPrintf("serialized_%s.dat", suffix.c_str())); - - std::string file_contents; - if (!base::ReadFileToString(path, &file_contents)) { - ADD_FAILURE() << "File not found: " << path.value(); - return; - } - - std::string trimmed_file_contents; - EXPECT_TRUE( - base::RemoveChars(file_contents, "\r\n", &trimmed_file_contents)); - - std::string saved_encoded_state; - // PageState is encoded twice; once via EncodePageState, and again - // via Base64Decode, so we need to Base64Decode to get the original - // encoded PageState. - EXPECT_TRUE( - base::Base64Decode(trimmed_file_contents, &saved_encoded_state)); - -#if defined(OS_ANDROID) - // Because version 11 of the file format unfortunately bakes in the device - // scale factor on Android, perform this test by assuming a preset device - // scale factor, ignoring the device scale factor of the current device. - const float kPresetDeviceScaleFactor = 2.0f; - EXPECT_TRUE(DecodePageStateWithDeviceScaleFactorForTesting( - saved_encoded_state, kPresetDeviceScaleFactor, page_state)); -#else - EXPECT_EQ(version, - DecodePageStateForTesting(saved_encoded_state, page_state)); -#endif - } - - void TestBackwardsCompat(int version) { - std::string suffix = base::StringPrintf("v%d", version); - -#if defined(OS_ANDROID) - // Unfortunately, the format of version 11 is different on Android, so we - // need to use a special reference file. - if (version == 11) { - suffix = std::string("v11_android"); - } -#endif - - ExplodedPageState decoded_state; - ExplodedPageState expected_state; - PopulatePageStateForBackwardsCompatTest(&expected_state, version); - ReadBackwardsCompatPageState(suffix, version, &decoded_state); - - ExpectEquality(expected_state, decoded_state); - } -}; - -TEST_F(PageStateSerializationTest, BasicEmpty) { - ExplodedPageState input; - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - EXPECT_TRUE(DecodePageState(encoded, &output)); - - ExpectEquality(input, output); -} - -TEST_F(PageStateSerializationTest, BasicFrame) { - ExplodedPageState input; - PopulateFrameState(&input.top); - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - EXPECT_TRUE(DecodePageState(encoded, &output)); - - ExpectEquality(input, output); -} - -TEST_F(PageStateSerializationTest, BasicFramePOST) { - ExplodedPageState input; - PopulateFrameState(&input.top); - PopulateHttpBody(&input.top.http_body, &input.referenced_files); - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - EXPECT_TRUE(DecodePageState(encoded, &output)); - - ExpectEquality(input, output); -} - -TEST_F(PageStateSerializationTest, BasicFrameSet) { - ExplodedPageState input; - PopulateFrameState(&input.top); - - // Add some child frames. - for (int i = 0; i < 4; ++i) { - ExplodedFrameState child_state; - PopulateFrameState(&child_state); - input.top.children.push_back(child_state); - } - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - EXPECT_TRUE(DecodePageState(encoded, &output)); - - ExpectEquality(input, output); -} - -TEST_F(PageStateSerializationTest, BasicFrameSetPOST) { - ExplodedPageState input; - PopulateFrameState(&input.top); - - // Add some child frames. - for (int i = 0; i < 4; ++i) { - ExplodedFrameState child_state; - PopulateFrameState(&child_state); - - // Simulate a form POST on a subframe. - if (i == 2) - PopulateHttpBody(&child_state.http_body, &input.referenced_files); - - input.top.children.push_back(child_state); - } - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - DecodePageState(encoded, &output); - - ExpectEquality(input, output); -} - -TEST_F(PageStateSerializationTest, BadMessagesTest1) { - base::Pickle p; - // Version 14 - p.WriteInt(14); - // Empty strings. - for (int i = 0; i < 6; ++i) - p.WriteInt(-1); - // Bad real number. - p.WriteInt(-1); - - std::string s(static_cast<const char*>(p.data()), p.size()); - - ExplodedPageState output; - EXPECT_FALSE(DecodePageState(s, &output)); -} - -TEST_F(PageStateSerializationTest, BadMessagesTest2) { - double d = 0; - base::Pickle p; - // Version 14 - p.WriteInt(14); - // Empty strings. - for (int i = 0; i < 6; ++i) - p.WriteInt(-1); - // More misc fields. - p.WriteData(reinterpret_cast<const char*>(&d), sizeof(d)); - p.WriteInt(1); - p.WriteInt(1); - p.WriteInt(0); - p.WriteInt(0); - p.WriteInt(-1); - p.WriteInt(0); - // WebForm - p.WriteInt(1); - p.WriteInt(static_cast<int>(HTTPBodyElementType::kTypeData)); - - std::string s(static_cast<const char*>(p.data()), p.size()); - - ExplodedPageState output; - EXPECT_FALSE(DecodePageState(s, &output)); -} - -// Tests that LegacyEncodePageState, which uses the pre-mojo serialization -// format, produces the exact same blob as it did when the test was written. -// This ensures that the implementation is frozen, which is needed to correctly -// test compatibility and migration. -TEST_F(PageStateSerializationTest, LegacyEncodePageStateFrozen) { - ExplodedPageState actual_state; - PopulatePageStateForBackwardsCompatTest(&actual_state, 25); - - std::string actual_encoded_state; - LegacyEncodePageStateForTesting(actual_state, 25, &actual_encoded_state); - - base::FilePath path = GetFilePath(); - path = path.AppendASCII("serialized_v25.dat"); - - std::string file_contents; - ASSERT_TRUE(base::ReadFileToString(path, &file_contents)) - << "File not found: " << path.value(); - - std::string trimmed_file_contents; - EXPECT_TRUE(base::RemoveChars(file_contents, "\n", &trimmed_file_contents)); - - std::string expected_encoded_state; - EXPECT_TRUE( - base::Base64Decode(trimmed_file_contents, &expected_encoded_state)); - - ExpectEquality(actual_encoded_state, expected_encoded_state); -} - -TEST_F(PageStateSerializationTest, ScrollAnchorSelectorLengthLimited) { - ExplodedPageState input; - PopulateFrameState(&input.top); - - std::string excessive_length_string(kMaxScrollAnchorSelectorLength + 1, 'a'); - - input.top.scroll_anchor_selector = base::UTF8ToUTF16(excessive_length_string); - - std::string encoded; - EncodePageState(input, &encoded); - - ExplodedPageState output; - DecodePageState(encoded, &output); - - // We should drop all the scroll anchor data if the length is over the limit. - EXPECT_FALSE(output.top.scroll_anchor_selector); - EXPECT_EQ(output.top.scroll_anchor_offset, gfx::PointF()); - EXPECT_EQ(output.top.scroll_anchor_simhash, 0ul); -} - -// Change to #if 1 to enable this code. Run this test to generate data, based on -// the current serialization format, for the BackwardsCompat_vXX tests. This -// will generate an expected.dat in the temp directory, which should be moved -// //content/test/data/page_state/serialization_vXX.dat. A corresponding test -// case for that version should also then be added below. You need to add such -// a test for any addition/change to the schema of serialized page state. -// If you're adding a field whose type is defined externally of -// page_state.mojom, add an backwards compat test for that field specifically -// by dumping a state object with only that field populated. See, e.g., -// BackwardsCompat_UrlString as an example. -// -// IMPORTANT: this code dumps the serialization as the *current* version, so if -// generating a backwards compat test for v23, the tree must be synced to a -// revision where page_state_serialization.cc:kCurrentVersion == 23. -#if 0 -TEST_F(PageStateSerializationTest, DumpExpectedPageStateForBackwardsCompat) { - // Populate |state| with test data suitable for testing the current (i.e. the - // latest) version of serialization. This is accomplished by asking for test - // data for version 9999 - a future, hypothetical version number. - ExplodedPageState state; - PopulatePageStateForBackwardsCompatTest(&state, 9999); - - std::string encoded; - EncodePageState(state, &encoded); - - std::string base64; - base::Base64Encode(encoded, &base64); - - base::FilePath path; - base::PathService::Get(base::DIR_TEMP, &path); - path = path.AppendASCII("expected.dat"); - - FILE* fp = base::OpenFile(path, "wb"); - ASSERT_TRUE(fp); - - const size_t kRowSize = 76; - for (size_t offset = 0; offset < base64.size(); offset += kRowSize) { - size_t length = std::min(base64.size() - offset, kRowSize); - std::string segment(&base64[offset], length); - segment.push_back('\n'); - ASSERT_EQ(1U, fwrite(segment.data(), segment.size(), 1, fp)); - } - - fclose(fp); -} -#endif - -#if !defined(OS_ANDROID) -// TODO(darin): Re-enable for Android once this test accounts for systems with -// a device scale factor not equal to 2. -TEST_F(PageStateSerializationTest, BackwardsCompat_v11) { - TestBackwardsCompat(11); -} -#endif - -TEST_F(PageStateSerializationTest, BackwardsCompat_v12) { - TestBackwardsCompat(12); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v13) { - TestBackwardsCompat(13); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v14) { - TestBackwardsCompat(14); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v15) { - TestBackwardsCompat(15); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v16) { - TestBackwardsCompat(16); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v18) { - TestBackwardsCompat(18); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v20) { - TestBackwardsCompat(20); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v21) { - TestBackwardsCompat(21); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v22) { - TestBackwardsCompat(22); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v23) { - TestBackwardsCompat(23); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v24) { - TestBackwardsCompat(24); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v25) { - TestBackwardsCompat(25); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v26) { - TestBackwardsCompat(26); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v27) { - TestBackwardsCompat(27); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_v28) { - TestBackwardsCompat(28); -} - -// Add your new backwards compat test for future versions *above* this -// comment block; field-specific tests go *below* this comment block. -// Any field additions require a new version and backcompat test; only fields -// with external type definitions require their own dedicated test. -// See DumpExpectedPageStateForBackwardsCompat for more details. -// If any of the below tests fail, you likely made a backwards incompatible -// change to a definition that page_state.mojom relies on. Ideally you should -// find a way to avoid making this change; if that's not possible, contact the -// page state serialization owners to figure out a resolution. - -TEST_F(PageStateSerializationTest, BackwardsCompat_ReferencedFiles) { - ExplodedPageState state; - state.referenced_files.push_back(base::UTF8ToUTF16("file.txt")); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("referenced_files", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_UrlString) { - ExplodedPageState state; - state.top.url_string = base::ASCIIToUTF16("http://chromium.org"); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("url_string", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_Referrer) { - ExplodedPageState state; - state.top.referrer = base::ASCIIToUTF16("http://www.google.com"); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("referrer", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_Target) { - ExplodedPageState state; - state.top.target = base::ASCIIToUTF16("http://www.google.com"); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("target", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_StateObject) { - ExplodedPageState state; - state.top.state_object = base::ASCIIToUTF16("state"); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("state_object", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_DocumentState) { - ExplodedPageState state; - state.top.document_state.push_back(base::ASCIIToUTF16( - "\n\r?% WebKit serialized form state version 8 \n\r=&")); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("document_state", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_ScrollRestorationType) { - ExplodedPageState state; - state.top.scroll_restoration_type = mojom::ScrollRestorationType::kManual; - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("scroll_restoration_type", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_VisualViewportScrollOffset) { - ExplodedPageState state; - state.top.visual_viewport_scroll_offset = gfx::PointF(42.2, -42.2); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("visual_viewport_scroll_offset", 26, - &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_ScrollOffset) { - ExplodedPageState state; - state.top.scroll_offset = gfx::Point(1, -1); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("scroll_offset", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_ReferrerPolicy) { - ExplodedPageState state; - state.top.referrer_policy = network::mojom::ReferrerPolicy::kAlways; - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("referrer_policy", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -TEST_F(PageStateSerializationTest, BackwardsCompat_HttpBody) { - ExplodedPageState state; - ExplodedHttpBody& http_body = state.top.http_body; - - http_body.request_body = new network::ResourceRequestBody(); - http_body.request_body->set_identifier(12345); - http_body.contains_passwords = false; - http_body.http_content_type = base::UTF8ToUTF16("text/foo"); - - std::string test_body("foo"); - http_body.request_body->AppendBytes(test_body.data(), test_body.size()); - - base::FilePath path(FILE_PATH_LITERAL("file.txt")); - http_body.request_body->AppendFileRange(base::FilePath(path), 100, 1024, - base::Time::FromDoubleT(9999.0)); - - ExplodedPageState saved_state; - ReadBackwardsCompatPageState("http_body", 26, &saved_state); - ExpectEquality(state, saved_state); -} - -// Add new backwards compat field-specific tests here. See comment above for -// where to put backwards compat version tests. - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/peerconnection/OWNERS b/chromium/src/third_party/blink/common/peerconnection/OWNERS deleted file mode 100644 index 5ab7d58..0000000 --- a/chromium/src/third_party/blink/common/peerconnection/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://third_party/blink/renderer/modules/peerconnection/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/permissions/OWNERS b/chromium/src/third_party/blink/common/permissions/OWNERS deleted file mode 100644 index 5fc2b35..0000000 --- a/chromium/src/third_party/blink/common/permissions/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/modules/permissions/OWNERS
diff --git a/chromium/src/third_party/blink/common/privacy_budget/OWNERS b/chromium/src/third_party/blink/common/privacy_budget/OWNERS deleted file mode 100644 index dc54869..0000000 --- a/chromium/src/third_party/blink/common/privacy_budget/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/public/common/privacy_budget/OWNERS
diff --git a/chromium/src/third_party/blink/common/privacy_budget/identifiability_internal_templates_unittest.cc b/chromium/src/third_party/blink/common/privacy_budget/identifiability_internal_templates_unittest.cc deleted file mode 100644 index 048b458..0000000 --- a/chromium/src/third_party/blink/common/privacy_budget/identifiability_internal_templates_unittest.cc +++ /dev/null
@@ -1,107 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h" - -#include <cstdint> -#include <limits> -#include <type_traits> - -#include "build/build_config.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { -namespace internal { -namespace { - -struct PodType { - int x; - float y; - char c; - char g[10]; -}; - -#if !defined(ARCH_CPU_LITTLE_ENDIAN) && !defined(ARCH_CPU_BIG_ENDIAN) -#error "What kind of CPU is this?" -#endif - -} // namespace - -// remove_cvref_t -static_assert(std::is_same<int, remove_cvref_t<const int>>::value, ""); -static_assert(std::is_same<int, remove_cvref_t<const volatile int>>::value, ""); -static_assert(std::is_same<int, remove_cvref_t<int&>>::value, ""); -static_assert(std::is_same<int, remove_cvref_t<const int&>>::value, ""); -static_assert(std::is_same<int, remove_cvref_t<const volatile int&>>::value, - ""); -static_assert(std::is_same<int, remove_cvref_t<int&&>>::value, ""); -static_assert(std::is_same<PodType, remove_cvref_t<const PodType&>>::value, ""); -static_assert(std::is_same<int*, remove_cvref_t<int*>>::value, ""); - -// has_unique_object_representations -static_assert(has_unique_object_representations<int>::value, ""); -static_assert(has_unique_object_representations<float>::value, ""); -static_assert(has_unique_object_representations<double>::value, ""); - -// long double: check_blink_style doesn't let us use the word 'long' here. -static_assert(has_unique_object_representations<decltype(1.0l)>::value, ""); - -// Pointers aren't considered to have a unique representation. -static_assert(!has_unique_object_representations<int*>::value, ""); - -// Nor are POD types though they could be if they are dense and don't have any -// internal padding. -static_assert(!has_unique_object_representations<PodType>::value, ""); - -TEST(IdentifiabilityInternalTemplatesTest, DigestOfObjectRepresentation) { - const int kV = 5; - const int& kRV = kV; - const volatile int& kRVV = kV; - - // Note that both little and big endian systems produce the same result from - // DigestOfObjectRepresentation(); - - // Positive unsigned integers. - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(UINT8_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(UINT16_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(UINT32_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(UINT64_C(5))); - - // Positive signed integers. - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(INT8_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(INT16_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(INT32_C(5))); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(INT64_C(5))); - // char - EXPECT_EQ(INT64_C(65), DigestOfObjectRepresentation('A')); - - // Negative integers. - EXPECT_EQ(INT64_C(-5), DigestOfObjectRepresentation(INT8_C(-5))); - EXPECT_EQ(INT64_C(-5), DigestOfObjectRepresentation(INT16_C(-5))); - EXPECT_EQ(INT64_C(-5), DigestOfObjectRepresentation(INT32_C(-5))); - EXPECT_EQ(INT64_C(-5), DigestOfObjectRepresentation(INT64_C(-5))); - - // Large unsigned integer. These wrap around for 2s complement arithmetic. - EXPECT_EQ(INT64_C(-1), - DigestOfObjectRepresentation(std::numeric_limits<uint64_t>::max())); - - // CV qualified types should be unwrapped. - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(kV)); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(kRV)); - EXPECT_EQ(INT64_C(5), DigestOfObjectRepresentation(kRVV)); -} - -TEST(IdentifiabilityInternalTemplatesTest, - DigestOfObjectRepresentation_Floats) { - // IEEE 754 32-bit single precision float. - if (sizeof(float) == 4) - EXPECT_EQ(INT64_C(1069547520), DigestOfObjectRepresentation(1.5f)); - - // IEEE 754 64-bit double precision float. - if (sizeof(double) == 8) - EXPECT_EQ(INT64_C(4609434218613702656), DigestOfObjectRepresentation(1.5)); -} - -} // namespace internal -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/privacy_budget/identifiability_study_settings.cc b/chromium/src/third_party/blink/common/privacy_budget/identifiability_study_settings.cc deleted file mode 100644 index 5e9f478..0000000 --- a/chromium/src/third_party/blink/common/privacy_budget/identifiability_study_settings.cc +++ /dev/null
@@ -1,201 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h" - -#include <random> - -#include "base/check.h" -#include "base/compiler_specific.h" -#include "base/no_destructor.h" -#include "base/optional.h" -#include "base/rand_util.h" -#include "base/synchronization/atomic_flag.h" -#include "base/threading/sequence_local_storage_slot.h" -#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings_provider.h" - -namespace blink { - -namespace { - -// IdentifiabilityStudySettings is meant to be used as a global singleton. Its -// use is subject to the following constraints. -// -// 1. The embedder should be able to set the -// IdentifiabilityStudySettingsProvider at any point during execution. This -// relaxation allows the embedder to perform any required initialization -// without blocking process startup. -// -// 2. Get() and the returned IdentifiabilityStudySettings instance should be -// usable from any thread. The returned object must always be well -// formed with an infinite lifetime. -// -// 3. Calling Get() "prior" to the embedder calling SetProvider() should be -// harmless and non-blocking. -// -// 4. Be fast. -class ThreadsafeSettingsWrapper { - public: - ThreadsafeSettingsWrapper() = default; - - const IdentifiabilityStudySettings* GetSettings() { - // Access to initialized_settings_ is behind a memory barrier used for - // accessing the atomic flag |initialized_|. The state of - // |initialized_settings_| is consistent due to the acquire-release - // semantics enforced by |AtomicFlag|. I.e. writes prior to - // AtomicFlag::Set() is visible after a AtomicFlag::IsSet() which returns - // true. - // - // If the flag is not set, then |default_settings_| can be used instead. - // - // In either case, the returned pointer... - // 1. ... Points to a well formed IdentifiabilityStudySettings object. - // 2. ... Is valid for the remainder of the process lifetime. - // 3. ... Is safe to use from any thread. - if (!initialized_.IsSet()) - return &default_settings_; - return &initialized_settings_.value(); - } - - // Same restrictions as IdentifiabilityStudySettings::SetGlobalProvider(). - void SetProvider( - std::unique_ptr<IdentifiabilityStudySettingsProvider> provider) { - DCHECK(!initialized_.IsSet()); - initialized_settings_.emplace(std::move(provider)); - initialized_.Set(); - } - - void ResetStateForTesting() { - initialized_settings_.reset(); - initialized_.UnsafeResetForTesting(); - } - - // Function local static initializer is initialized in a threadsafe manner. - // This object itself is cheap to construct. - static ThreadsafeSettingsWrapper* GetWrapper() { - static base::NoDestructor<ThreadsafeSettingsWrapper> wrapper; - return wrapper.get(); - } - - private: - base::Optional<IdentifiabilityStudySettings> initialized_settings_; - const IdentifiabilityStudySettings default_settings_; - base::AtomicFlag initialized_; -}; - -// RandGenerator de-biasing implementation stolen from //base/rand_util.h, and -// adapted to work with passed-in RNGs. -template <typename G> -uint64_t RandGenerator(uint64_t range, G& generator) { - DCHECK_GT(range, 0u); - // We must discard random results above this number, as they would - // make the random generator non-uniform (consider e.g. if - // MAX_UINT64 was 7 and |range| was 5, then a result of 1 would be twice - // as likely as a result of 3 or 4). - uint64_t max_acceptable_value = - (std::numeric_limits<uint64_t>::max() / range) * range - 1; - - uint64_t value; - do { - value = generator(); - } while (value > max_acceptable_value); - - return value % range; -} - -bool DecideSample(int sample_rate) { - static base::NoDestructor<base::SequenceLocalStorageSlot<std::mt19937_64>> - prng; - - if (sample_rate == 0) - return false; - - if (sample_rate == 1) - return true; - - if (!prng->GetValuePointer()) - prng->emplace(base::RandUint64()); - - return RandGenerator(sample_rate, **prng) == 0; -} - -} // namespace - -IdentifiabilityStudySettingsProvider::~IdentifiabilityStudySettingsProvider() = - default; - -IdentifiabilityStudySettings::IdentifiabilityStudySettings() = default; - -IdentifiabilityStudySettings::IdentifiabilityStudySettings( - std::unique_ptr<IdentifiabilityStudySettingsProvider> provider) - : provider_(std::move(provider)), - is_enabled_(provider_->IsActive()), - is_any_surface_or_type_blocked_(provider_->IsAnyTypeOrSurfaceBlocked()) {} - -IdentifiabilityStudySettings::~IdentifiabilityStudySettings() = default; - -// static -const IdentifiabilityStudySettings* IdentifiabilityStudySettings::Get() { - return ThreadsafeSettingsWrapper::GetWrapper()->GetSettings(); -} - -// static -void IdentifiabilityStudySettings::SetGlobalProvider( - std::unique_ptr<IdentifiabilityStudySettingsProvider> provider) { - ThreadsafeSettingsWrapper::GetWrapper()->SetProvider(std::move(provider)); -} - -void IdentifiabilityStudySettings::ResetStateForTesting() { - ThreadsafeSettingsWrapper::GetWrapper()->ResetStateForTesting(); -} - -bool IdentifiabilityStudySettings::IsActive() const { - return is_enabled_; -} - -bool IdentifiabilityStudySettings::IsSurfaceAllowed( - IdentifiableSurface surface) const { - if (LIKELY(!is_enabled_)) - return false; - - if (LIKELY(!is_any_surface_or_type_blocked_)) - return true; - - return provider_->IsSurfaceAllowed(surface); -} - -bool IdentifiabilityStudySettings::IsTypeAllowed( - IdentifiableSurface::Type type) const { - if (LIKELY(!is_enabled_)) - return false; - - if (LIKELY(!is_any_surface_or_type_blocked_)) - return true; - - return provider_->IsTypeAllowed(type); -} - -bool IdentifiabilityStudySettings::IsWebFeatureAllowed( - mojom::WebFeature feature) const { - return IsSurfaceAllowed(IdentifiableSurface::FromTypeAndToken( - IdentifiableSurface::Type::kWebFeature, feature)); -} - -bool IdentifiabilityStudySettings::ShouldSample( - IdentifiableSurface surface) const { - if (LIKELY(!is_enabled_)) - return false; - - return DecideSample(provider_->SampleRate(surface)); -} - -bool IdentifiabilityStudySettings::ShouldSample( - IdentifiableSurface::Type type) const { - if (LIKELY(!is_enabled_)) - return false; - - return DecideSample(provider_->SampleRate(type)); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/renderer_preferences/OWNERS b/chromium/src/third_party/blink/common/renderer_preferences/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/renderer_preferences/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc b/chromium/src/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc deleted file mode 100644 index 0e5fa7a..0000000 --- a/chromium/src/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc +++ /dev/null
@@ -1,112 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h" - -#include <string> - -#include "build/build_config.h" -#include "third_party/blink/public/mojom/renderer_preferences.mojom-shared.h" - -namespace mojo { - -bool StructTraits<blink::mojom::RendererPreferencesDataView, - ::blink::RendererPreferences>:: - Read(blink::mojom::RendererPreferencesDataView data, - ::blink::RendererPreferences* out) { - out->can_accept_load_drops = data.can_accept_load_drops(); - out->should_antialias_text = data.should_antialias_text(); - - if (!data.ReadHinting(&out->hinting)) - return false; - out->use_autohinter = data.use_autohinter(); - - out->use_bitmaps = data.use_bitmaps(); - - if (!data.ReadSubpixelRendering(&out->subpixel_rendering)) - return false; - out->use_subpixel_positioning = data.use_subpixel_positioning(); - - out->focus_ring_color = data.focus_ring_color(); - out->active_selection_bg_color = data.active_selection_bg_color(); - out->active_selection_fg_color = data.active_selection_fg_color(); - out->inactive_selection_bg_color = data.inactive_selection_bg_color(); - out->inactive_selection_fg_color = data.inactive_selection_fg_color(); - - out->browser_handles_all_top_level_requests = - data.browser_handles_all_top_level_requests(); - - if (!data.ReadCaretBlinkInterval(&out->caret_blink_interval)) - return false; - - out->use_custom_colors = data.use_custom_colors(); - out->enable_referrers = data.enable_referrers(); - out->allow_cross_origin_auth_prompt = data.allow_cross_origin_auth_prompt(); - out->enable_do_not_track = data.enable_do_not_track(); - out->enable_encrypted_media = data.enable_encrypted_media(); - - if (!data.ReadWebrtcIpHandlingPolicy(&out->webrtc_ip_handling_policy)) - return false; - - out->webrtc_udp_min_port = data.webrtc_udp_min_port(); - out->webrtc_udp_max_port = data.webrtc_udp_max_port(); - - if (!data.ReadWebrtcLocalIpsAllowedUrls(&out->webrtc_local_ips_allowed_urls)) - return false; - - out->webrtc_allow_legacy_tls_protocols = - data.webrtc_allow_legacy_tls_protocols(); - - if (!data.ReadUserAgentOverride(&out->user_agent_override)) - return false; - - if (!data.ReadAcceptLanguages(&out->accept_languages)) - return false; - -#if defined(OS_LINUX) || defined(OS_CHROMEOS) - if (!data.ReadSystemFontFamilyName(&out->system_font_family_name)) - return false; -#endif -#if defined(OS_WIN) - if (!data.ReadCaptionFontFamilyName(&out->caption_font_family_name)) - return false; - out->caption_font_height = data.caption_font_height(); - - if (!data.ReadSmallCaptionFontFamilyName( - &out->small_caption_font_family_name)) - return false; - out->small_caption_font_height = data.small_caption_font_height(); - - if (!data.ReadMenuFontFamilyName(&out->menu_font_family_name)) - return false; - out->menu_font_height = data.menu_font_height(); - - if (!data.ReadStatusFontFamilyName(&out->status_font_family_name)) - return false; - out->status_font_height = data.status_font_height(); - - if (!data.ReadMessageFontFamilyName(&out->message_font_family_name)) - return false; - out->message_font_height = data.message_font_height(); - - out->vertical_scroll_bar_width_in_dips = - data.vertical_scroll_bar_width_in_dips(); - out->horizontal_scroll_bar_height_in_dips = - data.horizontal_scroll_bar_height_in_dips(); - out->arrow_bitmap_height_vertical_scroll_bar_in_dips = - data.arrow_bitmap_height_vertical_scroll_bar_in_dips(); - out->arrow_bitmap_width_horizontal_scroll_bar_in_dips = - data.arrow_bitmap_width_horizontal_scroll_bar_in_dips(); -#endif -#if defined(USE_X11) || defined(USE_OZONE) - out->selection_clipboard_buffer_available = - data.selection_clipboard_buffer_available(); -#endif - out->plugin_fullscreen_allowed = data.plugin_fullscreen_allowed(); - out->caret_browsing_enabled = data.caret_browsing_enabled(); - - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/scheduler/OWNERS b/chromium/src/third_party/blink/common/scheduler/OWNERS deleted file mode 100644 index 6f83df0..0000000 --- a/chromium/src/third_party/blink/common/scheduler/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/platform/scheduler/OWNERS
diff --git a/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc b/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc deleted file mode 100644 index ad0dd40..0000000 --- a/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc +++ /dev/null
@@ -1,225 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h" - -#include <map> - -namespace blink { -namespace scheduler { - -namespace { - -struct FeatureNames { - std::string short_name; - std::string human_readable; -}; - -FeatureNames FeatureToNames(WebSchedulerTrackedFeature feature) { - switch (feature) { - case WebSchedulerTrackedFeature::kWebSocket: - return {"WebSocket", "WebSocket"}; - case WebSchedulerTrackedFeature::kWebRTC: - return {"WebRTC", "WebRTC"}; - case WebSchedulerTrackedFeature::kMainResourceHasCacheControlNoCache: - return {"MainResourceHasCacheControlNoCache", - "main resource has Cache-Control: No-Cache"}; - case WebSchedulerTrackedFeature::kMainResourceHasCacheControlNoStore: - return {"MainResourceHasCacheControlNoStore", - "main resource has Cache-Control: No-Store"}; - case WebSchedulerTrackedFeature::kSubresourceHasCacheControlNoCache: - return {"SubresourceHasCacheControlNoCache", - "subresource has Cache-Control: No-Cache"}; - case WebSchedulerTrackedFeature::kSubresourceHasCacheControlNoStore: - return {"SubresourceHasCacheControlNoStore", - "subresource has Cache-Control: No-Store"}; - case WebSchedulerTrackedFeature::kPageShowEventListener: - return {"PageShowEventListener", "onpageshow() event listener"}; - case WebSchedulerTrackedFeature::kPageHideEventListener: - return {"PageHideEventListener", "onpagehide() event listener"}; - case WebSchedulerTrackedFeature::kBeforeUnloadEventListener: - return {"BeforeUnloadEventListener", "onbeforeunload() event listener"}; - case WebSchedulerTrackedFeature::kUnloadEventListener: - return {"UnloadEventListener", "onunload() event listener"}; - case WebSchedulerTrackedFeature::kFreezeEventListener: - return {"FreezeEventListener", "onfreeze() event listener"}; - case WebSchedulerTrackedFeature::kResumeEventListener: - return {"ResumeEventListener", "onresume() event listener"}; - case WebSchedulerTrackedFeature::kContainsPlugins: - return {"ContainsPlugins", "page contains plugins"}; - case WebSchedulerTrackedFeature::kDocumentLoaded: - return {"DocumentLoaded", "document loaded"}; - case WebSchedulerTrackedFeature::kDedicatedWorkerOrWorklet: - return {"DedicatedWorkerOrWorklet", - "Dedicated worker or worklet present"}; - case WebSchedulerTrackedFeature::kSharedWorker: - return {"SharedWorker", "Shared worker present"}; - case WebSchedulerTrackedFeature::kOutstandingNetworkRequestFetch: - return {"OutstandingNetworkRequestFetch", - "outstanding network request (fetch)"}; - case WebSchedulerTrackedFeature::kOutstandingNetworkRequestXHR: - return {"OutstandingNetworkRequestXHR", - "outstanding network request (XHR)"}; - case WebSchedulerTrackedFeature::kOutstandingNetworkRequestOthers: - return {"OutstandingNetworkRequestOthers", - "outstanding network request (others)"}; - case WebSchedulerTrackedFeature::kOutstandingIndexedDBTransaction: - return {"OutstandingIndexedDBTransaction", - "outstanding IndexedDB transaction"}; - case WebSchedulerTrackedFeature::kRequestedGeolocationPermission: - return {"RequestedGeolocationPermission", - "requested geolocation permission"}; - case WebSchedulerTrackedFeature::kRequestedNotificationsPermission: - return {"RequestedNotificationsPermission", - "requested notifications permission"}; - case WebSchedulerTrackedFeature::kRequestedMIDIPermission: - return {"RequestedMIDIPermission", "requested midi permission"}; - case WebSchedulerTrackedFeature::kRequestedAudioCapturePermission: - return {"RequestedAudioCapturePermission", - "requested audio capture permission"}; - case WebSchedulerTrackedFeature::kRequestedVideoCapturePermission: - return {"RequestedVideoCapturePermission", - "requested video capture permission"}; - case WebSchedulerTrackedFeature::kRequestedBackForwardCacheBlockedSensors: - return {"RequestedBackForwardCacheBlockedSensors", - "requested sensors permission"}; - case WebSchedulerTrackedFeature::kRequestedBackgroundWorkPermission: - return {"RequestedBackgroundWorkPermission", - "requested background work permission"}; - case WebSchedulerTrackedFeature::kBroadcastChannel: - return {"BroadcastChannel", "requested broadcast channel permission"}; - case WebSchedulerTrackedFeature::kIndexedDBConnection: - return {"IndexedDBConnection", "IndexedDB connection present"}; - case WebSchedulerTrackedFeature::kWebVR: - return {"WebVR", "WebVR"}; - case WebSchedulerTrackedFeature::kWebXR: - return {"WebXR", "WebXR"}; - case WebSchedulerTrackedFeature::kWebLocks: - return {"WebLocks", "WebLocks"}; - case WebSchedulerTrackedFeature::kWebHID: - return {"WebHID", "WebHID"}; - case WebSchedulerTrackedFeature::kWebShare: - return {"WebShare", "WebShare"}; - case WebSchedulerTrackedFeature::kRequestedStorageAccessGrant: - return {"RequestedStorageAccessGrant", - "requested storage access permission"}; - case WebSchedulerTrackedFeature::kWebNfc: - return {"WebNfc", "WebNfc"}; - case WebSchedulerTrackedFeature::kWebFileSystem: - return {"WebFileSystem", "WebFileSystem"}; - case WebSchedulerTrackedFeature::kAppBanner: - return {"AppBanner", "AppBanner"}; - case WebSchedulerTrackedFeature::kPrinting: - return {"Printing", "Printing"}; - case WebSchedulerTrackedFeature::kWebDatabase: - return {"WebDatabase", "WebDatabase"}; - case WebSchedulerTrackedFeature::kPictureInPicture: - return {"PictureInPicture", "PictureInPicture"}; - case WebSchedulerTrackedFeature::kPortal: - return {"Portal", "Portal"}; - case WebSchedulerTrackedFeature::kSpeechRecognizer: - return {"SpeechRecognizer", "SpeechRecognizer"}; - case WebSchedulerTrackedFeature::kIdleManager: - return {"IdleManager", "IdleManager"}; - case WebSchedulerTrackedFeature::kPaymentManager: - return {"PaymentManager", "PaymentManager"}; - case WebSchedulerTrackedFeature::kSpeechSynthesis: - return {"SpeechSynthesis", "SpeechSynthesis"}; - case WebSchedulerTrackedFeature::kKeyboardLock: - return {"KeyboardLock", "KeyboardLock"}; - case WebSchedulerTrackedFeature::kWebOTPService: - return {"WebOTPService", "SMSService"}; - case WebSchedulerTrackedFeature::kOutstandingNetworkRequestDirectSocket: - return {"OutstandingNetworkRequestDirectSocket", - "outstanding network request (direct socket)"}; - } - return {}; -} - -std::map<std::string, WebSchedulerTrackedFeature> MakeShortNameToFeature() { - std::map<std::string, WebSchedulerTrackedFeature> short_name_to_feature; - for (int i = 0; i <= static_cast<int>(WebSchedulerTrackedFeature::kMaxValue); - i++) { - WebSchedulerTrackedFeature feature = - static_cast<WebSchedulerTrackedFeature>(i); - FeatureNames strs = FeatureToNames(feature); - if (strs.short_name.size()) - short_name_to_feature[strs.short_name] = feature; - } - return short_name_to_feature; -} - -const std::map<std::string, WebSchedulerTrackedFeature>& -ShortStringToFeatureMap() { - static const std::map<std::string, WebSchedulerTrackedFeature> - short_name_to_feature = MakeShortNameToFeature(); - return short_name_to_feature; -} - -} // namespace - -std::string FeatureToHumanReadableString(WebSchedulerTrackedFeature feature) { - return FeatureToNames(feature).human_readable; -} - -base::Optional<WebSchedulerTrackedFeature> StringToFeature( - const std::string& str) { - auto map = ShortStringToFeatureMap(); - auto it = map.find(str); - if (it == map.end()) { - return base::nullopt; - } - return it->second; -} - -bool IsFeatureSticky(WebSchedulerTrackedFeature feature) { - return (FeatureToBit(feature) & StickyFeaturesBitmask()) > 0; -} - -uint64_t StickyFeaturesBitmask() { - return FeatureToBit( - WebSchedulerTrackedFeature::kMainResourceHasCacheControlNoStore) | - FeatureToBit( - WebSchedulerTrackedFeature::kMainResourceHasCacheControlNoCache) | - FeatureToBit( - WebSchedulerTrackedFeature::kSubresourceHasCacheControlNoStore) | - FeatureToBit( - WebSchedulerTrackedFeature::kSubresourceHasCacheControlNoCache) | - FeatureToBit(WebSchedulerTrackedFeature::kPageShowEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kPageHideEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kBeforeUnloadEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kUnloadEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kFreezeEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kResumeEventListener) | - FeatureToBit(WebSchedulerTrackedFeature::kContainsPlugins) | - FeatureToBit(WebSchedulerTrackedFeature::kDocumentLoaded) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedGeolocationPermission) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedNotificationsPermission) | - FeatureToBit(WebSchedulerTrackedFeature::kRequestedMIDIPermission) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedAudioCapturePermission) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedVideoCapturePermission) | - FeatureToBit(WebSchedulerTrackedFeature:: - kRequestedBackForwardCacheBlockedSensors) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedBackgroundWorkPermission) | - FeatureToBit(WebSchedulerTrackedFeature::kWebLocks) | - FeatureToBit( - WebSchedulerTrackedFeature::kRequestedStorageAccessGrant) | - FeatureToBit(WebSchedulerTrackedFeature::kWebNfc) | - FeatureToBit(WebSchedulerTrackedFeature::kWebFileSystem) | - FeatureToBit(WebSchedulerTrackedFeature::kAppBanner) | - FeatureToBit(WebSchedulerTrackedFeature::kPrinting) | - FeatureToBit(WebSchedulerTrackedFeature::kPictureInPicture) | - FeatureToBit(WebSchedulerTrackedFeature::kIdleManager) | - FeatureToBit(WebSchedulerTrackedFeature::kPaymentManager) | - FeatureToBit(WebSchedulerTrackedFeature::kKeyboardLock) | - FeatureToBit(WebSchedulerTrackedFeature::kWebOTPService); -} - -} // namespace scheduler -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc b/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc deleted file mode 100644 index 81b05ca..0000000 --- a/chromium/src/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h" - -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { -namespace scheduler { - -TEST(WebSchedulerTrackedFeatureTest, StringToFeature) { - ASSERT_EQ(WebSchedulerTrackedFeature::kWebFileSystem, - StringToFeature("WebFileSystem")); - ASSERT_EQ(WebSchedulerTrackedFeature::kDocumentLoaded, - StringToFeature("DocumentLoaded")); - ASSERT_EQ(base::nullopt, StringToFeature("FeatureThatNeverExists")); -} - -} // namespace scheduler -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/service_worker/OWNERS b/chromium/src/third_party/blink/common/service_worker/OWNERS deleted file mode 100644 index c07cce4..0000000 --- a/chromium/src/third_party/blink/common/service_worker/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/service_worker/OWNERS - -per-file *_type_converter*.*=set noparent -per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc b/chromium/src/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc deleted file mode 100644 index 8490eba..0000000 --- a/chromium/src/third_party/blink/common/thread_safe_browser_interface_broker_proxy.cc +++ /dev/null
@@ -1,46 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h" - -namespace blink { - -ThreadSafeBrowserInterfaceBrokerProxy::ThreadSafeBrowserInterfaceBrokerProxy() = - default; - -ThreadSafeBrowserInterfaceBrokerProxy:: - ~ThreadSafeBrowserInterfaceBrokerProxy() = default; - -void ThreadSafeBrowserInterfaceBrokerProxy::GetInterface( - mojo::GenericPendingReceiver receiver) { - DCHECK(receiver.interface_name()); - - base::ReleasableAutoLock lock(&binder_map_lock_); - auto it = binder_map_for_testing_.find(receiver.interface_name().value()); - if (it != binder_map_for_testing_.end()) { - auto binder = it->second; - lock.Release(); - binder.Run(receiver.PassPipe()); - return; - } - - GetInterfaceImpl(std::move(receiver)); -} - -bool ThreadSafeBrowserInterfaceBrokerProxy::SetBinderForTesting( - base::StringPiece interface_name, - Binder binder) { - std::string name = interface_name.as_string(); - - base::AutoLock lock(binder_map_lock_); - if (!binder) { - binder_map_for_testing_.erase(name); - return true; - } - - auto result = binder_map_for_testing_.emplace(name, std::move(binder)); - return result.second; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/tokens/OWNERS b/chromium/src/third_party/blink/common/tokens/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/tokens/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/unique_name/unique_name_helper.cc b/chromium/src/third_party/blink/common/unique_name/unique_name_helper.cc deleted file mode 100644 index 686ac1f..0000000 --- a/chromium/src/third_party/blink/common/unique_name/unique_name_helper.cc +++ /dev/null
@@ -1,323 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/unique_name/unique_name_helper.h" - -#include <algorithm> -#include <utility> - -#include "base/check_op.h" -#include "base/notreached.h" -#include "base/stl_util.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_piece.h" -#include "base/strings/string_util.h" -#include "base/unguessable_token.h" -#include "crypto/sha2.h" - -namespace blink { - -namespace { - -bool g_preserve_stable_unique_name_for_testing = false; - -using FrameAdapter = UniqueNameHelper::FrameAdapter; - -class PendingChildFrameAdapter : public UniqueNameHelper::FrameAdapter { - public: - explicit PendingChildFrameAdapter(FrameAdapter* parent) : parent_(parent) {} - - // FrameAdapter overrides: - bool IsMainFrame() const override { return false; } - bool IsCandidateUnique(base::StringPiece name) const override { - return parent_->IsCandidateUnique(name); - } - int GetSiblingCount() const override { - // Note: no adjustment is required here: since this adapter is an internal - // helper, the parent FrameAdapter it delegates to won't know about this - // child to include it in the count. - return parent_->GetChildCount(); - } - int GetChildCount() const override { - NOTREACHED(); - return 0; - } - std::vector<std::string> CollectAncestorNames( - BeginPoint begin_point, - bool (*should_stop)(base::StringPiece)) const override { - DCHECK_EQ(BeginPoint::kParentFrame, begin_point); - return parent_->CollectAncestorNames(BeginPoint::kThisFrame, should_stop); - } - std::vector<int> GetFramePosition(BeginPoint begin_point) const override { - DCHECK_EQ(BeginPoint::kParentFrame, begin_point); - return parent_->GetFramePosition(BeginPoint::kThisFrame); - } - - private: - FrameAdapter* const parent_; -}; - -constexpr char kFramePathPrefix[] = "<!--framePath /"; -constexpr int kFramePathPrefixLength = 15; -constexpr int kFramePathSuffixLength = 3; -constexpr char kDynamicFrameMarker[] = "<!--dynamicFrame"; - -// 80% of unique names are shorter than this, and it also guarantees that this -// won't ever increase the length of a unique name, as a hashed unique name is -// exactly 80 characters. -constexpr size_t kMaxRequestedNameSize = 80; - -bool IsNameWithFramePath(base::StringPiece name) { - return base::StartsWith(name, kFramePathPrefix) && - base::EndsWith(name, "-->") && - (kFramePathPrefixLength + kFramePathSuffixLength) < name.size(); -} - -std::string GenerateCandidate(const FrameAdapter* frame) { - std::string new_name(kFramePathPrefix); - std::vector<std::string> ancestor_names = frame->CollectAncestorNames( - FrameAdapter::BeginPoint::kParentFrame, &IsNameWithFramePath); - std::reverse(ancestor_names.begin(), ancestor_names.end()); - // Note: This checks ancestor_names[0] twice, but it's nicer to do the name - // extraction here rather than passing another function pointer to - // CollectAncestorNames(). - if (!ancestor_names.empty() && IsNameWithFramePath(ancestor_names[0])) { - ancestor_names[0] = ancestor_names[0].substr(kFramePathPrefixLength, - ancestor_names[0].size() - - kFramePathPrefixLength - - kFramePathSuffixLength); - } - new_name += base::JoinString(ancestor_names, "/"); - - new_name += "/<!--frame"; - new_name += base::NumberToString(frame->GetSiblingCount()); - new_name += "-->-->"; - - // NOTE: This name might not be unique - see http://crbug.com/588800. - return new_name; -} - -std::string GenerateFramePosition(const FrameAdapter* frame) { - std::string position_string("<!--framePosition"); - std::vector<int> positions = - frame->GetFramePosition(FrameAdapter::BeginPoint::kParentFrame); - for (int position : positions) { - position_string += '-'; - position_string += base::NumberToString(position); - } - - // NOTE: The generated string is not guaranteed to be unique, but should - // have a better chance of being unique than the string generated by - // GenerateCandidate, because we embed extra information into the string: - // 1) we walk the full chain of ancestors, all the way to the main frame - // 2) we use frame-position-within-parent (aka |position_in_parent|) - // instead of sibling-count. - return position_string; -} - -std::string AppendUniqueSuffix(const FrameAdapter* frame, - const std::string& prefix, - const std::string& likely_unique_suffix) { - // This should only be called if the |prefix| isn't unique, as this is - // otherwise pointless work. - DCHECK(!frame->IsCandidateUnique(prefix)); - - // We want unique name to be stable across page reloads - this is why - // we use a deterministic |number_of_tries| rather than a random number - // (a random number would be more likely to avoid a collision, but - // would change after every page reload). - int number_of_retries = 0; - - // Keep trying |prefix| + |likely_unique_suffix| + |number_of_tries| - // concatenations until we get a truly unique name. - std::string candidate(prefix); - candidate += likely_unique_suffix; - candidate += '/'; - while (true) { - size_t current_length = candidate.size(); - candidate += base::NumberToString(number_of_retries++); - candidate += "-->"; - if (frame->IsCandidateUnique(candidate)) - break; - candidate.resize(current_length); - } - return candidate; -} - -std::string CalculateNameInternal(const FrameAdapter* frame, - base::StringPiece name) { - if (!name.empty() && frame->IsCandidateUnique(name) && name != "_blank") - return name.as_string(); - - std::string candidate = GenerateCandidate(frame); - if (frame->IsCandidateUnique(candidate)) - return candidate; - - std::string likely_unique_suffix = GenerateFramePosition(frame); - return AppendUniqueSuffix(frame, candidate, likely_unique_suffix); -} - -std::string CalculateFrameHash(base::StringPiece name) { - DCHECK_GT(name.size(), kMaxRequestedNameSize); - - std::string hashed_name; - uint8_t result[crypto::kSHA256Length]; - crypto::SHA256HashString(name, result, base::size(result)); - hashed_name += "<!--frameHash"; - hashed_name += base::HexEncode(result, base::size(result)); - hashed_name += "-->"; - return hashed_name; -} - -std::string CalculateNewName(const FrameAdapter* frame, - base::StringPiece name) { - std::string hashed_name; - // By default, |name| is the browsing context name, which can be arbitrarily - // long. Since the generated name is part of history entries and FrameState, - // hash pathologically long names to avoid using a lot of memory. - if (name.size() > kMaxRequestedNameSize) { - hashed_name = CalculateFrameHash(name); - name = hashed_name; - } - return CalculateNameInternal(frame, name); -} - -} // namespace - -UniqueNameHelper::FrameAdapter::~FrameAdapter() {} - -UniqueNameHelper::Replacement::Replacement(std::string old_name, - std::string new_name) - : old_name(std::move(old_name)), new_name(std::move(new_name)) {} - -UniqueNameHelper::UniqueNameHelper(FrameAdapter* frame) : frame_(frame) {} - -UniqueNameHelper::~UniqueNameHelper() {} - -std::string UniqueNameHelper::GenerateNameForNewChildFrame( - const std::string& name, - bool is_created_by_script) const { - std::string unique_name_of_new_child; - - // The deterministic part of unique name should be included if - // 1. The new subframe is not created by script or - // 2. The new subframe is created by script, but we are still asked for the - // old, stable part for web tests (via - // |g_preserve_stable_unique_name_for_testing|). - if (!is_created_by_script || g_preserve_stable_unique_name_for_testing) { - PendingChildFrameAdapter adapter(frame_); - unique_name_of_new_child = CalculateNewName(&adapter, name); - } - - // The random part of unique name is only included for subframes created from - // scripts. - if (is_created_by_script) { - unique_name_of_new_child += kDynamicFrameMarker; - unique_name_of_new_child += base::UnguessableToken::Create().ToString(); - unique_name_of_new_child += "-->"; - } - - return unique_name_of_new_child; -} - -void UniqueNameHelper::UpdateName(const std::string& name) { - // Don't update the unique name if it should remain frozen. - if (frozen_) - return; - - // The unique name of the main frame is always the empty string. - if (frame_->IsMainFrame()) - return; - - // It's important to clear this before calculating a new name, as the - // calculation checks for collisions with existing unique names. - unique_name_.clear(); - unique_name_ = CalculateNewName(frame_, name); -} - -// |replacements| is used for two purposes: -// - when processing a non-frame path unique name that exceeds the max size, -// this collection records the original name and the hashed name. -// - when processing a frame path unique name, this collection is used to fix up -// ancestor frames in the frame path with an updated unique name. -// -std::string UniqueNameHelper::UpdateLegacyNameFromV24( - std::string legacy_name, - std::vector<Replacement>* replacements) { - if (IsNameWithFramePath(legacy_name)) { - // Frame paths can embed ancestor's unique names. Since the contract of this - // function is that names must be updated beginning from the root of the - // tree and go down from there, it is impossible for a frame path to contain - // a unique name (which needs a replacement) that has not already been seen - // and inserted into |replacements|. - for (const auto& replacement : *replacements) { - // Note: this find() call should only start searching from immediately - // after the most recent replacement, to guarantee each section of the - // name is only replaced once. But it was accidentally omitted from the - // initial version of the migration code. - size_t next_index = legacy_name.find(replacement.old_name); - if (next_index == std::string::npos) - continue; - legacy_name.replace(next_index, replacement.old_name.size(), - replacement.new_name); - } - return legacy_name; - } - - if (legacy_name.size() > kMaxRequestedNameSize) { - std::string hashed_name = CalculateFrameHash(legacy_name); - // Suppose 'aaa' and 'caaab' are unique names in the same tree. A - // hypothetical frame path might look like: - // <!--framePath //aaa/caaab/<!--frame0-->--> - // - // In this case, it's important to avoid matching 'aaa' against the - // substring in 'caaab'. To try to avoid this, the search and the - // replacement strings are wrapped in '/' to try to match the path delimiter - // in generated frame paths. - // - // However, nothing prevents a browsing context name from containing a - // literal '/', which could lead to an ambiguous parse. Consider the case - // where 'aaa', 'bbb', and 'aaa/bbb' are unique names in the same tree. The - // following frame path is ambiguous: - // <!--framePath //aaa/bbb/<!--frame0-->--> - // - // While it's possible to use the depth of the frame tree as a hint for - // disambiguating this, the number of ways to split up the frame path - // quickly becomes quite large. This code takes the simple approach and - // simply aims to implement a best effort update, accepting that there may - // be some names that are updated incorrectly. - std::string original_string = "/"; - original_string += legacy_name; - original_string += "/"; - std::string new_string = "/"; - new_string += hashed_name; - new_string += "/"; - replacements->emplace_back(std::move(original_string), - std::move(new_string)); - return hashed_name; - } - - return legacy_name; -} - -std::string UniqueNameHelper::CalculateLegacyNameForTesting( - const FrameAdapter* frame, - const std::string& name) { - return CalculateNameInternal(frame, name); -} - -// static -void UniqueNameHelper::PreserveStableUniqueNameForTesting() { - g_preserve_stable_unique_name_for_testing = true; -} - -std::string UniqueNameHelper::ExtractStableNameForTesting( - base::StringPiece unique_name) { - size_t i = unique_name.rfind(kDynamicFrameMarker); - if (i == std::string::npos) - return unique_name.as_string(); - return unique_name.substr(0, i).as_string(); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/unique_name/unique_name_helper_unittest.cc b/chromium/src/third_party/blink/common/unique_name/unique_name_helper_unittest.cc deleted file mode 100644 index b8f97de..0000000 --- a/chromium/src/third_party/blink/common/unique_name/unique_name_helper_unittest.cc +++ /dev/null
@@ -1,431 +0,0 @@ -// Copyright 2017 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 "third_party/blink/public/common/unique_name/unique_name_helper.h" - -#include <map> -#include <memory> -#include <vector> - -#include "base/auto_reset.h" -#include "base/optional.h" -#include "base/strings/nullable_string16.h" -#include "base/strings/string_piece.h" -#include "base/strings/utf_string_conversions.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/page_state/page_state_serialization.h" - -namespace blink { -namespace { - -// Requested names longer than this (that are unique) should be hashed. -constexpr size_t kMaxSize = 80; - -class TestFrameAdapter : public UniqueNameHelper::FrameAdapter { - public: - // |virtual_index_in_parent| is the virtual index of this frame in the - // parent's list of children, as unique name generation should see it. Note - // that this may differ from the actual index of this adapter in - // |parent_->children_|. - explicit TestFrameAdapter(TestFrameAdapter* parent, - int virtual_index_in_parent, - const std::string& requested_name) - : parent_(parent), - virtual_index_in_parent_(virtual_index_in_parent), - unique_name_helper_(this) { - if (parent_) - parent_->children_.push_back(this); - unique_name_helper_.UpdateName(requested_name); - CalculateLegacyName(requested_name); - } - - ~TestFrameAdapter() override { - if (parent_) { - parent_->children_.erase(std::find(parent_->children_.begin(), - parent_->children_.end(), this)); - } - } - - bool IsMainFrame() const override { return !parent_; } - - bool IsCandidateUnique(base::StringPiece name) const override { - auto* top = this; - while (top->parent_) - top = top->parent_; - return top->CheckUniqueness(name); - } - - int GetSiblingCount() const override { return virtual_index_in_parent_; } - - int GetChildCount() const override { - ADD_FAILURE() - << "GetChildCount() should not be triggered by unit test code!"; - return 0; - } - - std::vector<std::string> CollectAncestorNames( - BeginPoint begin_point, - bool (*should_stop)(base::StringPiece)) const override { - EXPECT_EQ(BeginPoint::kParentFrame, begin_point); - std::vector<std::string> result; - for (auto* adapter = parent_; adapter; adapter = adapter->parent_) { - result.push_back(adapter->GetNameForCurrentMode()); - if (should_stop(result.back())) - break; - } - return result; - } - - std::vector<int> GetFramePosition(BeginPoint begin_point) const override { - EXPECT_EQ(BeginPoint::kParentFrame, begin_point); - std::vector<int> result; - for (auto* adapter = this; adapter->parent_; adapter = adapter->parent_) - result.push_back(adapter->virtual_index_in_parent_); - return result; - } - - // Returns the new style name with a max size limit. - const std::string& GetUniqueName() const { - return unique_name_helper_.value(); - } - - // Calculate and return the legacy style name with no max size limit. - const std::string& GetLegacyName() const { return legacy_name_; } - - // Populate a tree of FrameState with legacy unique names. The order of - // FrameState children is guaranteed to match the order of TestFrameAdapter - // children. - void PopulateLegacyFrameState(ExplodedFrameState* frame_state) const { - frame_state->target = base::UTF8ToUTF16(GetLegacyName()); - frame_state->children.resize(children_.size()); - for (size_t i = 0; i < children_.size(); ++i) - children_[i]->PopulateLegacyFrameState(&frame_state->children[i]); - } - - // Recursively verify that FrameState and its children have matching unique - // names to this TestFrameAdapter. - void VerifyUpdatedFrameState(const ExplodedFrameState& frame_state) const { - EXPECT_EQ(GetUniqueName(), - base::UTF16ToUTF8(frame_state.target.value_or(base::string16()))); - - ASSERT_EQ(children_.size(), frame_state.children.size()); - for (size_t i = 0; i < children_.size(); ++i) { - children_[i]->VerifyUpdatedFrameState(frame_state.children[i]); - } - } - - void UpdateName(const std::string& new_name) { - unique_name_helper_.UpdateName(new_name); - } - - void Freeze() { unique_name_helper_.Freeze(); } - - private: - // Global toggle for the style of name to generate. Used to ensure that test - // code can consistently trigger the legacy generation path when needed. - static bool generate_legacy_name_; - - const std::string& GetNameForCurrentMode() const { - return generate_legacy_name_ ? GetLegacyName() : GetUniqueName(); - } - - void CalculateLegacyName(const std::string& requested_name) { - // Manually skip the main frame so its legacy name is always empty: this - // is needed in the test as that logic lives at a different layer in - // UniqueNameHelper. - if (!IsMainFrame()) { - base::AutoReset<bool> enable_legacy_mode(&generate_legacy_name_, true); - legacy_name_ = - UniqueNameHelper::CalculateLegacyNameForTesting(this, requested_name); - } - } - - bool CheckUniqueness(base::StringPiece name) const { - if (name == GetNameForCurrentMode()) - return false; - for (auto* child : children_) { - if (!child->CheckUniqueness(name)) - return false; - } - return true; - } - - TestFrameAdapter* const parent_; - std::vector<TestFrameAdapter*> children_; - const int virtual_index_in_parent_; - UniqueNameHelper unique_name_helper_; - std::string legacy_name_; -}; - -bool TestFrameAdapter::generate_legacy_name_ = false; - -// Test helper that verifies that legacy unique names in versions of PageState -// prior to 25 are correctly updated when deserialized. -void VerifyPageStateForTargetUpdate(const TestFrameAdapter& main_frame) { - ExplodedPageState in_state; - main_frame.PopulateLegacyFrameState(&in_state.top); - - // Version 24 is the last version with unlimited size unique names. - std::string encoded_state; - LegacyEncodePageStateForTesting(in_state, 24, &encoded_state); - - ExplodedPageState out_state; - DecodePageState(encoded_state, &out_state); - - main_frame.VerifyUpdatedFrameState(out_state.top); -} - -TEST(UniqueNameHelper, Basic) { - // Main frames should always have an empty unique name. - TestFrameAdapter main_frame(nullptr, -1, "my main frame"); - EXPECT_EQ("", main_frame.GetUniqueName()); - EXPECT_EQ("", main_frame.GetLegacyName()); - - // A child frame with a requested name that is unique should use the requested - // name. - TestFrameAdapter frame_0(&main_frame, 0, "child frame with name"); - EXPECT_EQ("child frame with name", frame_0.GetUniqueName()); - EXPECT_EQ("child frame with name", frame_0.GetLegacyName()); - - // A child frame with no requested name should receive a generated unique - // name. - TestFrameAdapter frame_7(&main_frame, 7, ""); - EXPECT_EQ("<!--framePath //<!--frame7-->-->", frame_7.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame7-->-->", frame_7.GetLegacyName()); - - // Naming collision should force a fallback to using a generated unique name. - TestFrameAdapter frame_2(&main_frame, 2, "child frame with name"); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetLegacyName()); - - // Index collision should also force a fallback to using a generated unique - // name. - TestFrameAdapter frame_2a(&main_frame, 2, ""); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/0-->", - frame_2a.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/0-->", - frame_2a.GetLegacyName()); - - // A child of a frame with a unique naming collision will incorporate the - // frame position marker as part of its frame path, though it will look a bit - // strange... - TestFrameAdapter frame_2a_5(&frame_2a, 5, ""); - EXPECT_EQ( - "<!--framePath //<!--frame2-->--><!--framePosition-2/0/<!--frame5-->-->", - frame_2a_5.GetUniqueName()); - EXPECT_EQ( - "<!--framePath //<!--frame2-->--><!--framePosition-2/0/<!--frame5-->-->", - frame_2a_5.GetLegacyName()); - - // Index and name collision should also force a fallback to using a generated - // unique name. - TestFrameAdapter frame_2b(&main_frame, 2, "child frame with name"); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/1-->", - frame_2b.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/1-->", - frame_2b.GetLegacyName()); - - VerifyPageStateForTargetUpdate(main_frame); -} - -TEST(UniqueNameHelper, Hashing) { - // Main frames should always have an empty unique name. - TestFrameAdapter main_frame(nullptr, -1, "my main frame"); - EXPECT_EQ("", main_frame.GetUniqueName()); - EXPECT_EQ("", main_frame.GetLegacyName()); - - // A child frame with a requested name that is unique but too long should fall - // back to hashing. - const std::string too_long_name(kMaxSize + 1, 'a'); - TestFrameAdapter frame_0(&main_frame, 0, too_long_name); - EXPECT_EQ( - "<!--" - "frameHash8C48280D57FB88F161ADF34D9F597D93CA32B7EDFCD23B2AFE64C3789B3F785" - "5-->", - frame_0.GetUniqueName()); - EXPECT_EQ(too_long_name, frame_0.GetLegacyName()); - - // A child frame with no requested name should receive a generated unique - // name. - TestFrameAdapter frame_7(&main_frame, 7, ""); - EXPECT_EQ("<!--framePath //<!--frame7-->-->", frame_7.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame7-->-->", frame_7.GetLegacyName()); - - // Verify that a requested name that's over the limit collides with the hashed - // version of its requested name. - TestFrameAdapter frame_2(&main_frame, 2, too_long_name); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetLegacyName()); - - // Index collision should also force a fallback to using a generated unique - // name. - TestFrameAdapter frame_2a(&main_frame, 2, ""); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/0-->", - frame_2a.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/0-->", - frame_2a.GetLegacyName()); - - // A child of a frame with a unique naming collision will incorporate the - // frame position marker as part of its frame path, though it will look a bit - // strange... - TestFrameAdapter frame_2a_5(&frame_2a, 5, ""); - EXPECT_EQ( - "<!--framePath //<!--frame2-->--><!--framePosition-2/0/<!--frame5-->-->", - frame_2a_5.GetUniqueName()); - EXPECT_EQ( - "<!--framePath //<!--frame2-->--><!--framePosition-2/0/<!--frame5-->-->", - frame_2a_5.GetLegacyName()); - - // Index and name collision should also force a fallback to using a generated - // unique name. - TestFrameAdapter frame_2b(&main_frame, 2, too_long_name); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/1-->", - frame_2b.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->--><!--framePosition-2/1-->", - frame_2b.GetLegacyName()); - - VerifyPageStateForTargetUpdate(main_frame); -} - -// Verify that basic frame path generation always includes the full path from -// the root. -TEST(UniqueNameHelper, BasicGeneratedFramePath) { - TestFrameAdapter main_frame(nullptr, -1, "my main frame"); - EXPECT_EQ("", main_frame.GetUniqueName()); - EXPECT_EQ("", main_frame.GetLegacyName()); - - TestFrameAdapter frame_2(&main_frame, 2, ""); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->-->", frame_2.GetLegacyName()); - - TestFrameAdapter frame_2_3(&frame_2, 3, "named grandchild"); - EXPECT_EQ("named grandchild", frame_2_3.GetUniqueName()); - EXPECT_EQ("named grandchild", frame_2_3.GetLegacyName()); - - // Even though the parent frame has a unique name, the frame path should - // include the full path from the root. - TestFrameAdapter frame_2_3_5(&frame_2_3, 5, ""); - EXPECT_EQ("<!--framePath //<!--frame2-->/named grandchild/<!--frame5-->-->", - frame_2_3_5.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame2-->/named grandchild/<!--frame5-->-->", - frame_2_3_5.GetLegacyName()); - - VerifyPageStateForTargetUpdate(main_frame); -} - -TEST(UniqueNameHelper, GeneratedFramePathHashing) { - TestFrameAdapter main_frame(nullptr, -1, "my main frame"); - EXPECT_EQ("", main_frame.GetUniqueName()); - EXPECT_EQ("", main_frame.GetLegacyName()); - - TestFrameAdapter frame_0(&main_frame, 0, ""); - EXPECT_EQ("<!--framePath //<!--frame0-->-->", frame_0.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame0-->-->", frame_0.GetLegacyName()); - - // At the limit, so the hashing fallback should not be triggered. - const std::string just_fits_name(kMaxSize, 'a'); - TestFrameAdapter frame_0_0(&frame_0, 0, just_fits_name); - EXPECT_EQ(just_fits_name, frame_0_0.GetUniqueName()); - EXPECT_EQ(just_fits_name, frame_0_0.GetLegacyName()); - - // But anything over should trigger hashing. - const std::string too_long_name(kMaxSize + 1, 'a'); - TestFrameAdapter frame_0_1(&frame_0, 1, too_long_name); - EXPECT_EQ( - "<!--" - "frameHash8C48280D57FB88F161ADF34D9F597D93CA32B7EDFCD23B2AFE64C3789B3F785" - "5-->", - frame_0_1.GetUniqueName()); - EXPECT_EQ(too_long_name, frame_0_1.GetLegacyName()); - - // A child frame should incorporate the parent's hashed requested name into - // its frame path. - TestFrameAdapter frame_0_1_0(&frame_0_1, 0, ""); - EXPECT_EQ( - "<!--framePath " - "//<!--frame0-->/" - "<!--" - "frameHash8C48280D57FB88F161ADF34D9F597D93CA32B7EDFCD23B2AFE64C3789B3F785" - "5-->/<!--frame0-->-->", - frame_0_1_0.GetUniqueName()); - EXPECT_EQ( - "<!--framePath " - "//<!--frame0-->/" + - too_long_name + "/<!--frame0-->-->", - frame_0_1_0.GetLegacyName()); - - // Make sure that name replacement during legacy name updates don't - // accidentally match on substrings: the name here is intentionally chosen so - // that too_long_name is a substring. - const std::string too_long_name2(kMaxSize + 10, 'a'); - TestFrameAdapter frame_0_2(&frame_0, 2, too_long_name2); - EXPECT_EQ( - "<!--" - "frameHash6B2EC79170F50EA57B886DC81A2CF78721C651A002C8365A524019A7ED5A8A4" - "0-->", - frame_0_2.GetUniqueName()); - EXPECT_EQ(too_long_name2, frame_0_2.GetLegacyName()); - - // Make sure that legacy name updates correctly handle multiple replacements. - // An unnamed frame is used as the deepest descendant to ensure the requested - // names from ancestors appear in the frame path. Begin with a named - // grandparent: - const std::string too_long_name3(kMaxSize * 2, 'b'); - TestFrameAdapter frame_0_1_1(&frame_0_1, 1, too_long_name3); - EXPECT_EQ( - "<!--" - "frameHash3A0B065A4255F95EF6E206B11004B8805FB631A68F468A72CE26F7592C88C27" - "A-->", - frame_0_1_1.GetUniqueName()); - EXPECT_EQ(too_long_name3, frame_0_1_1.GetLegacyName()); - - // And a named parent: - const std::string too_long_name4(kMaxSize * 3, 'c'); - TestFrameAdapter frame_0_1_1_0(&frame_0_1_1, 0, too_long_name4); - EXPECT_EQ( - "<!--" - "frameHashE00D028A784E645656638F4D461B81E779E5225CA9824C8E09664956CF4DAE3" - "1-->", - frame_0_1_1_0.GetUniqueName()); - EXPECT_EQ(too_long_name4, frame_0_1_1_0.GetLegacyName()); - - // And finally an unnamed child to trigger fallback to the frame path: - TestFrameAdapter frame_0_1_1_0_0(&frame_0_1_1_0, 0, ""); - EXPECT_EQ( - "<!--framePath " - "//<!--frame0-->/" - "<!--" - "frameHash8C48280D57FB88F161ADF34D9F597D93CA32B7EDFCD23B2AFE64C3789B3F785" - "5-->/" - "<!--" - "frameHash3A0B065A4255F95EF6E206B11004B8805FB631A68F468A72CE26F7592C88C27" - "A-->/" - "<!--" - "frameHashE00D028A784E645656638F4D461B81E779E5225CA9824C8E09664956CF4DAE3" - "1-->/<!--frame0-->-->", - frame_0_1_1_0_0.GetUniqueName()); - EXPECT_EQ("<!--framePath //<!--frame0-->/" + too_long_name + "/" + - too_long_name3 + "/" + too_long_name4 + "/<!--frame0-->-->", - frame_0_1_1_0_0.GetLegacyName()); - - VerifyPageStateForTargetUpdate(main_frame); -} - -TEST(UniqueNameHelper, UpdateName) { - TestFrameAdapter main_frame(nullptr, -1, "my main frame"); - EXPECT_EQ("", main_frame.GetUniqueName()); - - TestFrameAdapter frame_0(&main_frame, 0, "name1"); - EXPECT_EQ("name1", frame_0.GetUniqueName()); - - frame_0.UpdateName("name2"); - EXPECT_EQ("name2", frame_0.GetUniqueName()); - - frame_0.Freeze(); - frame_0.UpdateName("name3"); - EXPECT_EQ("name2", frame_0.GetUniqueName()); // No change expected. -} - -} // namespace -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/user_agent/OWNERS b/chromium/src/third_party/blink/common/user_agent/OWNERS deleted file mode 100644 index 83a084b..0000000 --- a/chromium/src/third_party/blink/common/user_agent/OWNERS +++ /dev/null
@@ -1,7 +0,0 @@ -mkwst@chromium.org - -per-file *.typemap=set noparent -per-file *.typemap=file://ipc/SECURITY_OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/user_agent/user_agent_metadata.cc b/chromium/src/third_party/blink/common/user_agent/user_agent_metadata.cc deleted file mode 100644 index e6477dc..0000000 --- a/chromium/src/third_party/blink/common/user_agent/user_agent_metadata.cc +++ /dev/null
@@ -1,125 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/user_agent/user_agent_metadata.h" - -#include "base/pickle.h" -#include "net/http/structured_headers.h" - -namespace blink { - -namespace { -constexpr uint32_t kVersion = 2u; -} // namespace - -UserAgentBrandVersion::UserAgentBrandVersion( - const std::string& ua_brand, - const std::string& ua_major_version) { - brand = ua_brand; - major_version = ua_major_version; -} - -const std::string UserAgentMetadata::SerializeBrandVersionList() { - net::structured_headers::List brand_version_header = - net::structured_headers::List(); - for (const UserAgentBrandVersion& brand_version : brand_version_list) { - if (brand_version.major_version.empty()) { - brand_version_header.push_back( - net::structured_headers::ParameterizedMember( - net::structured_headers::Item(brand_version.brand), {})); - } else { - brand_version_header.push_back( - net::structured_headers::ParameterizedMember( - net::structured_headers::Item(brand_version.brand), - {std::make_pair("v", net::structured_headers::Item( - brand_version.major_version))})); - } - } - - return net::structured_headers::SerializeList(brand_version_header) - .value_or(""); -} - -// static -base::Optional<std::string> UserAgentMetadata::Marshal( - const base::Optional<UserAgentMetadata>& in) { - if (!in) - return base::nullopt; - base::Pickle out; - out.WriteUInt32(kVersion); - - out.WriteUInt32(in->brand_version_list.size()); - for (const auto& brand_version : in->brand_version_list) { - out.WriteString(brand_version.brand); - out.WriteString(brand_version.major_version); - } - - out.WriteString(in->full_version); - out.WriteString(in->platform); - out.WriteString(in->platform_version); - out.WriteString(in->architecture); - out.WriteString(in->model); - out.WriteBool(in->mobile); - return std::string(reinterpret_cast<const char*>(out.data()), out.size()); -} - -// static -base::Optional<UserAgentMetadata> UserAgentMetadata::Demarshal( - const base::Optional<std::string>& encoded) { - if (!encoded) - return base::nullopt; - - base::Pickle pickle(encoded->data(), encoded->size()); - base::PickleIterator in(pickle); - - uint32_t version; - UserAgentMetadata out; - if (!in.ReadUInt32(&version) || version != kVersion) - return base::nullopt; - - uint32_t brand_version_size; - if (!in.ReadUInt32(&brand_version_size)) - return base::nullopt; - for (uint32_t i = 0; i < brand_version_size; i++) { - UserAgentBrandVersion brand_version; - if (!in.ReadString(&brand_version.brand)) - return base::nullopt; - if (!in.ReadString(&brand_version.major_version)) - return base::nullopt; - out.brand_version_list.push_back(std::move(brand_version)); - } - - if (!in.ReadString(&out.full_version)) - return base::nullopt; - if (!in.ReadString(&out.platform)) - return base::nullopt; - if (!in.ReadString(&out.platform_version)) - return base::nullopt; - if (!in.ReadString(&out.architecture)) - return base::nullopt; - if (!in.ReadString(&out.model)) - return base::nullopt; - if (!in.ReadBool(&out.mobile)) - return base::nullopt; - return base::make_optional(std::move(out)); -} - -bool UserAgentBrandVersion::operator==(const UserAgentBrandVersion& a) const { - return a.brand == brand && a.major_version == major_version; -} - -bool operator==(const UserAgentMetadata& a, const UserAgentMetadata& b) { - return a.brand_version_list == b.brand_version_list && - a.full_version == b.full_version && a.platform == b.platform && - a.platform_version == b.platform_version && - a.architecture == b.architecture && a.model == b.model && - a.mobile == b.mobile; -} - -bool operator==(const UserAgentOverride& a, const UserAgentOverride& b) { - return a.ua_string_override == b.ua_string_override && - a.ua_metadata_override == b.ua_metadata_override; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/user_agent/user_agent_metadata_unittest.cc b/chromium/src/third_party/blink/common/user_agent/user_agent_metadata_unittest.cc deleted file mode 100644 index b450c0d..0000000 --- a/chromium/src/third_party/blink/common/user_agent/user_agent_metadata_unittest.cc +++ /dev/null
@@ -1,62 +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 "third_party/blink/public/common/user_agent/user_agent_metadata.h" - -#include "base/optional.h" -#include "mojo/public/cpp/test_support/test_utils.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/common/user_agent/user_agent_mojom_traits.h" -#include "third_party/blink/public/mojom/user_agent/user_agent_metadata.mojom.h" - -namespace blink { - -namespace { - -blink::UserAgentMetadata MakeToEncode() { - blink::UserAgentMetadata to_encode; - to_encode.brand_version_list.emplace_back("a", "3"); - to_encode.brand_version_list.emplace_back("b", "5"); - to_encode.full_version = "3.14"; - to_encode.platform = "TR-DOS"; - to_encode.platform_version = "5.03"; - to_encode.architecture = "Z80"; - to_encode.model = "unofficial"; - to_encode.mobile = false; - return to_encode; -} - -} // namespace - -TEST(UserAgentMetaDataTest, Boundary) { - EXPECT_EQ(base::nullopt, UserAgentMetadata::Marshal(base::nullopt)); - EXPECT_EQ(base::nullopt, UserAgentMetadata::Demarshal(base::nullopt)); - EXPECT_EQ(base::nullopt, - UserAgentMetadata::Demarshal(std::string("nonsense"))); -} - -TEST(UserAgentMetaDataTest, Basic) { - blink::UserAgentMetadata to_encode = MakeToEncode(); - EXPECT_EQ(to_encode, UserAgentMetadata::Demarshal( - UserAgentMetadata::Marshal(to_encode))); - - to_encode.mobile = true; - EXPECT_EQ(to_encode, UserAgentMetadata::Demarshal( - UserAgentMetadata::Marshal(to_encode))); -} - -TEST(UserAgentMetaDataTest, MojoTraits) { - blink::UserAgentMetadata to_encode = MakeToEncode(); - blink::UserAgentMetadata copied; - mojo::test::SerializeAndDeserialize<mojom::UserAgentMetadata>(to_encode, - copied); - EXPECT_EQ(to_encode, copied); - - to_encode.mobile = true; - mojo::test::SerializeAndDeserialize<mojom::UserAgentMetadata>(to_encode, - copied); - EXPECT_EQ(to_encode, copied); -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/web_package/web_package_request_matcher.cc b/chromium/src/third_party/blink/common/web_package/web_package_request_matcher.cc deleted file mode 100644 index df88fac..0000000 --- a/chromium/src/third_party/blink/common/web_package/web_package_request_matcher.cc +++ /dev/null
@@ -1,658 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/web_package/web_package_request_matcher.h" - -#include <algorithm> -#include <limits> -#include <memory> -#include <utility> - -#include "base/containers/span.h" -#include "base/numerics/checked_math.h" -#include "base/optional.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_util.h" -#include "net/base/mime_util.h" -#include "net/http/http_request_headers.h" -#include "net/http/http_util.h" -#include "net/http/structured_headers.h" -#include "third_party/blink/public/common/web_package/signed_exchange_consts.h" - -namespace blink { - -namespace { - -constexpr char kIdentity[] = "identity"; - -class ContentNegotiationAlgorithm { - public: - virtual ~ContentNegotiationAlgorithm() = default; - // Returns items from |available_values| that satisfy the request, in - // preference order. Each subclass should implement the algorithm defined by - // content negotiation mechanism. - virtual std::vector<std::string> run( - base::span<const std::string> available_values, - base::Optional<std::string> request_header_value) = 0; - - protected: - struct WeightedValue { - std::string value; - double weight; - - bool operator<(const WeightedValue& other) const { - return weight > other.weight; // Descending order - } - }; - - // Parses an Accept (Section 5.3.2 of [RFC7231]), an Accept-Encoding (Section - // 5.3.3 of [RFC7231]), or an Accept-Language (Section 5.3.5 of [RFC7231]). - // Returns items sorted by descending order of their weight, omitting items - // with weight of 0. - std::vector<WeightedValue> ParseRequestHeaderValue( - const base::Optional<std::string>& request_header_value) { - std::vector<WeightedValue> items; - if (!request_header_value) - return items; - - // Value can start with '*', so it cannot be parsed by - // net::structured_headers::ParseParameterisedList. - net::HttpUtil::ValuesIterator values(request_header_value->begin(), - request_header_value->end(), ','); - while (values.GetNext()) { - net::HttpUtil::NameValuePairsIterator name_value_pairs( - values.value_begin(), values.value_end(), ';', - net::HttpUtil::NameValuePairsIterator::Values::NOT_REQUIRED, - net::HttpUtil::NameValuePairsIterator::Quotes::STRICT_QUOTES); - if (!name_value_pairs.GetNext()) - continue; - WeightedValue item; - item.value = name_value_pairs.name(); - item.weight = 1.0; - while (name_value_pairs.GetNext()) { - if (base::LowerCaseEqualsASCII(name_value_pairs.name_piece(), "q")) { - if (auto value = GetQValue(name_value_pairs.value())) - item.weight = *value; - } else { - // Parameters except for "q" are included in the output. - item.value += - ';' + name_value_pairs.name() + '=' + name_value_pairs.value(); - } - } - if (item.weight != 0.0) - items.push_back(std::move(item)); - } - std::stable_sort(items.begin(), items.end()); - return items; - } - - private: - base::Optional<double> GetQValue(const std::string& str) { - // TODO(ksakamoto): Validate the syntax per Section 5.3.1 of [RFC7231], - // by factoring out the logic in HttpUtil::ParseAcceptEncoding(). - double val; - if (!base::StringToDouble(str, &val)) - return base::nullopt; - if (val < 0.0 || val > 1.0) - return base::nullopt; - return val; - } -}; - -// https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#content-type -class ContentTypeNegotiation final : public ContentNegotiationAlgorithm { - std::vector<std::string> run( - base::span<const std::string> available_values, - base::Optional<std::string> request_header_value) override { - // Step 1. Let preferred-available be an empty list. [spec text] - std::vector<std::string> preferred_available; - - // Step 2. Let preferred-types be a list of the types in the request-value - // (or the empty list if request-value is null), ordered by their weight, - // highest to lowest, as per Section 5.3.2 of [RFC7231] (omitting any coding - // with a weight of 0). If a type lacks an explicit weight, an - // implementation MAY assign one. - std::vector<WeightedValue> preferred_types = - ParseRequestHeaderValue(request_header_value); - - // Step 3. For each preferred-type in preferred-types: [spec text] - for (const WeightedValue& preferred_type : preferred_types) { - // 3.1. If any member of available-values matches preferred-type, using - // the media-range matching mechanism specified in Section 5.3.2 of - // [RFC7231] (which is case-insensitive), append those members of - // available-values to preferred-available (preserving the precedence - // order implied by the media ranges' specificity). - for (const std::string& available : available_values) { - if (net::MatchesMimeType(preferred_type.value, available)) - preferred_available.push_back(available); - } - } - - // Step 4. If preferred-available is empty, append the first member of - // available-values to preferred-available. This makes the first - // available-value the default when none of the client's preferences are - // available. [spec text] - if (preferred_available.empty() && !available_values.empty()) - preferred_available.push_back(available_values[0]); - - // Step 5. Return preferred-available. [spec text] - return preferred_available; - } -}; - -// https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#content-encoding -class AcceptEncodingNegotiation final : public ContentNegotiationAlgorithm { - std::vector<std::string> run( - base::span<const std::string> available_values, - base::Optional<std::string> request_header_value) override { - // Step 1. Let preferred-available be an empty list. [spec text] - std::vector<std::string> preferred_available; - - // Step 2. Let preferred-codings be a list of the codings in the - // request-value (or the empty list if request-value is null), ordered by - // their weight, highest to lowest, as per Section 5.3.1 of [RFC7231] - // (omitting any coding with a weight of 0). If a coding lacks an explicit - // weight, an implementation MAY assign one. [spec text] - std::vector<WeightedValue> preferred_codings = - ParseRequestHeaderValue(request_header_value); - - // Step 3. If "identity" is not a member of preferred-codings, append - // "identity". [spec text] - if (!std::any_of( - preferred_codings.begin(), preferred_codings.end(), - [](const WeightedValue& p) { return p.value == kIdentity; })) { - preferred_codings.push_back({kIdentity, 0.0}); - } - - // Step 4. Append "identity" to available-values. [spec text] - // Instead, we explicitly check "identity" in Step 5.1 below. - - // Step 5. For each preferred-coding in preferred-codings: [spec text] - for (const WeightedValue& preferred_coding : preferred_codings) { - // Step 5.1. If there is a case-insensitive, character-for-character match - // for preferred-coding in available-values, append that member of - // available-values to preferred-available. [spec text] - if (preferred_coding.value == kIdentity) { - preferred_available.push_back(kIdentity); - continue; - } - for (const std::string& available : available_values) { - if (base::EqualsCaseInsensitiveASCII(preferred_coding.value, - available)) { - preferred_available.push_back(available); - break; - } - } - } - - // Step 6. Return preferred-available. [spec text] - return preferred_available; - } -}; - -// https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#content-language -class AcceptLanguageNegotiation final : public ContentNegotiationAlgorithm { - public: - std::vector<std::string> run( - base::span<const std::string> available_values, - base::Optional<std::string> request_header_value) override { - // Step 1. Let preferred-available be an empty list. [spec text] - std::vector<std::string> preferred_available; - - // Step 2. Let preferred-langs be a list of the language-ranges in the - // request-value (or the empty list if request-value is null), ordered by - // their weight, highest to lowest, as per Section 5.3.1 of [RFC7231] - // (omitting any language-range with a weight of 0). If a language-range - // lacks a weight, an implementation MAY assign one. [spec text] - std::vector<WeightedValue> preferred_langs = - ParseRequestHeaderValue(request_header_value); - - // Step 3. For each preferred-lang in preferred-langs: [spec text] - for (const WeightedValue& preferred_lang : preferred_langs) { - // Step 3.1. If any member of available-values matches preferred-lang, - // using either the Basic or Extended Filtering scheme defined in - // Section 3.3 of [RFC4647], append those members of available-values to - // preferred-available (preserving their order). [spec text] - AppendMatchedLanguages(available_values, preferred_lang.value, - &preferred_available); - } - - // Step 4. If preferred-available is empty, append the first member of - // available-values to preferred-available. This makes the first - // available-value the default when none of the client's preferences are - // available. [spec text] - if (preferred_available.empty() && !available_values.empty()) - preferred_available.push_back(available_values[0]); - - // Step 5. Return preferred-available. [spec text] - return preferred_available; - } - - private: - // Performs the Basic Filtering (Section 3.3.1 of [RFC4647]). - void AppendMatchedLanguages(base::span<const std::string> available_values, - const std::string& preferred_lang, - std::vector<std::string>* output) { - if (preferred_lang == "*") { - std::copy(available_values.begin(), available_values.end(), - std::back_inserter(*output)); - return; - } - - const std::string prefix = preferred_lang + '-'; - for (const std::string& available : available_values) { - if (base::EqualsCaseInsensitiveASCII(preferred_lang, available) || - base::StartsWith(available, prefix, - base::CompareCase::INSENSITIVE_ASCII)) { - output->push_back(available); - } - } - } -}; - -std::unique_ptr<ContentNegotiationAlgorithm> GetContentNegotiationAlgorithm( - const std::string& field_name) { - if (field_name == "accept") - return std::make_unique<ContentTypeNegotiation>(); - if (field_name == "accept-encoding") - return std::make_unique<AcceptEncodingNegotiation>(); - if (field_name == "accept-language") - return std::make_unique<AcceptLanguageNegotiation>(); - return nullptr; -} - -// https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variants -base::Optional<std::vector<std::pair<std::string, std::vector<std::string>>>> -ParseVariants(const base::StringPiece& str) { - // Compatibility note: Draft 4 of Variants - // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variants) - // uses a custom format for the Variants-04 header, which this method attempts - // to parse as a Structured Headers list-of-lists. This means that quoted - // string values as well as unquoted tokens will be accepted by this parser, - // which is strictly more lenient than the actual draft spec. Draft 5 - // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-05.html#variants, - // which we don't actually support yet) uses a Structured-Headers-Draft-9 - // list-of-lists syntax for the Variants-05 header, and explicitly allows both - // strings and tokens. - // TODO(iclelland): As of October 2019, the latest editor's draft of Variants - // (https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#variants) - // specifies a Structured-Headers-Draft-13 dictionary for the Variants header. - // Once the specs are updated, also parse the new Variants dictionary header - // as well. The same data structure should be returned. - base::Optional<net::structured_headers::ListOfLists> parsed = - net::structured_headers::ParseListOfLists(str); - if (!parsed) - return base::nullopt; - std::vector<std::pair<std::string, std::vector<std::string>>> variants; - // Each inner-list in the Variants header field value is parsed into a - // variant-axis. The first list-member of the inner-list is interpreted as - // the field-name, and the remaining list-members are the available-values. - // [spec text] - for (const auto& inner_list : *parsed) { - auto it = inner_list.begin(); - // Any list-member that is a token is interpreted as a string containing the - // same characters. - // [spec text] - if (!it->is_string() && !it->is_token()) - return base::nullopt; - std::string field_name = it->GetString(); - std::vector<std::string> available_values; - available_values.reserve(inner_list.size() - 1); - for (++it; it != inner_list.end(); ++it) { - // Any list-member that is a token is interpreted as a string containing - // the same characters. - // [spec text] - if (!it->is_string() && !it->is_token()) - return base::nullopt; - available_values.push_back(it->GetString()); - } - variants.push_back(std::make_pair(field_name, available_values)); - } - return variants; -} - -// https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variant-key -base::Optional<std::vector<std::vector<std::string>>> ParseVariantKey( - const base::StringPiece& str, - size_t num_variant_axes) { - // Compatibility note: Draft 4 of Variants - // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-04.html#variant-key) - // uses a custom format for the Variant-Key-04 header, which this method - // attempts to parse as a Structured Headers list-of-lists. This means that - // quoted string values as well as unquoted tokens will be accepted by this - // parser, which is strictly more lenient than the actual draft spec. Draft 5 - // (https://tools.ietf.org/id/draft-ietf-httpbis-variants-05.html#variant-key, - // which we don't actually support yet) uses a Structured-Headers-Draft-9 - // list-of-lists syntax for the Variant-Key-05 header, and explicitly allows - // both strings and tokens. - // TODO(iclelland): Once the specs are updated, also parse the new - // Variants-Key header as well. The same data structure should be returned. - base::Optional<net::structured_headers::ListOfLists> parsed = - net::structured_headers::ParseListOfLists(str); - if (!parsed) - return base::nullopt; - std::vector<std::vector<std::string>> variant_keys; - variant_keys.reserve(parsed->size()); - // Each inner-list MUST have the same number of list-members as there are - // variant-axes in the representation's Variants header field. Additionally, - // every element of each inner-list must be a string. If not, the client MUST - // treat the representation as having no Variant-Key header field. - // [spec text] - for (const auto& inner_list : *parsed) { - std::vector<std::string> list_members; - list_members.reserve(inner_list.size()); - if (inner_list.size() != num_variant_axes) - return base::nullopt; - for (const net::structured_headers::Item& item : inner_list) { - if (!item.is_string() && !item.is_token()) - return base::nullopt; - list_members.push_back(item.GetString()); - } - variant_keys.push_back(list_members); - } - return variant_keys; -} - -// Returns the index of matching entry in Possible Keys [1] which is the cross -// product of |sorted_variants|. If there is no matching entry returns nullopt. -// Example: -// sorted_variants: [["image/webp","image/jpg"], ["en", "fr", "ja"]] -// variant_key: ["image/jpg", "fr"] -// Possible Keys list for this sorted_variants: -// [["image/webp", "en"], ["image/webp", "fr"], ["image/webp", "ja"], -// ["image/jpg", "en"], ["image/jpg", "fr"], ["image/jpg", "ja"]] -// Result: 4 -// [1] https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#find -base::Optional<size_t> GetPossibleKeysIndex( - const std::vector<std::vector<std::string>>& sorted_variants, - const std::vector<std::string>& variant_key) { - DCHECK_EQ(variant_key.size(), sorted_variants.size()); - size_t index = 0; - for (size_t i = 0; i < sorted_variants.size(); ++i) { - auto found = std::find(sorted_variants[i].begin(), sorted_variants[i].end(), - variant_key[i]); - if (found == sorted_variants[i].end()) - return base::nullopt; - - index = index * sorted_variants[i].size() + - (found - sorted_variants[i].begin()); - } - return index; -} - -} // namespace - -WebPackageRequestMatcher::WebPackageRequestMatcher( - const net::HttpRequestHeaders& request_headers, - const std::string& accept_langs) - : request_headers_(request_headers) { - request_headers_.SetHeaderIfMissing( - net::HttpRequestHeaders::kAcceptLanguage, - net::HttpUtil::GenerateAcceptLanguageHeader( - net::HttpUtil::ExpandLanguageList(accept_langs))); - // We accept only "mi-sha256-03" as the inner content encoding. - // TODO(ksakamoto): Revisit once - // https://github.com/WICG/webpackage/issues/390 is settled. - request_headers_.SetHeader(net::HttpRequestHeaders::kAcceptEncoding, - "mi-sha256-03"); -} - -bool WebPackageRequestMatcher::MatchRequest( - const HeaderMap& response_headers) const { - return MatchRequest(request_headers_, response_headers); -} - -std::vector<std::string>::const_iterator -WebPackageRequestMatcher::FindBestMatchingVariantKey( - const std::string& variants, - const std::vector<std::string>& variant_key_list) const { - return FindBestMatchingVariantKey(request_headers_, variants, - variant_key_list); -} - -base::Optional<size_t> WebPackageRequestMatcher::FindBestMatchingIndex( - const std::string& variants) const { - return FindBestMatchingIndex(request_headers_, variants); -} - -// Implements "Cache Behaviour" [1] when "stored-responses" is a singleton list -// containing a response that has "Variants" header whose value is |variants|. -// [1] https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#cache -std::vector<std::vector<std::string>> WebPackageRequestMatcher::CacheBehavior( - const std::vector<std::pair<std::string, std::vector<std::string>>>& - variants, - const net::HttpRequestHeaders& request_headers) { - // Step 1. If stored-responses is empty, return an empty list. [spec text] - // The size of stored-responses is always 1. - - // Step 2. Order stored-responses by the "Date" header field, most recent to - // least recent. [spec text] - // This is no-op because stored-responses is a single-element list. - - // Step 3. Let sorted-variants be an empty list. [spec text] - std::vector<std::vector<std::string>> sorted_variants; - - // Step 4. If the freshest member of stored-responses (as per [RFC7234], - // Section 4.2) has one or more "Variants" header field(s) that successfully - // parse according to Section 2: [spec text] - - // Step 4.1. Select one member of stored-responses with a "Variants" header - // field-value(s) that successfully parses according to Section 2 and let - // variants-header be this parsed value. This SHOULD be the most recent - // response, but MAY be from an older one as long as it is still fresh. - // [spec text] - // |variants| is the parsed "Variants" header field value. - - // Step 4.2. For each variant-axis in variants-header: [spec text] - for (const auto& variant_axis : variants) { - // Step 4.2.1. If variant-axis' field-name corresponds to the request header - // field identified by a content negotiation mechanism that the - // implementation supports: [spec text] - std::string field_name = base::ToLowerASCII(variant_axis.first); - std::unique_ptr<ContentNegotiationAlgorithm> negotiation_algorithm = - GetContentNegotiationAlgorithm(field_name); - if (negotiation_algorithm) { - // Step 4.2.1.1. Let request-value be the field-value associated with - // field-name in incoming-request (after being combined as allowed by - // Section 3.2.2 of [RFC7230]), or null if field-name is not in - // incoming-request. [spec text] - base::Optional<std::string> request_value; - std::string header_value; - if (request_headers.GetHeader(field_name, &header_value)) - request_value = header_value; - // Step 4.2.1.2. Let sorted-values be the result of running the algorithm - // defined by the content negotiation mechanism with request-value and - // variant-axis' available-values. [spec text] - std::vector<std::string> sorted_values = - negotiation_algorithm->run(variant_axis.second, request_value); - - // Step 4.2.1.3. Append sorted-values to sorted-variants. [spec text] - sorted_variants.push_back(std::move(sorted_values)); - } - } - // At this point, sorted-variants will be a list of lists, each member of the - // top-level list corresponding to a variant-axis in the Variants header - // field-value, containing zero or more items indicating available-values - // that are acceptable to the client, in order of preference, greatest to - // least. [spec text] - - // Step 5. Return result of running Compute Possible Keys (Section 4.1) on - // sorted-variants, an empty list and an empty list. [spec text] - // Instead of computing the cross product of sorted_variants, this - // implementation just returns sorted_variants. - return sorted_variants; -} - -// Implements step 3- of -// https://wicg.github.io/webpackage/loading.html#request-matching -bool WebPackageRequestMatcher::MatchRequest( - const net::HttpRequestHeaders& request_headers, - const HeaderMap& response_headers) { - auto variants_found = - response_headers.find(blink::kSignedExchangeVariantsHeader); - auto variant_key_found = - response_headers.find(blink::kSignedExchangeVariantKeyHeader); - - // Step 3. If storedExchange's response's header list contains: - // - Neither a `Variants` nor a `Variant-Key` header - // Return "match". [spec text] - if (variants_found == response_headers.end() && - variant_key_found == response_headers.end()) { - return true; - } - // - A `Variant-Key` header but no `Variants` header - // Return "mismatch". [spec text] - if (variants_found == response_headers.end()) - return false; - // - A `Variants` header but no `Variant-Key` header - // Return "mismatch". [spec text] - if (variant_key_found == response_headers.end()) - return false; - // - Both a `Variants` and a `Variant-Key` header - // Proceed to the following steps. [spec text] - - // Step 4. If getting `Variants` from storedExchange's response's header list - // returns a value that fails to parse according to the instructions for the - // Variants Header Field, return "mismatch". [spec text] - auto parsed_variants = ParseVariants(variants_found->second); - if (!parsed_variants) - return false; - - // Step 5. Let acceptableVariantKeys be the result of running the Variants - // Cache Behavior on an incoming-request of browserRequest and - // stored-responses of a list containing storedExchange's response. - // [spec text] - std::vector<std::vector<std::string>> sorted_variants = - CacheBehavior(*parsed_variants, request_headers); - - // This happens when `Variant` has unknown field names. In such cases, - // this algorithm never returns "match", so we do an early return. - if (sorted_variants.size() != parsed_variants->size()) - return false; - - // Step 6. Let variantKeys be the result of getting `Variant-Key` from - // storedExchange's response's header list, and parsing it into a list of - // lists as described in Variant-Key Header Field. [spec text] - auto parsed_variant_key = - ParseVariantKey(variant_key_found->second, parsed_variants->size()); - - // Step 7. If parsing variantKeys failed, return "mismatch". [spec text] - if (!parsed_variant_key) - return false; - - // Step 8. If the intersection of acceptableVariantKeys and variantKeys is - // empty, return "mismatch". [spec text] - // Step 9. Return "match". [spec text] - - // AcceptableVariantKeys is the cross product of sorted_variants. Instead of - // computing AcceptableVariantKeys and taking the intersection of it and - // variantKeys, we check its equivalent, i.e.: Return "match" if there is a vk - // in variantKeys such that for all i, vk[i] is in sorted_variants[i]. - for (const std::vector<std::string>& vk : *parsed_variant_key) { - DCHECK_EQ(vk.size(), sorted_variants.size()); - size_t i = 0; - for (; i < sorted_variants.size(); ++i) { - auto found = std::find(sorted_variants[i].begin(), - sorted_variants[i].end(), vk[i]); - if (found == sorted_variants[i].end()) - break; - } - if (i == sorted_variants.size()) - return true; - } - // Otherwise return "mismatch". - return false; -} - -// static -std::vector<std::string>::const_iterator -WebPackageRequestMatcher::FindBestMatchingVariantKey( - const net::HttpRequestHeaders& request_headers, - const std::string& variants, - const std::vector<std::string>& variant_keys_list) { - auto parsed_variants = ParseVariants(variants); - if (!parsed_variants) - return variant_keys_list.end(); - - std::vector<std::vector<std::string>> sorted_variants = - CacheBehavior(*parsed_variants, request_headers); - // This happens when `Variant` has unknown field names. In such cases, - // this algorithm never returns "match", so we do an early return. - if (sorted_variants.size() != parsed_variants->size()) - return variant_keys_list.end(); - - // Check that the combination count of Possible Keys doesn't overflow. - // Currently we have only three ContentNegotiationAlgorithms, so it is - // impossible to overflow. But we check to protect for future extension. - size_t possible_keys_count = 1; - for (const auto& key : sorted_variants) { - if (!base::CheckMul(possible_keys_count, key.size()) - .AssignIfValid(&possible_keys_count)) { - return variant_keys_list.end(); - } - } - - size_t minimum_index = std::numeric_limits<size_t>::max(); - auto found_variant_key = variant_keys_list.end(); - - for (auto variant_keys_list_it = variant_keys_list.begin(); - variant_keys_list_it < variant_keys_list.end(); ++variant_keys_list_it) { - auto parsed_variant_keys = - ParseVariantKey(*variant_keys_list_it, parsed_variants->size()); - if (!parsed_variant_keys) - continue; - for (const std::vector<std::string>& variant_key : *parsed_variant_keys) { - auto maching_index = GetPossibleKeysIndex(sorted_variants, variant_key); - if (maching_index.has_value() && *maching_index < minimum_index) { - minimum_index = *maching_index; - found_variant_key = variant_keys_list_it; - } - } - } - return found_variant_key; -} - -// static -base::Optional<size_t> WebPackageRequestMatcher::FindBestMatchingIndex( - const net::HttpRequestHeaders& request_headers, - const std::string& variants) { - auto parsed_variants = ParseVariants(variants); - if (!parsed_variants) - return base::nullopt; - - size_t best_match_index = 0; - for (const auto& variant_axis : *parsed_variants) { - const std::string field_name = base::ToLowerASCII(variant_axis.first); - std::unique_ptr<ContentNegotiationAlgorithm> negotiation_algorithm = - GetContentNegotiationAlgorithm(field_name); - if (!negotiation_algorithm) - return base::nullopt; - base::Optional<std::string> request_value; - std::string header_value; - if (request_headers.GetHeader(field_name, &header_value)) - request_value = header_value; - - std::vector<std::string> sorted_values = - negotiation_algorithm->run(variant_axis.second, request_value); - if (sorted_values.empty()) - return base::nullopt; - auto it = std::find(variant_axis.second.begin(), variant_axis.second.end(), - sorted_values.front()); - if (it == variant_axis.second.end()) - return base::nullopt; - size_t best_value_index = it - variant_axis.second.begin(); - - if (!base::CheckMul(best_match_index, variant_axis.second.size()) - .AssignIfValid(&best_match_index)) { - return base::nullopt; - } - if (!base::CheckAdd(best_match_index, best_value_index) - .AssignIfValid(&best_match_index)) { - return base::nullopt; - } - } - return best_match_index; -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/web_package/web_package_request_matcher_unittest.cc b/chromium/src/third_party/blink/common/web_package/web_package_request_matcher_unittest.cc deleted file mode 100644 index 44fa888..0000000 --- a/chromium/src/third_party/blink/common/web_package/web_package_request_matcher_unittest.cc +++ /dev/null
@@ -1,356 +0,0 @@ -// Copyright 2019 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 "third_party/blink/public/common/web_package/web_package_request_matcher.h" - -#include "net/http/http_request_headers.h" -#include "net/http/http_util.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace blink { - -constexpr char kVariantsHeader[] = "variants-04"; -constexpr char kVariantKeyHeader[] = "variant-key-04"; - -TEST(WebPackageRequestMatcherTest, CacheBehavior) { - const struct TestCase { - const char* name; - std::map<std::string, std::string> req_headers; - std::vector<std::pair<std::string, std::vector<std::string>>> variants; - std::vector<std::vector<std::string>> expected; - } cases[] = { - // Accept - {"vanilla content-type", - {{"accept", "text/html"}}, - {{"Accept", {"text/html"}}}, - {{"text/html"}}}, - {"client supports two content-types", - {{"accept", "text/html, image/jpeg"}}, - {{"Accept", {"text/html"}}}, - {{"text/html"}}}, - {"format miss", - {{"accept", "image/jpeg"}}, - {{"Accept", {"text/html"}}}, - {{"text/html"}}}, - {"no format preference", - {}, - {{"Accept", {"text/html"}}}, - {{"text/html"}}}, - {"no available format", - {{"accept", "text/html"}}, - {{"Accept", {}}}, - {{}}}, - {"accept all types", - {{"accept", "*/*"}}, - {{"Accept", {"text/html", "image/jpeg"}}}, - {{"text/html", "image/jpeg"}}}, - {"accept all subtypes", - {{"accept", "image/*"}}, - {{"Accept", {"text/html", "image/jpeg"}}}, - {{"image/jpeg"}}}, - {"type params match", - {{"accept", "text/html;param=bar"}}, - {{"Accept", {"text/html;param=foo", "text/html;param=bar"}}}, - {{"text/html;param=bar"}}}, - {"type with q value", - {{"accept", "text/html;q=0.8;param=foo"}}, - {{"Accept", {"image/jpeg", "text/html;param=foo"}}}, - {{"text/html;param=foo"}}}, - {"type with zero q value", - {{"accept", "text/html;q=0.0, image/jpeg"}}, - {{"Accept", {"text/html", "image/jpeg"}}}, - {{"image/jpeg"}}}, - {"type with invalid q value", - {{"accept", "text/html;q=999, image/jpeg"}}, - {{"Accept", {"text/html", "image/jpeg"}}}, - {{"text/html", "image/jpeg"}}}, - // Accept-Encoding - {"vanilla encoding", - {{"accept-encoding", "gzip"}}, - {{"Accept-Encoding", {"gzip"}}}, - {{"gzip", "identity"}}}, - {"client supports two encodings", - {{"accept-encoding", "gzip, br"}}, - {{"Accept-Encoding", {"gzip"}}}, - {{"gzip", "identity"}}}, - {"two stored, two preferences", - {{"accept-encoding", "gzip, br"}}, - {{"Accept-Encoding", {"gzip", "br"}}}, - {{"gzip", "br", "identity"}}}, - {"no encoding preference", - {}, - {{"Accept-Encoding", {"gzip"}}}, - {{"identity"}}}, - // Accept-Language - {"vanilla language", - {{"accept-language", "en"}}, - {{"Accept-Language", {"en"}}}, - {{"en"}}}, - {"multiple languages", - {{"accept-language", "en, JA"}}, - {{"Accept-Language", {"en", "fr", "ja"}}}, - {{"en", "ja"}}}, - {"no language preference", - {}, - {{"Accept-Language", {"en", "ja"}}}, - {{"en"}}}, - {"no available language", - {{"accept-language", "en"}}, - {{"Accept-Language", {}}}, - {{}}}, - {"accept all languages", - {{"accept-language", "*"}}, - {{"Accept-Language", {"en", "ja"}}}, - {{"en", "ja"}}}, - {"language subtag", - {{"accept-language", "en"}}, - {{"Accept-Language", {"en-US", "enq"}}}, - {{"en-US"}}}, - {"language with q values", - {{"accept-language", "ja, en;q=0.8"}}, - {{"Accept-Language", {"fr", "en", "ja"}}}, - {{"ja", "en"}}}, - {"language with zero q value", - {{"accept-language", "ja, en;q=0"}}, - {{"Accept-Language", {"fr", "en"}}}, - {{"fr"}}}, - // Multiple axis - {"format and language matches", - {{"accept", "text/html"}, {"accept-language", "en"}}, - {{"Accept", {"text/html"}}, {"Accept-Language", {"en", "fr"}}}, - {{"text/html"}, {"en"}}}, - {"accept anything", - {{"accept", "*/*"}, {"accept-language", "*"}}, - {{"Accept", {"text/html", "image/jpeg"}}, - {"Accept-Language", {"en", "fr"}}}, - {{"text/html", "image/jpeg"}, {"en", "fr"}}}, - {"unknown field name", - {{"accept-language", "en"}, {"unknown", "foo"}}, - {{"Accept-Language", {"en"}}, {"Unknown", {"foo"}}}, - {{"en"}}}, - }; - for (const auto& c : cases) { - net::HttpRequestHeaders request_headers; - for (auto it = c.req_headers.begin(); it != c.req_headers.end(); ++it) - request_headers.SetHeader(it->first, it->second); - EXPECT_EQ(c.expected, WebPackageRequestMatcher::CacheBehavior( - c.variants, request_headers)) - << c.name; - } -} - -TEST(WebPackageRequestMatcherTest, MatchRequest) { - const struct TestCase { - const char* name; - std::map<std::string, std::string> req_headers; - WebPackageRequestMatcher::HeaderMap res_headers; - bool should_match; - } cases[] = { - {"no variants and variant-key", {{"accept", "text/html"}}, {}, true}, - {"has variants but no variant-key", - {{"accept", "text/html"}}, - {{kVariantsHeader, "Accept; text/html"}}, - false}, - {"has variant-key but no variants", - {{"accept", "text/html"}}, - {{kVariantKeyHeader, "text/html"}}, - false}, - {"content type matches", - {{"accept", "text/html"}}, - {{kVariantsHeader, "Accept; text/html; image/jpeg"}, - {kVariantKeyHeader, "text/html"}}, - true}, - {"content type misses", - {{"accept", "image/jpeg"}}, - {{kVariantsHeader, "Accept; text/html; image/jpeg"}, - {kVariantKeyHeader, "text/html"}}, - false}, - {"encoding matches", - {}, - {{kVariantsHeader, "Accept-Encoding;gzip;identity"}, - {kVariantKeyHeader, "identity"}}, - true}, - {"encoding misses", - {}, - {{kVariantsHeader, "Accept-Encoding;gzip;identity"}, - {kVariantKeyHeader, "gzip"}}, - false}, - {"language matches", - {{"accept-language", "en"}}, - {{kVariantsHeader, "Accept-Language;en;ja"}, {kVariantKeyHeader, "en"}}, - true}, - {"language misses", - {{"accept-language", "ja"}}, - {{kVariantsHeader, "Accept-Language;en;ja"}, {kVariantKeyHeader, "en"}}, - false}, - {"content type and language match", - {{"accept", "text/html"}, {"accept-language", "en"}}, - {{kVariantsHeader, "Accept-Language;fr;en, Accept;text/plain;text/html"}, - {kVariantKeyHeader, "en;text/html"}}, - true}, - {"content type matches but language misses", - {{"accept", "text/html"}, {"accept-language", "fr"}}, - {{kVariantsHeader, "Accept-Language;fr;en, Accept;text/plain;text/html"}, - {kVariantKeyHeader, "en;text/html"}}, - false}, - {"language matches but content type misses", - {{"accept", "text/plain"}, {"accept-language", "en"}}, - {{kVariantsHeader, "Accept-Language;fr;en, Accept;text/plain;text/html"}, - {kVariantKeyHeader, "en;text/html"}}, - false}, - {"multiple variant key", - {{"accept-encoding", "identity"}, {"accept-language", "fr"}}, - {{kVariantsHeader, "Accept-Encoding;gzip;br, Accept-Language;en;fr"}, - {kVariantKeyHeader, "gzip;fr, identity;fr"}}, - true}, - {"bad variant key item length", - {}, - {{kVariantsHeader, "Accept;text/html, Accept-Language;en;fr"}, - {kVariantKeyHeader, "text/html;en, text/html;fr;oops"}}, - false}, - {"unknown field name", - {{"accept-language", "en"}, {"unknown", "foo"}}, - {{kVariantsHeader, "Accept-Language;en, Unknown;foo"}, - {kVariantKeyHeader, "en;foo"}}, - false}, - }; - for (const auto& c : cases) { - net::HttpRequestHeaders request_headers; - for (auto it = c.req_headers.begin(); it != c.req_headers.end(); ++it) - request_headers.SetHeader(it->first, it->second); - EXPECT_EQ(c.should_match, WebPackageRequestMatcher::MatchRequest( - request_headers, c.res_headers)) - << c.name; - } -} - -TEST(WebPackageRequestMatcherTest, FindBestMatchingVariantKey) { - const struct TestCase { - const char* name; - std::map<std::string, std::string> req_headers; - std::string variants; - std::vector<std::string> variant_key_list; - base::Optional<std::string> expected_result; - } cases[] = { - { - "Content type negotiation: default value", - {{"accept", "image/webp,image/jpg"}}, - "Accept;image/xx;image/yy", - {"image/yy", "image/xx"}, - "image/xx" // There is no preferred available, image/xx is the - // default. - }, - { - "Language negotiation: default value", - {{"accept-language", "en,fr"}}, - "accept-language;ja;ch", - {"ja", "ch"}, - "ja" // There is no preferred available, ja is the default. - }, - { - "Language negotiation: no matching language", - {{"accept-language", "en,fr"}}, - "accept-language;ja;ch", - {"ch"}, - base::nullopt // There is no matching language. - }, - { - "Content type negotiation: Q value", - {{"accept", "image/jpg;q=0.8,image/webp,image/apng"}}, - "Accept;image/jpg;image/apng;image/webp", - {"image/jpg", "image/webp", "image/apng"}, - "image/webp" // image/webp is the most preferred content type. - }, - { - "Content type and Language negotiation", - {{"accept", "image/webp,image/jpg,*/*;q=0.3"}, - {"accept-language", "en,fr,ja"}}, - "Accept;image/webp;image/apng,accept-language;ja;en", - {"image/apng;ja", "image/webp;ja", "image/apng;en,image/webp;en"}, - "image/apng;en,image/webp;en" // image/webp;en is the most preferred - // content type. - }, - { - "Variants is invalid", - {{"accept", "image/webp,image/jpg"}}, - " ", - {}, - base::nullopt // Variants is invalid. - }, - { - "Variants size and Variant Key size don't match", - {{"accept", "image/webp,image/jpg"}}, - "Accept;image/webp;image/apng,accept-language;ja;en", - {"image/webp", "image/apng"}, - base::nullopt // There is no matching Variant Key. - }, - { - "Unknown Variant", - {{"accept", "image/webp,image/jpg"}}, - "Accept;image/webp;image/jpg, FooBar;foo;bar", - {"image/webp;foo", "image/webp;bar", "image/webp;jpg", - "image/jpg;bar"}, - base::nullopt // FooBar is unknown. - }, - }; - for (const auto& c : cases) { - net::HttpRequestHeaders request_headers; - for (auto it = c.req_headers.begin(); it != c.req_headers.end(); ++it) - request_headers.SetHeader(it->first, it->second); - auto variant_key_list_it = - WebPackageRequestMatcher::FindBestMatchingVariantKey( - request_headers, c.variants, c.variant_key_list); - if (variant_key_list_it == c.variant_key_list.end()) { - EXPECT_EQ(c.expected_result, base::nullopt) << c.name; - } else { - EXPECT_EQ(c.expected_result, *variant_key_list_it) << c.name; - } - } -} - -TEST(WebPackageRequestMatcherTest, FindBestMatchingIndex) { - const struct TestCase { - const char* name; - std::string variants; - std::map<std::string, std::string> req_headers; - base::Optional<size_t> expected_result; - } cases[] = { - {"matching value", - "Accept;image/png;image/jpg", - {{"accept", "image/webp,image/jpg"}}, - 1 /* image/jpg */}, - {"default value", - "Accept;image/xx;image/yy", - {{"accept", "image/webp,image/jpg"}}, - 0 /* image/xx */}, - {"content type and language", - "Accept;image/png;image/jpg, Accept-Language;en;fr;ja", - {{"accept", "image/jpg"}, {"accept-language", "fr"}}, - 4 /* image/jpg, fr */}, - {"language and content type", - "Accept-Language;en;fr;ja, Accept;image/png;image/jpg", - {{"accept", "image/jpg"}, {"accept-language", "fr"}}, - 3 /* fr, image/jpg */}, - {"ill-formed variants", - "Accept", - {{"accept", "image/webp,image/jpg"}}, - base::nullopt}, - {"unknown field name", - "Unknown;foo;bar", - {{"Unknown", "foo"}}, - base::nullopt}, - }; - - for (const auto& c : cases) { - net::HttpRequestHeaders request_headers; - for (auto it = c.req_headers.begin(); it != c.req_headers.end(); ++it) - request_headers.SetHeader(it->first, it->second); - base::Optional<size_t> result = - WebPackageRequestMatcher::FindBestMatchingIndex(request_headers, - c.variants); - EXPECT_EQ(c.expected_result, result) << c.name; - } -} - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/web_preferences/OWNERS b/chromium/src/third_party/blink/common/web_preferences/OWNERS deleted file mode 100644 index 585fa06..0000000 --- a/chromium/src/third_party/blink/common/web_preferences/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS \ No newline at end of file
diff --git a/chromium/src/third_party/blink/common/web_preferences/web_preferences.cc b/chromium/src/third_party/blink/common/web_preferences/web_preferences.cc deleted file mode 100644 index 758b0b1..0000000 --- a/chromium/src/third_party/blink/common/web_preferences/web_preferences.cc +++ /dev/null
@@ -1,245 +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 "third_party/blink/public/common/web_preferences/web_preferences.h" - -#include "base/strings/string_util.h" -#include "base/strings/utf_string_conversions.h" -#include "build/build_config.h" -#include "build/chromeos_buildflags.h" -#include "third_party/blink/public/common/features.h" -#include "third_party/blink/public/mojom/v8_cache_options.mojom.h" -#include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom.h" -#include "ui/base/ui_base_switches_util.h" - -namespace { - -bool IsTouchDragDropEnabled() { - // Cache the enabled state so it isn't queried on every WebPreferences - // creation. Note that this means unit tests can't override the state. - static const bool enabled = switches::IsTouchDragDropEnabled(); - return enabled; -} - -} // namespace - -namespace blink { - -namespace web_pref { - -using blink::mojom::EffectiveConnectionType; - -// "Zyyy" is the ISO 15924 script code for undetermined script aka Common. -const char kCommonScript[] = "Zyyy"; - -WebPreferences::WebPreferences() - : default_font_size(16), - default_fixed_font_size(13), - minimum_font_size(0), - minimum_logical_font_size(6), - default_encoding("ISO-8859-1"), -#if defined(OS_WIN) - context_menu_on_mouse_up(true), -#else - context_menu_on_mouse_up(false), -#endif - javascript_enabled(true), - web_security_enabled(true), - loads_images_automatically(true), - images_enabled(true), - plugins_enabled(true), - dom_paste_enabled(false), // enables execCommand("paste") - shrinks_standalone_images_to_fit(true), - text_areas_are_resizable(true), - allow_scripts_to_close_windows(false), - remote_fonts_enabled(true), - javascript_can_access_clipboard(false), - xslt_enabled(true), - dns_prefetching_enabled(true), - data_saver_enabled(false), - data_saver_holdback_web_api_enabled(false), - local_storage_enabled(false), - databases_enabled(false), - application_cache_enabled(false), - tabs_to_links(true), - disable_ipc_flooding_protection(false), - hyperlink_auditing_enabled(true), - allow_universal_access_from_file_urls(false), - allow_file_access_from_file_urls(false), - webgl1_enabled(true), - webgl2_enabled(true), - pepper_3d_enabled(false), - flash_3d_enabled(true), - flash_stage3d_enabled(false), - flash_stage3d_baseline_enabled(false), - privileged_webgl_extensions_enabled(false), - webgl_errors_to_console_enabled(true), - hide_scrollbars(false), - accelerated_2d_canvas_enabled(false), - antialiased_2d_canvas_disabled(false), - antialiased_clips_2d_canvas_enabled(true), - accelerated_filters_enabled(false), - deferred_filters_enabled(false), - container_culling_enabled(false), - allow_running_insecure_content(false), - disable_reading_from_canvas(false), - strict_mixed_content_checking(false), - strict_powerful_feature_restrictions(false), - allow_geolocation_on_insecure_origins(false), - strictly_block_blockable_mixed_content(false), - block_mixed_plugin_content(false), - password_echo_enabled(false), - should_print_backgrounds(false), - should_clear_document_background(true), - enable_scroll_animator(false), - threaded_scrolling_enabled(true), - prefers_reduced_motion(false), - touch_event_feature_detection_enabled(false), - pointer_events_max_touch_points(0), - available_pointer_types(0), - primary_pointer_type(blink::mojom::PointerType::kPointerNone), - available_hover_types(0), - primary_hover_type(blink::mojom::HoverType::kHoverNone), - dont_send_key_events_to_javascript(false), - sync_xhr_in_documents_enabled(true), - number_of_cpu_cores(1), -#if defined(OS_MAC) - editing_behavior(mojom::EditingBehavior::kEditingMacBehavior), -#elif defined(OS_WIN) - editing_behavior(mojom::EditingBehavior::kEditingWindowsBehavior), -#elif defined(OS_ANDROID) - editing_behavior(mojom::EditingBehavior::kEditingAndroidBehavior), -#elif BUILDFLAG(IS_CHROMEOS_ASH) - editing_behavior( - base::FeatureList::IsEnabled(blink::features::kCrOSAutoSelect) - ? mojom::EditingBehavior::kEditingChromeOSBehavior - : mojom::EditingBehavior::kEditingUnixBehavior), -#elif defined(OS_POSIX) - editing_behavior(mojom::EditingBehavior::kEditingUnixBehavior), -#else - editing_behavior(mojom::EditingBehavior::kEditingMacBehavior), -#endif - supports_multiple_windows(true), - viewport_enabled(false), -#if defined(OS_ANDROID) - viewport_meta_enabled(true), - shrinks_viewport_contents_to_fit(true), - viewport_style(mojom::ViewportStyle::kMobile), - always_show_context_menu_on_touch(false), - smooth_scroll_for_find_enabled(true), -#else - viewport_meta_enabled(false), - shrinks_viewport_contents_to_fit(false), - viewport_style(mojom::ViewportStyle::kDefault), - always_show_context_menu_on_touch(true), - smooth_scroll_for_find_enabled(false), -#endif - main_frame_resizes_are_orientation_changes(false), - initialize_at_minimum_page_scale(true), -#if defined(OS_MAC) - smart_insert_delete_enabled(true), -#else - smart_insert_delete_enabled(false), -#endif - spatial_navigation_enabled(false), - navigate_on_drag_drop(true), - v8_cache_options(blink::mojom::V8CacheOptions::kDefault), - record_whole_document(false), - cookie_enabled(true), - accelerated_video_decode_enabled(false), - animation_policy( - blink::mojom::ImageAnimationPolicy::kImageAnimationPolicyAllowed), - user_gesture_required_for_presentation(true), - text_tracks_enabled(false), - text_track_margin_percentage(0.0f), - immersive_mode_enabled(false), -#if defined(OS_ANDROID) || defined(OS_MAC) - double_tap_to_zoom_enabled(true), -#else - double_tap_to_zoom_enabled(false), -#endif - fullscreen_supported(true), -#if !defined(OS_ANDROID) - text_autosizing_enabled(false), -#else - text_autosizing_enabled(true), - font_scale_factor(1.0f), - device_scale_adjustment(1.0f), - force_enable_zoom(false), - support_deprecated_target_density_dpi(false), - use_legacy_background_size_shorthand_behavior(false), - wide_viewport_quirk(false), - use_wide_viewport(true), - force_zero_layout_height(false), - viewport_meta_merge_content_quirk(false), - viewport_meta_non_user_scalable_quirk(false), - viewport_meta_zero_values_quirk(false), - clobber_user_agent_initial_scale_quirk(false), - ignore_main_frame_overflow_hidden_quirk(false), - report_screen_size_in_physical_pixels_quirk(false), - reuse_global_for_unowned_main_frame(false), - spellcheck_enabled_by_default(true), - video_fullscreen_orientation_lock_enabled(false), - video_rotate_to_fullscreen_enabled(false), - embedded_media_experience_enabled(false), - css_hex_alpha_color_enabled(true), - scroll_top_left_interop_enabled(true), - disable_features_depending_on_viz(false), - disable_accelerated_small_canvases(false), -#endif // defined(OS_ANDROID) -#if defined(OS_ANDROID) - default_minimum_page_scale_factor(0.25f), - default_maximum_page_scale_factor(5.f), -#elif defined(OS_MAC) - default_minimum_page_scale_factor(1.f), - default_maximum_page_scale_factor(3.f), -#else - default_minimum_page_scale_factor(1.f), - default_maximum_page_scale_factor(4.f), -#endif - hide_download_ui(false), - presentation_receiver(false), - media_controls_enabled(true), - do_not_update_selection_on_mutating_selection_range(false), - autoplay_policy( - blink::mojom::AutoplayPolicy::kDocumentUserActivationRequired), - low_priority_iframes_threshold( - EffectiveConnectionType::kEffectiveConnectionUnknownType), - picture_in_picture_enabled(true), - translate_service_available(false), - network_quality_estimator_web_holdback( - EffectiveConnectionType::kEffectiveConnectionUnknownType), - allow_mixed_content_upgrades(true), - always_show_focus(false), - touch_drag_drop_enabled(IsTouchDragDropEnabled()) { - standard_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Times New Roman"); - fixed_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Courier New"); - serif_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Times New Roman"); - sans_serif_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Arial"); - cursive_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Script"); - fantasy_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Impact"); - pictograph_font_family_map[web_pref::kCommonScript] = - base::ASCIIToUTF16("Times New Roman"); -} - -WebPreferences::WebPreferences(const WebPreferences& other) = default; - -WebPreferences::WebPreferences(WebPreferences&& other) = default; - -WebPreferences::~WebPreferences() = default; - -WebPreferences& WebPreferences::operator=(const WebPreferences& other) = - default; - -WebPreferences& WebPreferences::operator=(WebPreferences&& other) = default; - -} // namespace web_pref - -} // namespace blink
diff --git a/chromium/src/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc b/chromium/src/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc deleted file mode 100644 index ba1ba32..0000000 --- a/chromium/src/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc +++ /dev/null
@@ -1,227 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h" - -#include "base/strings/string_util.h" -#include "build/build_config.h" -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#include "third_party/blink/public/mojom/widget/screen_info.mojom.h" -#include "url/mojom/url_gurl_mojom_traits.h" - -namespace mojo { - -// static -bool StructTraits<blink::mojom::WebPreferencesDataView, - blink::web_pref::WebPreferences>:: - Read(blink::mojom::WebPreferencesDataView data, - blink::web_pref::WebPreferences* out) { - if (!data.ReadStandardFontFamilyMap(&out->standard_font_family_map) || - !data.ReadFixedFontFamilyMap(&out->fixed_font_family_map) || - !data.ReadSerifFontFamilyMap(&out->serif_font_family_map) || - !data.ReadSansSerifFontFamilyMap(&out->sans_serif_font_family_map) || - !data.ReadCursiveFontFamilyMap(&out->cursive_font_family_map) || - !data.ReadFantasyFontFamilyMap(&out->fantasy_font_family_map) || - !data.ReadPictographFontFamilyMap(&out->pictograph_font_family_map) || - !data.ReadLazyFrameLoadingDistanceThresholdsPx( - &out->lazy_frame_loading_distance_thresholds_px) || - !data.ReadLazyImageLoadingDistanceThresholdsPx( - &out->lazy_image_loading_distance_thresholds_px) || - !data.ReadLazyImageFirstKFullyLoad(&out->lazy_image_first_k_fully_load) || - !data.ReadDefaultEncoding(&out->default_encoding) || - !data.ReadTextTrackBackgroundColor(&out->text_track_background_color) || - !data.ReadTextTrackTextColor(&out->text_track_text_color) || - !data.ReadTextTrackTextSize(&out->text_track_text_size) || - !data.ReadTextTrackTextShadow(&out->text_track_text_shadow) || - !data.ReadTextTrackFontFamily(&out->text_track_font_family) || - !data.ReadTextTrackFontStyle(&out->text_track_font_style) || - !data.ReadTextTrackFontVariant(&out->text_track_font_variant) || - !data.ReadTextTrackWindowColor(&out->text_track_window_color) || - !data.ReadTextTrackWindowPadding(&out->text_track_window_padding) || - !data.ReadTextTrackWindowRadius(&out->text_track_window_radius) || - !data.ReadPrimaryPointerType(&out->primary_pointer_type) || - !data.ReadPrimaryHoverType(&out->primary_hover_type) || - !data.ReadViewportStyle(&out->viewport_style) || - !data.ReadAnimationPolicy(&out->animation_policy) || - !data.ReadLowPriorityIframesThreshold( - &out->low_priority_iframes_threshold) || - !data.ReadNetworkQualityEstimatorWebHoldback( - &out->network_quality_estimator_web_holdback) || - !data.ReadWebAppScope(&out->web_app_scope) -#if defined(OS_ANDROID) - || !data.ReadDefaultVideoPosterUrl(&out->default_video_poster_url) -#endif - ) - return false; - - out->default_font_size = data.default_font_size(); - out->default_fixed_font_size = data.default_fixed_font_size(); - out->minimum_font_size = data.minimum_font_size(); - out->minimum_logical_font_size = data.minimum_logical_font_size(); - out->context_menu_on_mouse_up = data.context_menu_on_mouse_up(); - out->javascript_enabled = data.javascript_enabled(); - out->web_security_enabled = data.web_security_enabled(); - out->loads_images_automatically = data.loads_images_automatically(); - out->images_enabled = data.images_enabled(); - out->plugins_enabled = data.plugins_enabled(); - out->dom_paste_enabled = data.dom_paste_enabled(); - out->shrinks_standalone_images_to_fit = - data.shrinks_standalone_images_to_fit(); - out->text_areas_are_resizable = data.text_areas_are_resizable(); - out->allow_scripts_to_close_windows = data.allow_scripts_to_close_windows(); - out->remote_fonts_enabled = data.remote_fonts_enabled(); - out->javascript_can_access_clipboard = data.javascript_can_access_clipboard(); - out->xslt_enabled = data.xslt_enabled(); - out->dns_prefetching_enabled = data.dns_prefetching_enabled(); - out->data_saver_enabled = data.data_saver_enabled(); - out->data_saver_holdback_web_api_enabled = - data.data_saver_holdback_web_api_enabled(); - out->local_storage_enabled = data.local_storage_enabled(); - out->databases_enabled = data.databases_enabled(); - out->application_cache_enabled = data.application_cache_enabled(); - out->tabs_to_links = data.tabs_to_links(); - out->disable_ipc_flooding_protection = data.disable_ipc_flooding_protection(); - out->hyperlink_auditing_enabled = data.hyperlink_auditing_enabled(); - out->allow_universal_access_from_file_urls = - data.allow_universal_access_from_file_urls(); - out->allow_file_access_from_file_urls = - data.allow_file_access_from_file_urls(); - out->webgl1_enabled = data.webgl1_enabled(); - out->webgl2_enabled = data.webgl2_enabled(); - out->pepper_3d_enabled = data.pepper_3d_enabled(); - out->flash_3d_enabled = data.flash_3d_enabled(); - out->flash_stage3d_enabled = data.flash_stage3d_enabled(); - out->flash_stage3d_baseline_enabled = data.flash_stage3d_baseline_enabled(); - out->privileged_webgl_extensions_enabled = - data.privileged_webgl_extensions_enabled(); - out->webgl_errors_to_console_enabled = data.webgl_errors_to_console_enabled(); - out->hide_scrollbars = data.hide_scrollbars(); - out->accelerated_2d_canvas_enabled = data.accelerated_2d_canvas_enabled(); - out->new_canvas_2d_api_enabled = data.new_canvas_2d_api_enabled(); - out->antialiased_2d_canvas_disabled = data.antialiased_2d_canvas_disabled(); - out->antialiased_clips_2d_canvas_enabled = - data.antialiased_clips_2d_canvas_enabled(); - out->accelerated_filters_enabled = data.accelerated_filters_enabled(); - out->deferred_filters_enabled = data.deferred_filters_enabled(); - out->container_culling_enabled = data.container_culling_enabled(); - out->allow_running_insecure_content = data.allow_running_insecure_content(); - out->disable_reading_from_canvas = data.disable_reading_from_canvas(); - out->strict_mixed_content_checking = data.strict_mixed_content_checking(); - out->strict_powerful_feature_restrictions = - data.strict_powerful_feature_restrictions(); - out->allow_geolocation_on_insecure_origins = - data.allow_geolocation_on_insecure_origins(); - out->strictly_block_blockable_mixed_content = - data.strictly_block_blockable_mixed_content(); - out->block_mixed_plugin_content = data.block_mixed_plugin_content(); - out->password_echo_enabled = data.password_echo_enabled(); - out->disable_reading_from_canvas = data.disable_reading_from_canvas(); - out->should_clear_document_background = - data.should_clear_document_background(); - out->enable_scroll_animator = data.enable_scroll_animator(); - out->threaded_scrolling_enabled = data.threaded_scrolling_enabled(); - out->prefers_reduced_motion = data.prefers_reduced_motion(); - out->touch_event_feature_detection_enabled = - data.touch_event_feature_detection_enabled(); - out->pointer_events_max_touch_points = data.pointer_events_max_touch_points(); - out->available_pointer_types = data.available_pointer_types(); - out->available_hover_types = data.available_hover_types(); - out->dont_send_key_events_to_javascript = - data.dont_send_key_events_to_javascript(); - out->barrel_button_for_drag_enabled = data.barrel_button_for_drag_enabled(); - out->sync_xhr_in_documents_enabled = data.sync_xhr_in_documents_enabled(); - out->target_blank_implies_no_opener_enabled_will_be_removed = - data.target_blank_implies_no_opener_enabled_will_be_removed(); - out->allow_non_empty_navigator_plugins = - data.allow_non_empty_navigator_plugins(); - out->number_of_cpu_cores = data.number_of_cpu_cores(); - out->editing_behavior = data.editing_behavior(); - out->supports_multiple_windows = data.supports_multiple_windows(); - out->viewport_enabled = data.viewport_enabled(); - out->viewport_meta_enabled = data.viewport_meta_enabled(); - out->shrinks_viewport_contents_to_fit = - data.shrinks_viewport_contents_to_fit(); - out->smooth_scroll_for_find_enabled = data.smooth_scroll_for_find_enabled(); - out->main_frame_resizes_are_orientation_changes = - data.main_frame_resizes_are_orientation_changes(); - out->initialize_at_minimum_page_scale = - data.initialize_at_minimum_page_scale(); - out->smart_insert_delete_enabled = data.smart_insert_delete_enabled(); - out->spatial_navigation_enabled = data.spatial_navigation_enabled(); - out->navigate_on_drag_drop = data.navigate_on_drag_drop(); - out->v8_cache_options = data.v8_cache_options(); - out->record_whole_document = data.record_whole_document(); - out->cookie_enabled = data.cookie_enabled(); - out->accelerated_video_decode_enabled = - data.accelerated_video_decode_enabled(); - out->user_gesture_required_for_presentation = - data.user_gesture_required_for_presentation(); - out->text_tracks_enabled = data.text_tracks_enabled(); - out->text_track_margin_percentage = data.text_track_margin_percentage(); - out->immersive_mode_enabled = data.immersive_mode_enabled(); - out->double_tap_to_zoom_enabled = data.double_tap_to_zoom_enabled(); - out->fullscreen_supported = data.fullscreen_supported(); - out->text_autosizing_enabled = data.text_autosizing_enabled(); -#if defined(OS_ANDROID) - out->font_scale_factor = data.font_scale_factor(); - out->device_scale_adjustment = data.device_scale_adjustment(); - out->force_enable_zoom = data.force_enable_zoom(); - out->support_deprecated_target_density_dpi = - data.support_deprecated_target_density_dpi(); - out->use_legacy_background_size_shorthand_behavior = - data.use_legacy_background_size_shorthand_behavior(); - out->wide_viewport_quirk = data.wide_viewport_quirk(); - out->use_wide_viewport = data.use_wide_viewport(); - out->force_zero_layout_height = data.force_zero_layout_height(); - out->viewport_meta_merge_content_quirk = - data.viewport_meta_merge_content_quirk(); - out->viewport_meta_non_user_scalable_quirk = - data.viewport_meta_non_user_scalable_quirk(); - out->viewport_meta_zero_values_quirk = data.viewport_meta_zero_values_quirk(); - out->clobber_user_agent_initial_scale_quirk = - data.clobber_user_agent_initial_scale_quirk(); - out->ignore_main_frame_overflow_hidden_quirk = - data.ignore_main_frame_overflow_hidden_quirk(); - out->report_screen_size_in_physical_pixels_quirk = - data.report_screen_size_in_physical_pixels_quirk(); - out->reuse_global_for_unowned_main_frame = - data.reuse_global_for_unowned_main_frame(); - out->spellcheck_enabled_by_default = data.spellcheck_enabled_by_default(); - out->video_fullscreen_orientation_lock_enabled = - data.video_fullscreen_orientation_lock_enabled(); - out->video_rotate_to_fullscreen_enabled = - data.video_rotate_to_fullscreen_enabled(); - out->embedded_media_experience_enabled = - data.embedded_media_experience_enabled(); - out->css_hex_alpha_color_enabled = data.css_hex_alpha_color_enabled(); - out->scroll_top_left_interop_enabled = data.scroll_top_left_interop_enabled(); - out->disable_features_depending_on_viz = - data.disable_features_depending_on_viz(); - out->disable_accelerated_small_canvases = - data.disable_accelerated_small_canvases(); -#endif - out->force_dark_mode_enabled = data.force_dark_mode_enabled(); - out->default_minimum_page_scale_factor = - data.default_minimum_page_scale_factor(); - out->default_maximum_page_scale_factor = - data.default_maximum_page_scale_factor(); - out->hide_download_ui = data.hide_download_ui(); - out->presentation_receiver = data.presentation_receiver(); - out->media_controls_enabled = data.media_controls_enabled(); - out->do_not_update_selection_on_mutating_selection_range = - data.do_not_update_selection_on_mutating_selection_range(); - out->autoplay_policy = data.autoplay_policy(); - out->preferred_color_scheme = data.preferred_color_scheme(); - out->preferred_contrast = data.preferred_contrast(); - out->picture_in_picture_enabled = data.picture_in_picture_enabled(); - out->translate_service_available = data.translate_service_available(); - out->lazy_load_enabled = data.lazy_load_enabled(); - out->allow_mixed_content_upgrades = data.allow_mixed_content_upgrades(); - out->always_show_focus = data.always_show_focus(); - out->touch_drag_drop_enabled = data.touch_drag_drop_enabled(); - out->webxr_immersive_ar_allowed = data.webxr_immersive_ar_allowed(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/widget/OWNERS b/chromium/src/third_party/blink/common/widget/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/common/widget/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/common/widget/screen_info_mojom_traits.cc b/chromium/src/third_party/blink/common/widget/screen_info_mojom_traits.cc deleted file mode 100644 index dbac085..0000000 --- a/chromium/src/third_party/blink/common/widget/screen_info_mojom_traits.cc +++ /dev/null
@@ -1,31 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/widget/screen_info_mojom_traits.h" - -#include "ui/gfx/geometry/mojom/geometry.mojom.h" -#include "ui/gfx/mojom/display_color_spaces.mojom.h" - -namespace mojo { - -bool StructTraits<blink::mojom::ScreenInfoDataView, blink::ScreenInfo>::Read( - blink::mojom::ScreenInfoDataView data, - blink::ScreenInfo* out) { - if (!data.ReadDisplayColorSpaces(&out->display_color_spaces) || - !data.ReadRect(&out->rect) || - !data.ReadAvailableRect(&out->available_rect)) - return false; - - out->device_scale_factor = data.device_scale_factor(); - out->depth = data.depth(); - out->depth_per_component = data.depth_per_component(); - out->is_monochrome = data.is_monochrome(); - out->display_frequency = data.display_frequency(); - out->orientation_type = data.orientation_type(); - out->orientation_angle = data.orientation_angle(); - out->is_extended = data.is_extended(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/common/widget/visual_properties_mojom_traits.cc b/chromium/src/third_party/blink/common/widget/visual_properties_mojom_traits.cc deleted file mode 100644 index c295de9..0000000 --- a/chromium/src/third_party/blink/common/widget/visual_properties_mojom_traits.cc +++ /dev/null
@@ -1,41 +0,0 @@ -// Copyright 2020 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 "third_party/blink/public/common/widget/visual_properties_mojom_traits.h" - -#include "cc/mojom/browser_controls_params.mojom.h" -#include "services/viz/public/mojom/compositing/local_surface_id.mojom.h" -#include "third_party/blink/public/mojom/widget/screen_info.mojom.h" - -namespace mojo { - -bool StructTraits< - blink::mojom::VisualPropertiesDataView, - blink::VisualProperties>::Read(blink::mojom::VisualPropertiesDataView data, - blink::VisualProperties* out) { - if (!data.ReadScreenInfo(&out->screen_info) || - !data.ReadMinSizeForAutoResize(&out->min_size_for_auto_resize) || - !data.ReadMaxSizeForAutoResize(&out->max_size_for_auto_resize) || - !data.ReadNewSize(&out->new_size) || - !data.ReadVisibleViewportSize(&out->visible_viewport_size) || - !data.ReadCompositorViewportPixelRect( - &out->compositor_viewport_pixel_rect) || - !data.ReadBrowserControlsParams(&out->browser_controls_params) || - !data.ReadLocalSurfaceId(&out->local_surface_id) || - !data.ReadRootWidgetWindowSegments(&out->root_widget_window_segments) || - data.page_scale_factor() <= 0 || data.compositing_scale_factor() <= 0) - return false; - out->auto_resize_enabled = data.auto_resize_enabled(); - out->scroll_focused_node_into_view = data.scroll_focused_node_into_view(); - out->is_fullscreen_granted = data.is_fullscreen_granted(); - out->display_mode = data.display_mode(); - out->capture_sequence_number = data.capture_sequence_number(); - out->zoom_level = data.zoom_level(); - out->page_scale_factor = data.page_scale_factor(); - out->compositing_scale_factor = data.compositing_scale_factor(); - out->is_pinch_gesture_active = data.is_pinch_gesture_active(); - return true; -} - -} // namespace mojo
diff --git a/chromium/src/third_party/blink/manual_tests/OWNERS b/chromium/src/third_party/blink/manual_tests/OWNERS deleted file mode 100644 index 72e8ffc..0000000 --- a/chromium/src/third_party/blink/manual_tests/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -*
diff --git a/chromium/src/third_party/blink/manual_tests/forms/calendar-picker.html b/chromium/src/third_party/blink/manual_tests/forms/calendar-picker.html deleted file mode 100644 index dd9a6c3..0000000 --- a/chromium/src/third_party/blink/manual_tests/forms/calendar-picker.html +++ /dev/null
@@ -1,362 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta charset=utf-8> -<title>Calendar Picker test</title> -<style> -body { - background-color: #eeffff; - line-height: 1.4em; - font-family: Helvetica, sans-serif; -} -label { - width: 160px; - display: inline-block; -} -iframe { - z-index: 2147483647; - width: 100px; - height: 100px; - border: 0; - overflow: hidden; -} -</style> -</head> -<body> - -<p>This is a testbed for a calendar picker.</p> - -<h2>Preview</h2> - -<input type="text" id="date" style="margin: 0;"><br> -<iframe></iframe> - -<h2>Console</h2> - -<ol id="console" style="font-family:monospace;"></ol> - -<h2>Config</h2> -<form action="" method="GET"> - <fieldset> - <legend>Locale</legend> - - <label for="locale">Locale</label> - <select name="locale" id="config_locale"> - <!-- Populated from locale_data. --> - </select> - <br /> - <label for="locale_rtl">Locale RTL</label> - <input type="checkbox" name="locale_rtl" id="config_locale_rtl" value="true"> - <br /> - <label for="week_start_day">Week start day</label> - <select name="week_start_day" id="config_week_start_day"> - <option value="0">Sunday</option> - <option value="1">Monday</option> - <option value="2">Tuesday</option> - <option value="3">Wednesday</option> - <option value="4">Thursday</option> - <option value="5">Friday</option> - <option value="6">Saturday</option> - </select> - </fieldset> - - <fieldset> - <legend>Attributes</legend> - - <label for="type">[type]</label> - <select name="type" id="config_type"> - <option>date</option> - <option>week</option> - <option>month</option> - </select> - <br /> - <label for="value">[value]</label> - <input type="text" name="value" id="config_value"> - <br /> - <label for="min">[min]</label> - <input type="text" name="min" id="config_min"> - <br /> - <label for="max">[max]</label> - <input type="text" name="max" id="config_max"> - <br /> - <label for="step">[step]</label> - <input type="number" name="step" id="config_step"> - </fieldset> - <input type="submit" value="Submit"> -</form> - -<script> -function getParam(key) { - key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); - var pattern = "[\\?&]" + key + "=([^&#]*)"; - var regex = new RegExp(pattern); - var results = regex.exec(window.location.search); - if (!results) - return ""; - return decodeURIComponent(results[1].replace(/\+/g, " ")); -} - -function setParam(key, value) { - key = escape(key); - value = escape(value); - - var kvp = document.location.search.substr(1).split('&'); - - for (var i = kvp.length - 1; i >= 0; --i){ - kvp[i] - var x = kvp[i].split('='); - if (x[0] === key) { - x[1] = value; - kvp[i] = x.join('='); - break; - } - } - - if (i < 0) - kvp[kvp.length] = key + "=" + value; - - document.location.search = kvp.join('&'); -} - -function $(id) { - return document.getElementById(id); -} - -var config = {}; -function initializeConfig() { - for (locale in locale_data) { - var option = document.createElement("option"); - option.setAttribute("label", locale_data[locale].displayName); - option.setAttribute("value", locale); - $("config_locale").appendChild(option); - } - - config.locale = getParam("locale") || "en_US"; - config.isLocaleRTL = getParam("locale_rtl") === "true"; - config.weekStartDay = parseInt(getParam("weekStartDay") || "0", 10); - config.type = getParam("type") || "date"; - config.value = getParam("value") || ""; - config.min = getParam("min") || ""; - config.max = getParam("max") || ""; - config.step = getParam("step") || "1"; - - $("config_locale").value = config.locale; - $("config_locale_rtl").checked = config.isLocaleRTL; - $("config_week_start_day").value = config.weekStartDay; - $("config_type").value = config.type; - $("config_value").value = config.value; - $("config_min").value = config.min; - $("config_max").value = config.max; - $("config_step").value = config.step; -}; - -var locale_data = { - "en_US": { - "displayName": "English (United States)", - "shortMonthLabels": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "dayLabels": [ - "S", - "M", - "T", - "W", - "T", - "F", - "S" - ], - }, - "ja": { - "displayName": "Japanese", - "shortMonthLabels": [ - "1月", - "2月", - "3月", - "4月", - "5月", - "6月", - "7月", - "8月", - "9月", - "10月", - "11月", - "12月" - ], - "dayLabels": [ - "日", - "月", - "火", - "水", - "木", - "金", - "土" - ], - }, - "ar": { - "displayName": "Arabic", - "shortMonthLabels": [ - "يناير", - "فبراير", - "مارس", - "أبريل", - "مايو", - "يونيو", - "يوليو", - "أغسطس", - "سبتمبر", - "أكتوبر", - "نوفمبر", - "ديسمبر" - ], - "dayLabels": [ - "ح", - "ن", - "ث", - "ر", - "خ", - "ج", - "س" - ], - }, - "vi": { - "displayName": "Vietnamese", - "shortMonthLabels": [ - "thg 1", - "thg 2", - "thg 3", - "thg 4", - "thg 5", - "thg 6", - "thg 7", - "thg 8", - "thg 9", - "thg 10", - "thg 11", - "thg 12" - ], - "dayLabels": [ - "CN", - "T2", - "T3", - "T4", - "T5", - "T6", - "T7" - ], - }, -}; - -function createParam() { - return { - mode: config.type, - locale: config.locale, - weekStartDay: config.weekStartDay, - isLocaleRTL: config.isLocaleRTL, - dayLabels: locale_data[config.locale].dayLabels, - shortMonthLabels: locale_data[config.locale].shortMonthLabels, - max: config.max, - min: config.min, - step: config.step * (config.type === "month" ? 1 : 86400000), - stepBase: "0", - currentValue: config.value, - axShowMonthSelector: "Show month selection panel", - axShowNextMonth: "Show next month", - axShowPreviousMonth: "Show previous month", - todayLabel: "Today", - } -}; - -function openCalendar() { - var frame = document.getElementsByTagName('iframe')[0]; - var doc = frame.contentDocument; - doc.documentElement.innerHTML = '<head></head><body><div id=main>Loading...</div></body>'; - var commonCssLink = doc.createElement('link'); - commonCssLink.rel = 'stylesheet'; - commonCssLink.href = '../../Source/core/html/forms/resources/pickerCommon.css?' + (new Date()).getTime(); - doc.head.appendChild(commonCssLink); - var buttonCssLink = doc.createElement('link'); - buttonCssLink.rel = 'stylesheet'; - buttonCssLink.href = '../../Source/core/html/forms/resources/pickerButton.css?' + (new Date()).getTime(); - doc.head.appendChild(buttonCssLink); - var suggestionPickerCssLink = doc.createElement('link'); - suggestionPickerCssLink.rel = 'stylesheet'; - suggestionPickerCssLink.href = '../../Source/core/html/forms/resources/suggestionPicker.css?' + (new Date()).getTime(); - doc.head.appendChild(suggestionPickerCssLink); - var link = doc.createElement('link'); - link.rel = 'stylesheet'; - link.href = '../../Source/core/html/forms/resources/calendarPicker.css?' + (new Date()).getTime(); - doc.head.appendChild(link); - var commonJsScript = doc.createElement('script'); - commonJsScript.src = '../../Source/core/html/forms/resources/pickerCommon.js?' + (new Date()).getTime(); - doc.body.appendChild(commonJsScript); - var suggestionPickerJsScript = doc.createElement('script'); - suggestionPickerJsScript.src = '../../Source/core/html/forms/resources/suggestionPicker.js?' + (new Date()).getTime(); - doc.body.appendChild(suggestionPickerJsScript); - var script = doc.createElement('script'); - script.src = '../../Source/core/html/forms/resources/calendarPicker.js?' + (new Date()).getTime(); - doc.body.appendChild(script); - - var pagePopupController = { - setValueAndClosePopup: function(numValue, stringValue) { - window.log('number=' + numValue + ', string="' + stringValue + '"'); - if (numValue == 0) - window.document.getElementById('date').value = stringValue; - }, - setValue: function(stringValue) { - window.log('string="' + stringValue + '"'); - window.document.getElementById('date').value = stringValue; - }, - closePopup: function() { - window.log('closePopup'); - }, - localizeNumberString: function(numString) { - if (typeof numString == "number") - return numString.toLocaleString(); - return numString.toString(); - }, - histogramEnumeration: function() {}, - formatMonth: function(year, zeroBaseMonth) { - var monthLabels = ['<January>', '<February>', '<March>', '<April>', '<May>', '<June>', - '<July>', '<August>', '<September>', '<October>', '<November>', '<December>']; - return monthLabels[zeroBaseMonth] + " " + year; - }, - formatShortMonth: function(year, zeroBaseMonth) { - var monthLabels = ['<Jan>', '<Feb>', '<Mar>', '<Apr>', '<May>', '<Jun>', - '<Jul>', '<Aug>', '<Sept>', '<Oct>', '<Nov>', '<Dec>']; - return monthLabels[zeroBaseMonth] + " " + year; - }, - formatWeek: function(year, week, startDate) { - return '' + year + '-W' + week + ' starting on ' + startDate; - } - } - - setTimeout(function() { - frame.contentWindow.postMessage(JSON.stringify(createParam()), "*"); - frame.contentWindow.pagePopupController = pagePopupController; - }, 100); -} - -function log(str) { - var entry = document.createElement('li'); - entry.innerText = str; - document.getElementById('console').appendChild(entry); -} - -window.onload = function() { - initializeConfig(); - openCalendar(); -}; -</script> -</body> -</html>
diff --git a/chromium/src/third_party/blink/perf_tests/OWNERS b/chromium/src/third_party/blink/perf_tests/OWNERS deleted file mode 100644 index 790b5d1..0000000 --- a/chromium/src/third_party/blink/perf_tests/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -cbiesinger@chromium.org -haraken@chromium.org -hayato@chromium.org -ikilpatrick@chromium.org -kojii@chromium.org
diff --git a/chromium/src/third_party/blink/perf_tests/bindings/resources/data/blink-dev.json b/chromium/src/third_party/blink/perf_tests/bindings/resources/data/blink-dev.json deleted file mode 100644 index f1e177d..0000000 --- a/chromium/src/third_party/blink/perf_tests/bindings/resources/data/blink-dev.json +++ /dev/null
@@ -1 +0,0 @@ -[{"messages":[{"snippet":"Contact emails nzolghadr@chromium.org Spec https://navidz.github.io/auxclick/ Summary The new input event type "auxclick" introduced here provides web developers a way to listen to the click","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Thu, 25 Aug 2016 15:50:15 +0000"},{"name":"Subject","value":"[blink-dev] Intent to ship: auxclick"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"From: Navid Zolghadr [mailto:nzolghadr@chromium.org] > Motivation > In attempting to remove the click event for non-primary buttons in Chrome as per UI Event Spec it was discovered there is no","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to ship: auxclick"},{"name":"Date","value":"Thu, 25 Aug 2016 15:56:21 +0000"}]}}]},{"messages":[{"snippet":"[bcc blink-dev, discussion on platform-predictability] I've heard from a number of people that understanding how a web page behaves across browsers is challenging (tracking down the right devices)","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 21:21:55 -0400"},{"name":"Subject","value":"[blink-dev] Consider using BrowserStack to make interop investigations easier"},{"name":"To","value":"platform-predictability <platform-predictability@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails pwnall@chromium.org,jsbell@chromium.org Spec https://w3c.github.io/IndexedDB/ Summary In the IndexedDB 2.0 specification, the name attribute of IndexedDB object stores (IDBObjectStore)","payload":{"headers":[{"name":"From","value":"Victor Costan <pwnall@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 17:15:30 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: IndexedDB v2: object store and index renaming"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Thu, 25 Aug 2016 09:06:20 +1000"},{"name":"Subject","value":"[blink-dev] (belated) Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails johnme@chromium.org Spec https://github.com/whatwg/notifications/issues/79 https://github.com/whatwg/notifications/pull/82 Summary Allows developers to show a large image as part of the","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 20:55:59 +0100"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Notification image"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Async cookie API - bsittler Addressed inconsistencies between polyfill and explainer Working on getting feedback from other browsers Drafting Intent to Implement for the feature Bug Triage - cmumford","payload":{"headers":[{"name":"From","value":"Victor Costan <pwnall@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 15:09:46 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Update: 8/23/16"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Update: This experiment will be starting in M54. The following sections have been updated. Experimental timeline Enabled: August 25th: Chrome 54 Branch to Dev October 6th: Chrome 55 Branch to Dev","payload":{"headers":[{"name":"From","value":"Reilly Grant <reillyg@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 21:21:05 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Experiment: WebUSB (Updated)"},{"name":"To","value":"owencm@google.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jochen@chromium.org, aelias@chromium.org, juncai@chromium.org"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails japhet@chromium.org (kenjibaheux@chromium.org) Summary Content in an <iframe> can generally navigate the top level browsing context unless explicitly forbidden by the","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 12:55:04 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Seems reasonble to try. Please specify a milestone at which you anticipate removing support. Also, have you added code to trigger a console warning when the navigation is refused? On Tue, Aug 23, 2016","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 11:19:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Aug 23, 2016 at 12:55 PM, Nate Chapin <japhet@chromium.org> wrote: Compatibility Risk There isn't a good way to detect framebusting as a defense against being put in an <iframe>","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 11:37:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There's a standard console warning when an illegal navigation is attempted, which will get triggered for this case. Would you prefer a separate warning specific to this case? ~Nate On Wed, Aug 24,","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 11:41:46 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi, On Wed, Aug 24, 2016 at 11:41 AM, Nate Chapin <japhet@chromium.org> wrote: There's a standard console warning when an illegal navigation is attempted, which will get triggered for this","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 11:47:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Given that framebusting was used as security feature to protect against clickjacking (before superior options like CSP frame-ancestors directive or X-Frame-Options became available), this might make","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 20:01:28 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Nate Chapin <japhet@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 11:37 AM, Jeffrey Yasskin <jyasskin@chromium.org> wrote: On Tue, Aug 23, 2016 at 12:55 PM, Nate Chapin <japhet@chromium.org> wrote: Compatibility Risk There isn'","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 12:09:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 11:47 AM, Chris Harrelson <chrishtr@chromium.org> wrote: Hi, On Wed, Aug 24, 2016 at 11:41 AM, Nate Chapin <japhet@chromium.org> wrote: There's a standard","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 12:10:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 12:01 PM, John Mellor <johnme@chromium.org> wrote: Given that framebusting was used as security feature to protect against clickjacking (before superior options like CSP","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 12:18:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"John Mellor <johnme@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 12:09 PM, Nate Chapin <japhet@chromium.org> wrote: On Wed, Aug 24, 2016 at 11:37 AM, Jeffrey Yasskin <jyasskin@chromium.org> wrote: On Tue, Aug 23, 2016 at 12:55 PM,","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 12:27:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"Jeffrey Yasskin <jyasskin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Instead of ignoring non-user-gesture top navigations, can we treat them as X-Frame-Options:DENY and immediately unload the iframe? That should remove any security risk of this change. On 24 August 2016","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 20:41:33 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 12:10 PM, Nate Chapin <japhet@chromium.org> wrote: On Wed, Aug 24, 2016 at 11:47 AM, Chris Harrelson <chrishtr@chromium.org> wrote: Hi, On Wed, Aug 24, 2016 at 11:41","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 12:42:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Cross-origin top navigation without a user gesture"},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Memory: (bashi, chrisha) Implementing MemoryCoordinator. bashi@ added code to listen an OnTrimMemory signal sent from an Android OS to a renderer process. (tasak) Preparing CLs for starting a Finch","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 18:41:37 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"(keishi) Landed runtime verification to detect cross-thread Members. keishi@ is about to enable the per-thread heap for CompositorWorkers after sending a PSA. (keishi, mlippautz) Investigated how to","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 18:47:34 +0900"},{"name":"Subject","value":"[blink-dev] Re: Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"> (yhirano) Moved the hierarchy of ResourceClient to Oilpan's heap. This simplified a lifetime management of Resources a lot. I have moved RawResourceClient and subclasses to Oilpan's heap.","payload":{"headers":[{"name":"From","value":"Yutaka Hirano <yhirano@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 18:55:32 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Platform Architecture team snippet"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, We're USA based company with a great in-house technical team who really know their stuff about search engine optimization. I was analysing your website and it seems that your website rankings","payload":{"headers":[{"name":"Date","value":"Tue, 23 Aug 2016 08:58:12 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Benjamin Dyer | WEBEX\" <benjamindyer4578@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"I am building chromium on Ubuntu for Linux. I need to print stack traces for some code running in: "src/third_party/WebKit/Source/core/" In https://www.chromium.org/blink/getting-started-with","payload":{"headers":[{"name":"Date","value":"Mon, 22 Aug 2016 21:59:59 -0700 (PDT)"},{"name":"From","value":"Phani Vadrevu <pvadrevu@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Stack trace in blink"}]}},{"snippet":"The instructions at https://www.chromium.org/blink/getting-started-with-blink-debugging#TOC-Use-Chromium-s-StackTrace should work out of the box for printing stack traces in blink. On Tue, 23 Aug 2016","payload":{"headers":[{"name":"From","value":"Robert Hogan <robhogan@gmail.com>"},{"name":"Date","value":"Tue, 23 Aug 2016 06:05:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Stack trace in blink"},{"name":"To","value":"Phani Vadrevu <pvadrevu@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi folks, Have you worked on tab suspension or page state serialization in the past? If you've worked on anything from heuristics to decide when to evict a tab all the way to trying to serialize","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 00:58:38 +0000"},{"name":"Subject","value":"[blink-dev] Resources on tab suspension and page state serialization"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Regarding tab-suspension, we're actively working on suspending background renderers (Intent-to-implement, design doc). You can find a larger context in Memory Coordinator (design doc). Regarding","payload":{"headers":[{"name":"From","value":"\"'Kentaro Hara' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 11:10:33 +0900"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] Resources on tab suspension and page state serialization"},{"name":"To","value":"agable@chromium.org"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev@chromium.org, infra-dev@chromium.org A group of us works part-time on improving the infrastructure, and we meet once a month to give status updates. Email blink-infra if you'd like","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 17:20:51 -0700"},{"name":"Subject","value":"[blink-dev] Blink Infra monthly meeting notes August 2016"},{"name":"To","value":"blink-infra@chromium.org"}]}}]},{"messages":[{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-08-15 00:00:00 till 2016-08-22 00:00:00 (UTC time). CQ users: 128 out of 130 total committers 98.46%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 19:23:31 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of August 15"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-08-15 00:00:00 till 2016-08-22 00:00:00 (UTC time). CQ users: 363 out of 368 total committers 98.64%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 19:24:02 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of August 15"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Updating title to to make it clear this is an intent to ship. Thanks for doing this! LGTM1 On Mon, Aug 22, 2016 at 8:35 AM, Dave Tapuska <dtapuska@chromium.org> wrote: I believe there is a","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 10:32:40 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and ship: Support \"once\" event listener option"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Anton Obzhirov <a.obzhirov@samsung.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm2 On Mon, Aug 22, 2016 at 4:33 PM Rick Byers <rbyers@chromium.org> wrote: Updating title to to make it clear this is an intent to ship. Thanks for doing this! LGTM1 On Mon, Aug 22, 2016 at 8:","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 14:40:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and ship: Support \"once\" event listener option"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Anton Obzhirov <a.obzhirov@samsung.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Lgtm3 On Mon, Aug 22, 2016 at 7:40 AM Jochen Eisinger <jochen@chromium.org> wrote: lgtm2 On Mon, Aug 22, 2016 at 4:33 PM Rick Byers <rbyers@chromium.org> wrote: Updating title to to make it","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 14:42:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and ship: Support \"once\" event listener option"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Anton Obzhirov <a.obzhirov@samsung.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails dominicc@chromium.org (eng), tjsavage@chromium.org (PM), domenic@chromium.org (standards) Spec Custom elements are part of the DOM and HTML specs. Domenic has prepared summary pages of","payload":{"headers":[{"name":"From","value":"\"'Dominic Cooney' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 10:23:25 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Autonomous Custom Elements"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"tjsavage@chromium.org, domenic@chromium.org"}]}},{"snippet":"LGTM1. On Sun, Aug 21, 2016 at 6:23 PM 'Dominic Cooney' via blink-dev <blink-dev@chromium.org> wrote: Contact emails dominicc@chromium.org (eng), tjsavage@chromium.org (PM), domenic@","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 16:30:08 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Autonomous Custom Elements"},{"name":"To","value":"Dominic Cooney <dominicc@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"tjsavage@chromium.org, domenic@chromium.org"}]}},{"snippet":"LGTM2 On Tue, Aug 23, 2016 at 9:30 AM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM1. On Sun, Aug 21, 2016 at 6:23 PM 'Dominic Cooney' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 11:21:05 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Autonomous Custom Elements"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Dominic Cooney <dominicc@google.com>, blink-dev <blink-dev@chromium.org>, tjsavage@chromium.org, domenic@chromium.org"}]}},{"snippet":"LGTM3 On Tue, Aug 23, 2016 at 2:21 PM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On Tue, Aug 23, 2016 at 9:30 AM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM1. On Sun,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 14:35:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Autonomous Custom Elements"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Dominic Cooney <dominicc@google.com>, blink-dev <blink-dev@chromium.org>, tjsavage@chromium.org, domenic@chromium.org"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-08-22 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10172 (-11) 136 (-13) 682 (-54) 405 (+2) 89 Jul 2009 Uncategorized 39 (+7) 2 (-1) 0 (-4) 3 (+1","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 08:21:34 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-08-22"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"<div class="comment-text-content">It was once unimaginable. Now Donald J. Trump – the reality TV star, questionable businessman, and political bomb thrower – is on the verge of becoming","payload":{"headers":[{"name":"Date","value":"Sun, 21 Aug 2016 08:43:54 -0700 (PDT)"},{"name":"From","value":"cycast.co@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Unauthorized message sending! Note: I did not send from my account(s), the lengthy message below as found in my Messages-Sent Messages on Youtube."}]}},{"snippet":"I do not know what to make of your e-mail! Did you fix the situation? Need me to do something on my end? Thanks, Victor L. Dillion On Sun, Aug 21, 2016 at 10:43 AM, <cycast.co@gmail.com> wrote:","payload":{"headers":[{"name":"From","value":"CyCast <cycast.co@gmail.com>"},{"name":"Date","value":"Sun, 21 Aug 2016 11:38:52 -0500"},{"name":"Subject","value":"Re: [blink-dev] Unauthorized message sending! Note: I did not send from my account(s), the lengthy message below as found in my Messages-Sent Messages on Youtube."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"There has been lots of pop-ups on my google chrome. I need to fix the issue","payload":{"headers":[{"name":"Date","value":"Fri, 19 Aug 2016 10:32:04 -0700 (PDT)"},{"name":"From","value":"tburley54@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] google chrome issues"}]}},{"snippet":"Try the Chrome Cleanup Tool at https://www.google.com/chrome/cleanup-tool/. There are full instructions here: https://support.google.com/chrome/answer/6086368?hl=en This list is meant for developers of","payload":{"headers":[{"name":"From","value":"\"'Joe Mason' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 14:36:28 -0400"},{"name":"Subject","value":"Re: [blink-dev] google chrome issues"},{"name":"To","value":"tburley54@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Summary: I'm going to land a CL that stops calling blink::shutdown when the renderer thread stops. I hope it will fix lots of use-after-frees and get rid of lots of complicated handling around","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 19:03:24 +0900"},{"name":"Subject","value":"[blink-dev] PSA: Stop calling blink::shutdown"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>, Darin Fisher <darin@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails a.obzhirov@samsung.com Spec https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-once Summary Support add an event listener with option "once" set to true. When set to true","payload":{"headers":[{"name":"From","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"Date","value":"Fri, 19 Aug 2016 09:36:27 +0000"}]}},{"snippet":"Safari (well, the technology preview) already implemented it. :) (It is even in its release notes) So I guess "In Development" is sort of the right status. ☆PhistucK On Fri, Aug 19, 2016 at","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 19 Aug 2016 16:31:43 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Aug 19, 2016 at 5:36 AM, Anton Obzhirov <a.obzhirov@samsung.com> wrote: Interoperability risk Firefox: Public support Its implemented in FF50 which is currently dev-edition and ships","payload":{"headers":[{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Date","value":"Fri, 19 Aug 2016 10:12:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Yes, it is in WebKit main trunk which was partially the inspiration to raise the intent J From: PhistucK [mailto:phistuck@gmail.com] Sent: 19 August 2016 14:32 To: Anton Obzhirov Cc: blink-dev@chromium","payload":{"headers":[{"name":"From","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"To","value":"\"'PhistucK'\" <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"Date","value":"Fri, 19 Aug 2016 15:46:40 +0100"}]}},{"snippet":"Intent to Implement needs no LGTM, but what is your plan for shipping? Neither Gecko nor WebKit put this behind a flag (in their IDL at least), so I'd support just shipping this if you want to send","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 08:38:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev@chromium.org"}]}},{"snippet":"I believe there is a Requesting Approval to Ship indicates true. So I think the title didn't get adjusted from the template. Since the change actually is pending review you can treat this as an","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 08:35:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Support \"once\" event listener option"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Anton Obzhirov <a.obzhirov@samsung.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"HTML/DOM team biweekly snippet (August 1-14) HTML tkent@ Fixed two <select>-related issues; crbug.com/633505, crbug.com/632561 Fixed two RTL-related issues; crbug.com/232333, crbug.com/67848","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 17:52:19 +0900"},{"name":"Subject","value":"[blink-dev] HTML/DOM team biweekly snippet (August 1-14)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dom-dev@chromium.org"}]}}]},{"messages":[{"snippet":"","payload":{"headers":[{"name":"Date","value":"Thu, 18 Aug 2016 19:49:40 -0700 (PDT)"},{"name":"From","value":"arkanhandra@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Fb saya tdk bisa di buka"}]}},{"snippet":"Please, use the Chrome product forums (and you better use English). Or maybe this localized Chrome product forum is in your language. ☆PhistucK On Fri, Aug 19, 2016 at 5:49 AM, <arkanhandra@gmail.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 19 Aug 2016 10:37:41 +0300"},{"name":"Subject","value":"Re: [blink-dev] Fb saya tdk bisa di buka"},{"name":"To","value":"arkanhandra@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"For new CLs which require rebaselining layout tests, you can now download new baselines for all platforms based on try job results. This means you can now commit new baselines along with your CL that","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 17:23:00 -0700"},{"name":"Subject","value":"[blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"blink-infra@chromium.org"}]}},{"snippet":"This is awesome, thank you so much for doing this! Bye bye merge conflicts in TestExpectations, tests effectively being skipped whilst waiting for the bots, and mutli-CL reverts! Can't wait to try","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 18:16:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"This will hopefully be a big step forward for us. Thanks for working on it! -- Dirk On Thu, Aug 18, 2016 at 6:16 PM, Emil A Eklund <eae@chromium.org> wrote: This is awesome, thank you so much for","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 09:54:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Cc","value":"Quinten Yearsley <qyearsley@google.com>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"Hi Quinten, thanks a lot for working on this. One question though, you say I need the blink_rel bots. But CQ dry run runs win_chromium_rel_ng, etc, and those run the layout tests. Does rebaseline-cl","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 14:23:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"I've run the CQ dry run for a rebaseline and it definitely doesn't produce the required results. I'm running again manually specifying all the specific platforms' _blink_rel bots. The","payload":{"headers":[{"name":"From","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 14:32:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Cc","value":"Quinten Yearsley <qyearsley@google.com>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"Aye, that's correct -- right now webkit-patch rebaseline-cl only looks at the (non-CQ) blink try bots, so you have to manually trigger and wait for those :-/ The reason for using this separate set","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 11:38:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"I see... in this case, can you add an option to git cl upload similar to the current --cq-dry-run that uses these new bots? My current workflow relies on such a commandline option :) -Christian On Fri,","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 19 Aug 2016 14:41:16 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"I believe that git cl try supports an option to trigger additional bots (https://cs.chromium.org/chromium/tools/depot_tools/git_cl.py?q=CMDtry&sq=package:chromium&l=1) but I'm on my phone","payload":{"headers":[{"name":"From","value":"Robert Iannucci <iannucci@chromium.org>"},{"name":"Date","value":"Sat, 20 Aug 2016 16:45:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>, Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}},{"snippet":"Yep -- git cl try will try the release blink try bots for rebaselining with with: git cl try -b linux_precise_blink_rel -b linux_trusty_blink_rel \\ -b mac10.9_blink_rel -b mac10.10_blink_rel \\ -b mac10","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sun, 21 Aug 2016 12:44:28 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: New recommended way to rebaseline layout tests"},{"name":"To","value":"Robert Iannucci <iannucci@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, blink-infra@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails sclittle@chromium.org, bengr@chromium.org Spec Design doc: https://docs.google.com/document/d/1691W7yFDI1FJv69N2MEtaSzpnqO2EqkgGD3T0O-pQ08/edit# Summary Add support to Blink for removing","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 14:02:20 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"With respect to "Defer loading of below-the-fold images until the user scrolls down to them", is the short-term goal to just provide this mechanism for the Data Saver use case? You mention","payload":{"headers":[{"name":"Date","value":"Wed, 17 Aug 2016 14:48:10 -0700 (PDT)"},{"name":"From","value":"\"'Addy Osmani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"bengr@chromium.org, talo@chromium.org, ojan@chromium.org, kenjibaheux@chromium.org, sclittle@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"}]}},{"snippet":"The short-term goal is to provide this mechanism for the Data Saver use case. There has been some talk of doing this image replacement for other features, such as perhaps deferring loading of below-the","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 16:32:59 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Addy Osmani <addyo@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"I'd like to eventually experiment with deferring load of below-the-fold images, but that will be a change that needs careful compatibility testing and will require explicit control as well like","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 00:24:23 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Scott Little <sclittle@chromium.org>, Addy Osmani <addyo@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"A couple quick questions about how this is observed by web content (once it's used by Data Saver or some other feature, naturally): 1. Does the load event fire on an <img> when the","payload":{"headers":[{"name":"Date","value":"Wed, 17 Aug 2016 22:13:45 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Cc","value":"Scott Little <sclittle@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"Answers inline. On Wed, Aug 17, 2016 at 7:13 PM, Jeremy Roman <jbroman@chromium.org> wrote: A couple quick questions about how this is observed by web content (once it's used by Data Saver or","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 19:35:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"Well, that sounds like a huge compatibility risk, really. Stating "None" is misleading... ☆PhistucK On Thu, Aug 18, 2016 at 5:35 AM, Scott Little <sclittle@chromium.org> wrote: Answers","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 18 Aug 2016 08:56:47 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Scott Little <sclittle@chromium.org>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Ben Greenstein <bengr@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"Wouldn't it be more appropriate to add the loadedmetadata event used by HTMLMediaElement? Seems much more obvious and safe to me, the layman. On Thursday, August 18, 2016 at 5:35:33 AM UTC+3, Scott","payload":{"headers":[{"name":"Date","value":"Thu, 18 Aug 2016 00:52:23 -0700 (PDT)"},{"name":"From","value":"woxxom@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jbroman@chromium.org, ojan@chromium.org, addyo@google.com, bengr@chromium.org, talo@chromium.org, kenjibaheux@chromium.org, sclittle@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"}]}},{"snippet":"Phistuck is absolutely right. Using the placeholder in canvas operations, or any operation triggered by the load event, means broken content unless the page somehow finds out when the actual image has","payload":{"headers":[{"name":"From","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 11:08:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Scott Little <sclittle@chromium.org>, Ben Greenstein <bengr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"I think there might be some misunderstanding here - this intent to implement is just about adding support for showing placeholders, not about deciding which images should be replaced with placeholders.","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 13:24:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Cc","value":"Ben Greenstein <bengr@chromium.org>, PhistucK <phistuck@gmail.com>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"Why will the Data Saver not implement it at its layer and then Blink will just really get those placeholders from the server (the proxy)? ☆PhistucK On Thu, Aug 18, 2016 at 11:24 PM, Scott Little <","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 18 Aug 2016 23:48:15 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Scott Little <sclittle@chromium.org>"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, Ben Greenstein <bengr@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"On Thu, Aug 18, 2016 at 1:48 PM, PhistucK <phistuck@gmail.com> wrote: Why will the Data Saver not implement it at its layer and then Blink will just really get those placeholders from the server","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Thu, 18 Aug 2016 14:18:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, Ben Greenstein <bengr@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"I like this for a reason that wasn't mentioned: - We can raster a tile that doesn't have the image decoded yet. Later, we can swap in the decoded image. Since image decodes are slow, that tile","payload":{"headers":[{"name":"From","value":"Chris Blume <cblume@google.com>"},{"name":"Date","value":"Tue, 23 Aug 2016 01:45:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Scott Little <sclittle@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Stephen Chenney <schenney@chromium.org>, Ben Greenstein <bengr@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"On Tue, Aug 23, 2016 at 1:45 AM, Chris Blume <cblume@google.com> wrote: I like this for a reason that wasn't mentioned: - We can raster a tile that doesn't have the image decoded yet.","payload":{"headers":[{"name":"From","value":"Scott Little <sclittle@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 12:15:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Chris Blume <cblume@google.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Stephen Chenney <schenney@chromium.org>, Ben Greenstein <bengr@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Addy Osmani <addyo@google.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"The image replacement support referred to by this intent to implement would offer a means of showing image placeholders that doesn't require a proxy, and thus would work for https:// resources. I","payload":{"headers":[{"name":"Date","value":"Tue, 23 Aug 2016 17:12:24 -0700 (PDT)"},{"name":"From","value":"Inian Parameshwaran <inian1234@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"bengr@chromium.org, talo@chromium.org, ojan@chromium.org, kenjibaheux@chromium.org, sclittle@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"}]}},{"snippet":"On Tue, Aug 23, 2016 at 5:12 PM Inian Parameshwaran <inian1234@gmail.com> wrote: The image replacement support referred to by this intent to implement would offer a means of showing image","payload":{"headers":[{"name":"From","value":"Ben Greenstein <bengr@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 18:47:49 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"talo@chromium.org, ojan@chromium.org, kenjibaheux@chromium.org, sclittle@chromium.org"}]}},{"snippet":"Would this whole debate about the cost/harm of breaking the page largely go away if instead of thinking of this as a "image replacement" feature we saw it as a "image load suspension","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 16:00:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Ben Greenstein <bengr@chromium.org>"},{"name":"Cc","value":"Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>, talo@chromium.org, Ojan Vafai <ojan@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, sclittle@chromium.org"}]}},{"snippet":"That would break the window load event promise, though, right? It makes more sense to fire the error event if the image is never going to be loaded, I think. ☆PhistucK On Wed, Aug 24, 2016 at 11:00 PM,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 24 Aug 2016 23:13:16 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Ben Greenstein <bengr@chromium.org>, Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Ojan Vafai <ojan@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, Scott Little <sclittle@chromium.org>"}]}},{"snippet":"On Wed, Aug 24, 2016 at 4:13 PM, PhistucK <phistuck@gmail.com> wrote: That would break the window load event promise, though, right? It makes more sense to fire the error event if the image is","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 17:52:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Ben Greenstein <bengr@chromium.org>, Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Ojan Vafai <ojan@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, Scott Little <sclittle@chromium.org>"}]}},{"snippet":"This depends on what the use case for image replacement. I think we will need both to satisfy consumers of this feature. If the image will never load by design we should fire the error event, otherwise","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Wed, 24 Aug 2016 17:58:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Support for Image Replacement in Blink"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Ben Greenstein <bengr@chromium.org>, Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>, Tal Oppenheimer <talo@chromium.org>, Ojan Vafai <ojan@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, Scott Little <sclittle@chromium.org>"}]}}]},{"messages":[{"snippet":"input-dev is a web platform team focused on making touch (P1) and other forms of input (P2) awesome on the web. You can view our mid quarter OKR update here. input-dev is currently co-lead by dtapuska@","payload":{"headers":[{"name":"From","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 15:50:56 +0000"},{"name":"Subject","value":"[blink-dev] input-dev Q3 Midquarter OKR update"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, input-dev <input-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, In gdb, I can't invoke blink::showTransformPropertyTree() defined in Source/core/paint/PaintPropertyTreePrinter.cpp: (when gdb stops at a break point in blink::PrePaintTreeWalk::walk) (gdb) p","payload":{"headers":[{"name":"From","value":"\"'Xianzhu Wang' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 08:46:01 -0700"},{"name":"Subject","value":"[blink-dev] Why can't some global functions be invoked from gdb?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Never mind it. I was using unsupported non-component debug build. I switched to component build and the issue disappeared. All global functions are now visible to gdb with or without export. BTW I'","payload":{"headers":[{"name":"From","value":"\"'Xianzhu Wang' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 10:50:47 -0700"},{"name":"Subject","value":"[blink-dev] Re: Why can't some global functions be invoked from gdb?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wednesday, August 17, 2016 at 10:50:51 AM UTC-7, Xianzhu Wang wrote: Never mind it. I was using unsupported non-component debug build. I switched to component build and the issue disappeared. All","payload":{"headers":[{"name":"Date","value":"Thu, 18 Aug 2016 14:37:27 -0700 (PDT)"},{"name":"From","value":"\"'Aleks Totic' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wangxianzhu@google.com"},{"name":"Subject","value":"[blink-dev] Re: Why can't some global functions be invoked from gdb?"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 13:24:15 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev+status, chromium-dev+status, intervention-dev+status Context: A User Agent Intervention is when a Browser (called “User Agent” in standards) opts for: an intentional deviation from a","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 02:30:37 +0000"},{"name":"Subject","value":"[blink-dev] Chrome Interventions Quarterly: 2016 Q2~Q3"},{"name":"To","value":"undisclosed-recipients:;"}]}}]},{"messages":[{"snippet":"Contact emails servolk@chromium.org wolenetz@chromium.org Specs https://www.w3.org/TR/html5/embedded-content-0.html#audiotracklist-and-videotracklist-objects https://www.w3.org/TR/media-source/#audio-","payload":{"headers":[{"name":"From","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 17:02:21 -0700"},{"name":"Subject","value":"[blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"Here is also a CL that I've prepared to enable media tracks by default: https://codereview.chromium.org/2249763003/ On Tuesday, August 16, 2016 at 5:02:25 PM UTC-7, Sergey Volk wrote: Contact","payload":{"headers":[{"name":"Date","value":"Tue, 16 Aug 2016 17:13:17 -0700 (PDT)"},{"name":"From","value":"servolk via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wolenetz@chromium.org, foolip@google.com, mlamouri@chromium.org, dalecurtis@chromium.org, servolk@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"}]}},{"snippet":"What is the plan regarding support for multiple tracks? ☆PhistucK On Wed, Aug 17, 2016 at 3:13 AM, servolk via blink-dev <blink-dev@chromium.org> wrote: Here is also a CL that I've prepared","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 17 Aug 2016 09:21:13 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"servolk@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, foolip@google.com, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>, servolk@chromium.org"}]}},{"snippet":"And does this interact correctly (as per spec) with MediaStreams created by (for instance) getUserMedia? These can have multiple tracks, and the implementation currently does something sensible with","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 09:28:41 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"servolk@google.com, blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>, servolk@chromium.org"}]}},{"snippet":"Interaction spec: https://w3c.github.io/mediacapture-main/getusermedia.html#mediastreams-in-media-elements (MediaStream to media element) https://w3c.github.io/mediacapture-fromelement/ (capture a","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 09:31:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"servolk@google.com, blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>, servolk@chromium.org"}]}},{"snippet":"I've mentioned that in the ongoing technical constraints section: multiple media tracks (more than 1 audio and/or video tracks) are currently not supported by Chromium media pipeline. But as far as","payload":{"headers":[{"name":"From","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 09:51:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"Thank you for elaborating somewhat! ☆PhistucK On Wed, Aug 17, 2016 at 7:51 PM, Sergey Volk <servolk@chromium.org> wrote: I've mentioned that in the ongoing technical constraints section:","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 17 Aug 2016 20:12:16 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"Thanks for pointing this out, Harald. I wasn't aware of this functionality. https://w3c.github.io/mediacapture-fromelement/ section 3.1 has this paragraph: The captured MediaStream comprises of","payload":{"headers":[{"name":"From","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 10:18:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, mcasas@chromium.org"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"On 17 August 2016 at 10:18, Sergey Volk <servolk@chromium.org> wrote: Thanks for pointing this out, Harald. I wasn't aware of this functionality. https://w3c.github.io/mediacapture-","payload":{"headers":[{"name":"From","value":"\"'Miguel Casas' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 12:15:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"Ok, thanks for clarifying this, Miguel. Does anybody have any other concerns? If not, I'd like to flip the switch and mark the media tracks feature as stable in M54: https://codereview.chromium.org","payload":{"headers":[{"name":"From","value":"Sergey Volk <servolk@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 10:14:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media tracks"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, Matt Wolenetz <wolenetz@chromium.org>, \"Philip Jägenstedt\" <foolip@google.com>, mlamouri@chromium.org, Dale Curtis <dalecurtis@chromium.org>, mcasas@chromium.org"}]}}]},{"messages":[{"snippet":"Super perfect (2^n) weekly update Bug Triage - cmumford Blob Storage - dmurph, michaeln Committed security patch for beta and and master Uploaded next version of blob storage Important Storage V2 -","payload":{"headers":[{"name":"From","value":"\"'Tony Jin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 23:48:50 +0000"},{"name":"Subject","value":"[blink-dev] OWP Storage Update: 8/16/16"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-08-08 00:00:00 till 2016-08-15 00:00:00 (UTC time). CQ users: 133 out of 134 total committers 99.25%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 12:26:50 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of August 8"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-08-08 00:00:00 till 2016-08-15 00:00:00 (UTC time). CQ users: 372 out of 377 total committers 98.67%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 12:28:02 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of August 8"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Is there a more user-friendly presentation of this data somewhere? I am interested in CQ stats, but I'm not very good at reading this many numbers in a text dump. On Tue, Aug 16, 2016 at 3:28 AM,","payload":{"headers":[{"name":"From","value":"\"'Stefan Zager' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 11:41:05 -0700"},{"name":"Subject","value":"Re: [chromium-dev] CQ stats for the week of August 8"},{"name":"To","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Cc","value":"chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"JNJN","payload":{"headers":[{"name":"Date","value":"Mon, 15 Aug 2016 21:41:24 -0700 (PDT)"},{"name":"From","value":"babyd6248@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] HG"}]}}]},{"messages":[{"snippet":"Hi all, Red cells require action from API owners. Data from bit.ly/blinkintents. Date Sender Intent to Description Decision 7/7/2016 Charles Deprecate and remove fetches for script tags with invalid","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 15 Aug 2016 10:32:52 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"this person saying she is owner "Hayato" is a hacker. This is mycomputer. She has taken total control of my c omputer. I can prove this is my computer. Pls whelp me","payload":{"headers":[{"name":"Date","value":"Sun, 14 Aug 2016 11:10:04 -0700 (PDT)"},{"name":"From","value":"myangelgirl59@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] hayto"}]}},{"snippet":"I am sorry for your situation. If this is about a Chromebook, please, use the product forum instead. If this is unrelated to Chrome, please, search the web for malware prevention methods. There is not","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 14 Aug 2016 21:54:04 +0300"},{"name":"Subject","value":"Re: [blink-dev] hayto"},{"name":"To","value":"myangelgirl59@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"zzzzz","payload":{"headers":[{"name":"Date","value":"Sun, 14 Aug 2016 00:25:50 -0700 (PDT)"},{"name":"From","value":"swirvin22@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] sfg"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-08-14 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10183 (-9) 149 (+6) 736 (+45) 403 (+2) 89 Jul 2009 Uncategorized 32 (+1) 3 (+3) 4 (-3) 2 2 Jun","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Sun, 14 Aug 2016 00:42:07 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-08-14"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"","payload":{"headers":[{"name":"From","value":"Lam Pham <lam107351@gmail.com>"},{"name":"Date","value":"Sat, 13 Aug 2016 21:30:12 +0700"},{"name":"Subject","value":"[blink-dev]"},{"name":"To","value":"\"security-dev@chromium.org\" <security-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev@chromium.org"}]}}]},{"messages":[{"snippet":"","payload":{"headers":[{"name":"From","value":"Lam Pham <lam107351@gmail.com>"},{"name":"Date","value":"Sat, 13 Aug 2016 19:15:03 +0700"},{"name":"Subject","value":"[blink-dev]"},{"name":"To","value":"security-dev@chromium.org, blink-dev <blink-dev@chromium.org>, net-dev@chromium.org"}]}},{"snippet":"If you meant to unsubscribe - Try sending a blank e-mail to security-dev+unsubscribe@chromium.org (note that +unsubscribe in the address, it is important). If you already did exactly that, skip this.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 13 Aug 2016 15:19:27 +0300"},{"name":"Subject","value":"Re: [blink-dev]"},{"name":"To","value":"Lam Pham <lam107351@gmail.com>"},{"name":"Cc","value":"security-dev <security-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi blink-dev, I recently presented a short slide deck with an update on Slimming Paint, and on phase 2 (SPv2). TL;DR: * making steady progress * launching components along the way that are building","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 10:12:22 -0700"},{"name":"Subject","value":"[blink-dev] Short update on Slimming Paint"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"This is a weird one (redux)... Contact emails jsbell@google.com Spec https://wicg.github.io/entries-api/ - retroactively documents the now de facto standard. Summary The API was implemented in Chrome","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 09:26:12 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM Thanks for the thorough investigation. On Fri, Aug 12, 2016 at 9:26 AM, 'Joshua Bell' via blink-dev <blink-dev@chromium.org> wrote: This is a weird one (redux)... Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 09:30:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Aug 12, 2016 at 6:30 PM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM Thanks for the thorough investigation. On Fri, Aug 12, 2016 at 9:26 AM, 'Joshua Bell' via blink-","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 16:43:07 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Minor addition: also rename [NoInterfaceObject] DirectoryReader to FileSystemDirectoryReader. 0 hits on HTTPArchive. (Still waiting on third L*G*T*M) On Fri, Aug 12, 2016 at 12:43 PM, Philip Jägenstedt","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 10:08:43 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM43 On Wed, Aug 17, 2016 at 7:08 AM 'Joshua Bell' via blink-dev <blink-dev@chromium.org> wrote: Minor addition: also rename [NoInterfaceObject] DirectoryReader to","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 20:23:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"},{"name":"To","value":"Joshua Bell <jsbell@google.com>, \"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Non-owner LGTM. Thanks for the redux! On Friday, 12 August 2016 09:26:22 UTC-7, Joshua Bell wrote: This is a weird one (redux)... Contact emails jsb...@google.com Spec https://wicg.github.io/entries-","payload":{"headers":[{"name":"Date","value":"Wed, 17 Aug 2016 14:49:25 -0700 (PDT)"},{"name":"From","value":"\"'Addy Osmani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jsbell@google.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: global names for FileSystemFileEntry, FileSystemDirectoryEntry and friends"}]}}]},{"messages":[{"snippet":"Contact emails ramya.v@samsung.com Spec https://svgwg.org/svg2-draft/types.html#InterfaceSVGElement If this is an intent to implement and ship, include a link to a tag review or a description about why","payload":{"headers":[{"name":"Date","value":"Fri, 12 Aug 2016 02:04:05 -0700 (PDT)"},{"name":"From","value":"Ramya <ramya.v@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"}]}},{"snippet":"LGTM1 When your CL lands, can you make sure to update the chromestatus.com entry with the milestone? On Fri, Aug 12, 2016 at 11:04 AM Ramya <ramya.v@samsung.com> wrote: Contact emails ramya.v@","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 09:31:43 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"},{"name":"To","value":"Ramya <ramya.v@samsung.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sure. On Friday, 12 August 2016 15:01:59 UTC+5:30, Philip Jägenstedt wrote: LGTM1 When your CL lands, can you make sure to update the chromestatus.com entry with the milestone? On Fri, Aug 12, 2016 at","payload":{"headers":[{"name":"Date","value":"Fri, 12 Aug 2016 02:36:35 -0700 (PDT)"},{"name":"From","value":"Ramya <ramya.v@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"ramya.v@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"}]}},{"snippet":"LGTM2 On Fri, Aug 12, 2016 at 2:36 AM, Ramya <ramya.v@samsung.com> wrote: Sure. On Friday, 12 August 2016 15:01:59 UTC+5:30, Philip Jägenstedt wrote: LGTM1 When your CL lands, can you make sure","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 08:07:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"},{"name":"To","value":"Ramya <ramya.v@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Any other LGTMs? On Fri, Aug 12, 2016 at 8:07 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On Fri, Aug 12, 2016 at 2:36 AM, Ramya <ramya.v@samsung.com> wrote: Sure. On Friday,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 11:03:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"},{"name":"To","value":"Ramya <ramya.v@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 Sorry for the delay, trying (mostly failing) to dig myself out of e-mail hell after vacation... On Tue, Aug 23, 2016 at 2:03 PM, Chris Harrelson <chrishtr@chromium.org> wrote: Any other","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 23 Aug 2016 15:33:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: <Dataset property support for SVGElement>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Ramya <ramya.v@samsung.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"TL;DR = wkorman@/szager@ are working on removing the Widget class. We expect to modify the Frame tree to support everything that's currently done with the Widget tree. This was partly prompted by","payload":{"headers":[{"name":"Date","value":"Thu, 11 Aug 2016 16:34:13 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"layout-dev@chromium.org, platform-architecture-dev <platform-architecture-dev@chromium.org>"},{"name":"Subject","value":"Intent to refactor: removal of Widget class"}]}},{"snippet":"On Thu, Aug 11, 2016 at 4:34 PM, Walter <wkorman@chromium.org> wrote: TL;DR = wkorman@/szager@ are working on removing the Widget class. We expect to modify the Frame tree to support everything","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 17:36:14 -0700"},{"name":"Subject","value":"Re: Intent to refactor: removal of Widget class"},{"name":"To","value":"Walter <wkorman@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, layout-dev@chromium.org, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"On Thursday, August 11, 2016 at 5:36:39 PM UTC-7, Chris Harrelson wrote: On Thu, Aug 11, 2016 at 4:34 PM, Walter <wkorman@chromium.org> wrote: TL;DR = wkorman@/szager@ are working on removing the","payload":{"headers":[{"name":"Date","value":"Thu, 11 Aug 2016 17:49:45 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wkorman@chromium.org, layout-dev@chromium.org, platform-architecture-dev@chromium.org, chrishtr@chromium.org"},{"name":"Subject","value":"Re: Intent to refactor: removal of Widget class"}]}}]},{"messages":[{"snippet":"EME Issue #176 added the following EventHandler attributes for existing events: HTMLMediaElement.: onwaitingforkey (in addition to the existing onencrypted) MediaKeySession: onkeystatuseschange and","payload":{"headers":[{"name":"From","value":"David Dorwin <ddorwin@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 14:34:13 -0700"},{"name":"Subject","value":"[blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi, This needs to be an intent to ship rather than PSA. Thanks, Chris On Thu, Aug 11, 2016 at 2:34 PM, David Dorwin <ddorwin@chromium.org> wrote: EME Issue #176 added the following EventHandler","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 14:44:34 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"David Dorwin <ddorwin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"To be clear, the events aren't new, it's just the onfoo attributes. Given that it'll change webexposed tests, isn't a lack of objects here and API owners LGTM on the CL sufficient? (I","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 12:33:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, David Dorwin <ddorwin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think it's good to document the updates so that the wider community knows what's going on, and can find out status. It's just one more email plus some quick API owners replies. Chris On","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 08:00:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"<begin rant>I personally hate that we add an onXXX attribute for every event we basically fire. I understand the simplicity of it sometimes; but ugh... <end rant> On Fri, Aug 12, 2016 at 11","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 11:03:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Aug 12, 2016 at 5:03 PM, Dave Tapuska <dtapuska@chromium.org> wrote: > <begin rant>I personally hate that we add an onXXX attribute for every event > we basically fire. I","payload":{"headers":[{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Date","value":"Fri, 12 Aug 2016 18:34:09 +0200"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Returning a boolean from addEventListener? :) ☆PhistucK On Fri, Aug 12, 2016 at 7:34 PM, Anne van Kesteren <annevk@annevk.nl> wrote: On Fri, Aug 12, 2016 at 5:03 PM, Dave Tapuska <dtapuska@","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 13 Aug 2016 02:23:41 +0300"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding new EventHandler attributes for EME"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, August 11: Recent updates: We're continuing our --isolate-extensions launch trial on Dev and Canary channels, and we're preparing to enable","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 10:32:57 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, August 11, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The Status field of https://www.chromestatus.com/feature/5764672187793408 is currently Proposed. However, its launch bug is marked Fixed. But then again, there was a revert of a related commit in","payload":{"headers":[{"name":"From","value":"\"'Chris Rebert' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 15:18:50 -0700"},{"name":"Subject","value":"[blink-dev] \"Fix Window's members' visibility\" feature status?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Bug Triage Down to 0 unconfirmed / untriaged for storage and File API Triage baton passed to cmumford Indexed DB 2.0 - jsbell Call for consensus on advancing to "First Public Working Draft"","payload":{"headers":[{"name":"From","value":"\"'Tony Jin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 17:25:06 +0000"},{"name":"Subject","value":"[blink-dev] OWP Storage Update: 8/9/16"},{"name":"To","value":"chrome-owp-storage <chrome-owp-storage@google.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Hey Tony, Is there more information available about the demo app for writable-files? I was under the impression the current proposal (pre-MVP) hadn't been implemented/polyfilled, but may be","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 16:19:07 -0700 (PDT)"},{"name":"From","value":"Addy Osmani <addyo@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrome-owp-storage@google.com"},{"name":"Subject","value":"[blink-dev] Re: OWP Storage Update: 8/9/16"}]}},{"snippet":"Hi Addy, Thanks for reaching out! You're right that we haven't yet implemented/polyfilled anything. We're at the point where most browsers have said "it seems interesting...". Our","payload":{"headers":[{"name":"Date","value":"Thu, 11 Aug 2016 16:58:22 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrome-owp-storage@google.com"},{"name":"Subject","value":"[blink-dev] Re: OWP Storage Update: 8/9/16"}]}},{"snippet":"+addy explicitly -blink-dev to bcc to protect folks inboxes :) On Thu, Aug 11, 2016 at 4:58 PM, <dknox@google.com> wrote: Hi Addy, Thanks for reaching out! You're right that we haven't","payload":{"headers":[{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 17:00:04 -0700"},{"name":"Subject","value":"[blink-dev] Re: OWP Storage Update: 8/9/16"},{"name":"To","value":"Addy Osmani <addyo@google.com>"},{"name":"Cc","value":"chrome-owp-storage <chrome-owp-storage@google.com>"}]}}]},{"messages":[{"snippet":"Currently implementing a fast accessor for nodeType (getNodeType in Node.h). Only 4 bits are needed to represent the 12 possible values of NodeType. Existing m_nodeFlags (NodeFlags) field only have 2","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 10:20:22 -0700 (PDT)"},{"name":"From","value":"\"'Alfonso' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] De-virtualizing nodeType accesor."}]}},{"snippet":"On Wed, Aug 10, 2016 at 10:20 AM, 'Alfonso' via blink-dev <blink-dev@chromium.org> wrote: Currently implementing a fast accessor for nodeType (getNodeType in Node.h). Only 4 bits are","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:50:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Alfonso <peterssen@google.com>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+krasin@ Also I'm pretty sure the LTO build will devirtualize nodeType() already into an offset into the vtable with the virtual constant propagation optimization. I think that's only turned on","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:11:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Alfonso <peterssen@google.com>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, Ivan Krasin <krasin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, I think they are devirtualized, per my measurements here: https://bugs.chromium.org/p/chromium/issues/detail?id=634139&desc=2 It's Linux-only at this time, but we could do it on other","payload":{"headers":[{"name":"From","value":"\"'Ivan Krasin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:24:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Alfonso <peterssen@google.com>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, blink-dev <blink-dev@chromium.org>, Kostya Serebryany <kcc@google.com>"}]}},{"snippet":"Even if the method is devirtualized/inlined, the major overhead occurs when jumping from JS to C++, a fast accessor allows to peek the field directly from JS. This makes sense for very cheap accessors","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 11:30:01 -0700 (PDT)"},{"name":"From","value":"\"'Alfonso' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"esprehn@chromium.org, peterssen@google.com, bugsnash@chromium.org, hayato@chromium.org, kcc@google.com, krasin@google.com"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."}]}},{"snippet":"Given that this is per-type and not per-object data, another option might be indirecting through the WrapperTypeInfo (which you must already be accessing for any bindings calls to be safe anyhow)? (","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 15:57:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Alfonso <peterssen@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, kcc@google.com, krasin@google.com"}]}},{"snippet":"After the style team adds the new flag as per https://codereview.chromium.org/1962953002, we should be able to remove a flag soon afterwards (HasCustomStyleCallbacksFlag). Therefore we won't be","payload":{"headers":[{"name":"From","value":"Bugs Nash <bugsnash@google.com>"},{"name":"Date","value":"Thu, 11 Aug 2016 09:43:43 +1000"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Alfonso <peterssen@google.com>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, kcc@google.com, krasin@google.com"}]}},{"snippet":"+vogelheim On Thu, Aug 11, 2016 at 1:43 AM, Bugs Nash <bugsnash@google.com> wrote: After the style team adds the new flag as per https://codereview.chromium.org/1962953002, we should be able to","payload":{"headers":[{"name":"From","value":"Alfonso Peterssen <peterssen@google.com>"},{"name":"Date","value":"Thu, 11 Aug 2016 11:20:48 +0200"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Bugs Nash <bugsnash@google.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, kcc@google.com, krasin@google.com, vogelheim@chromium.org"}]}},{"snippet":"tl;dr, we've dropped this. ------ The solution we considered was that 3 of the existing NodeFlags (Element|Text|DocumentFragment) are redundant w/ the NodeType, so we could remove those, add one","payload":{"headers":[{"name":"From","value":"Daniel Vogelheim <vogelheim@google.com>"},{"name":"Date","value":"Thu, 18 Aug 2016 13:51:14 +0200"},{"name":"Subject","value":"Re: [blink-dev] De-virtualizing nodeType accesor."},{"name":"To","value":"Alfonso Peterssen <peterssen@google.com>"},{"name":"Cc","value":"Bugs Nash <bugsnash@google.com>, Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, bugsnash@chromium.org, Hayato Ito <hayato@chromium.org>, kcc@google.com, krasin@google.com"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) As other teams are sending out updates we thought input-dev should join in. As co-TL (with tdresser@) of the input-dev team I'll be condensing our individual snippets into something","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 13:03:44 -0400"},{"name":"Subject","value":"[blink-dev] Input-Dev Highlights Summary"},{"name":"To","value":"input-dev <input-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"This is a weird one... Contact emails jsbell@google.com Spec https://wicg.github.io/entries-api/ - retroactively documents the now de facto standard. Summary The API was implemented in Chrome years ago","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:19:47 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Why this change to the ancient bad API? Has anyone actually asked for these interfaces? And change which makes blink's implementation again different to other implementations. (I'm still hoping","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Wed, 10 Aug 2016 19:32:55 +0300"}]}},{"snippet":"I don't think we should expose an interface named so generic as "Entry" on the global. Reserving that forever for file system seems weird. I'd prefer we leave that as","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:53:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Or came up with better names, since the interfaces weren't exposed before it's much lower risk. We could name this superclass something else if it needs to be exposed. On Aug 10, 2016 9:53 AM,","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:54:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I would also strongly second the feedback from Elliot. Entry as a global name on window may well cause confusion in the current form. With respect to breakage, was research done on how much usage","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 16:27:54 -0700 (PDT)"},{"name":"From","value":"Addy Osmani <addyo@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jsbell@google.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"}]}},{"snippet":"I inquired with the folks behind window.fetch for how that was done. The response I got was along the lines of "we just hoped real hard". Since Entry itself is an "abstract class"","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 16:38:37 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Addy Osmani <addyo@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The concern was with Entry specifically. Do you still want to expose all of the other interfaces? And do you have any ideas for a new name for Entry? Using [NoInterfaceObject] isn't without risk. I","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 10:14:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Joshua Bell <jsbell@google.com>, Addy Osmani <addyo@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 08/11/2016 01:14 PM, Philip Jägenstedt wrote: > The concern was with Entry specifically. Do you still want to expose all of the other interfaces? And do you have any ideas for a new name for","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Joshua Bell <jsbell@google.com>, Addy Osmani <addyo@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Thu, 11 Aug 2016 16:10:54 +0300"}]}},{"snippet":"On Thu, Aug 11, 2016 at 3:10 PM smaug <smaug@welho.com> wrote: On 08/11/2016 01:14 PM, Philip Jägenstedt wrote: > The concern was with Entry specifically. Do you still want to expose all of","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 13:34:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"smaug <smaug@welho.com>, Joshua Bell <jsbell@google.com>, Addy Osmani <addyo@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"From: Philip Jägenstedt [mailto:foolip@chromium.org] > Nevertheless, I think we shouldn't use [NoInterfaceObject] if renaming interfaces is still an option. I agree. I've opened https://","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, smaug <smaug@welho.com>, Joshua Bell <jsbell@google.com>, Addy Osmani <addyo@chromium.org>"},{"name":"CC","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"Date","value":"Thu, 11 Aug 2016 13:40:49 +0000"}]}},{"snippet":"Thanks, Domenic! It looks like the bug discussion converged on renaming: DOMFileSystem → FileSystem Entry → FileSystemEntry FileEntry → FileSystemFileEntry DirectoryEntry → FileSystemDirectoryEntry","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 14:37:40 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, smaug <smaug@welho.com>, Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sounds like a great plan! On Thu, Aug 11, 2016 at 2:37 PM, 'Joshua Bell' via blink-dev <blink-dev@chromium.org> wrote: Thanks, Domenic! It looks like the bug discussion converged on","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 14:53:13 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"Domenic Denicola <d@domenic.me>, \"Philip Jägenstedt\" <foolip@chromium.org>, smaug <smaug@welho.com>, Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"SGTM. Eagerly anticipating the new intent with the changed names. :) On Thu, Aug 11, 2016 at 2:53 PM, Elliott Sprehn <esprehn@chromium.org> wrote: Sounds like a great plan! On Thu, Aug 11, 2016","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 15:30:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Entry/FileEntry/DirectoryEntry/DOMFileSystem without [NoInterfaceObject]"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, Domenic Denicola <d@domenic.me>, \"Philip Jägenstedt\" <foolip@chromium.org>, smaug <smaug@welho.com>, Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More discussion can be found on loading-dev@ Highlights: Doc.write blocking results are very positive, showing","payload":{"headers":[{"name":"From","value":"\"'Kouhei Ueno' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 12:34:48 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}},{"snippet":"On Tue, Aug 9, 2016 at 8:34 PM, 'Kouhei Ueno' via Chromium Loading Performance <loading-dev@chromium.org> wrote: Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external","payload":{"headers":[{"name":"From","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:40:05 -0700"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"Kouhei Ueno <kouhei@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}},{"snippet":"+Charles Harrison who should know the answer to your questions Ben. On Wed, Aug 10, 2016 at 1:40 PM Ben Maurer <ben.maurer@gmail.com> wrote: On Tue, Aug 9, 2016 at 8:34 PM, 'Kouhei Ueno'","payload":{"headers":[{"name":"From","value":"\"'Josh Karlin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 17:45:27 +0000"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"Ben Maurer <ben.maurer@gmail.com>, Kouhei Ueno <kouhei@google.com>, \"csharrison@google.com\" <csharrison@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}},{"snippet":"Link headers (slightly different from markup link rel preloads) used to wait until after parsing the first chunk (not even just tokenizing). Now they preload as early as possible (when the document","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 13:47:28 -0400"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"Josh Karlin <jkarlin@google.com>"},{"name":"Cc","value":"Ben Maurer <ben.maurer@gmail.com>, Kouhei Ueno <kouhei@google.com>, blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}},{"snippet":"Amazing. That's super helpful. I think you can safely assume that we'll be trying this out :-). On Wed, Aug 10, 2016 at 10:47 AM, Charles Harrison <csharrison@google.com> wrote: Link","payload":{"headers":[{"name":"From","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:58:25 -0700"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"Charles Harrison <csharrison@google.com>"},{"name":"Cc","value":"Josh Karlin <jkarlin@google.com>, Kouhei Ueno <kouhei@google.com>, blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}},{"snippet":"No problem! Hope it works out for you. I know I don't have to say it but please file a bug if you see anything contending with the fetches :) On Wed, Aug 10, 2016 at 1:58 PM, Ben Maurer <ben.","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 14:01:28 -0400"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Jul 23 - Aug 2)"},{"name":"To","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Cc","value":"Josh Karlin <jkarlin@google.com>, Kouhei Ueno <kouhei@google.com>, blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:13:25 +1000"},{"name":"Subject","value":"[blink-dev] Remove label More 3 of 64 Print all In new window Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mek@chromium.org, owencm@chromium.org, kenjibaheux@chromium.org Summary Foreign Fetch is a proposal to enable service composition via third party service workers (see the Intent to","payload":{"headers":[{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 13:59:33 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Perhaps worth noting that WHATWG pulled in Foreign Fetch a week ago: https://github.com/whatwg/fetch/commit/8510b2f52d576af6a6c683620878eb3e39e14954 Very excited that it's only two more weeks","payload":{"headers":[{"name":"Date","value":"Wed, 10 Aug 2016 11:02:52 -0700 (PDT)"},{"name":"From","value":"rektide@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Experiment: Foreign Fetch and Link rel=serviceworker"}]}},{"snippet":"On Tue, Aug 9, 2016 at 9:59 PM, Marijn Kruisselbrink <mek@chromium.org> wrote: Summary Even though these really are two independent features, it still seems sensible to combine them into one","payload":{"headers":[{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 19:12:30 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 10, 2016 at 11:12 AM, Peter Beverloo <peter@chromium.org> wrote: On Tue, Aug 9, 2016 at 9:59 PM, Marijn Kruisselbrink <mek@chromium.org> wrote: Summary Even though these really","payload":{"headers":[{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:15:34 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 to experiment. (Update coming soon about possible LGTM requirements for experiments, but for this one let's get 3 LGTMs to approve.) On Wed, Aug 10, 2016 at 11:15 AM, Marijn Kruisselbrink","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 15:26:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Aug 12, 2016 at 12:27 AM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 to experiment. (Update coming soon about possible LGTM requirements for experiments, but for this one","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 11:05:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Fri, Aug 12, 2016 at 4:05 AM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM2 On Fri, Aug 12, 2016 at 12:27 AM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 to","payload":{"headers":[{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 12:15:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: Foreign Fetch and Link rel=serviceworker"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Highlights: - Sent an Intent-to-implement-and-ship for purge + suspend. It will dramatically reduce memory. - Noticed that we've improved performance of a frame creation by 75% in Q2 as a result","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 16:31:55 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Contact emails haraken@chromium.org, tasak@chromium.org Spec None. Summary When the system is under high memory pressure, purge as much memory as possible from background tabs and suspend them (","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 14:37:05 +0900"},{"name":"Subject","value":"[blink-dev] Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How would this impact a site that uses long polling for things like chat? Even if the tabs are woken up frequently the experience of having chat messages be delayed by 2 minutes could be pretty bad. Is","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 23:35:29 -0700 (PDT)"},{"name":"From","value":"ben.maurer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"}]}},{"snippet":"How would this impact a site that uses long polling for things like chat? Even if the tabs are woken up frequently the experience of having chat messages be delayed by 2 minutes could be pretty bad.","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 15:41:17 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"ben.maurer@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi, Do you intend to purge and suspend more aggressively than the current tab discarder? Assuming so; if so what are the conditions? Also, a followup to Ben Maurer's comment: by "notification","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 17:19:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Aug 9, 2016 at 3:37 PM Kentaro Hara <haraken@chromium.org> wrote: Hi Contact emails haraken@chromium.org, tasak@chromium.org Spec None. Summary When the system is under high memory","payload":{"headers":[{"name":"From","value":"Douglas Stockwell <dstockwell@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 00:33:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 10, 2016 at 9:19 AM, Chris Harrelson <chrishtr@chromium.org> wrote: Hi, Do you intend to purge and suspend more aggressively than the current tab discarder? Assuming so; if so what","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:28:05 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 10, 2016 at 9:33 AM, Douglas Stockwell <dstockwell@chromium.org> wrote: On Tue, Aug 9, 2016 at 3:37 PM Kentaro Hara <haraken@chromium.org> wrote: Hi Contact emails haraken@","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:43:02 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Douglas Stockwell <dstockwell@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think the issue here is that a tab like this would not actually get push notifications (since they'd be delivered via direct communication with the server). One possible approach would be to","payload":{"headers":[{"name":"From","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Date","value":"Tue, 9 Aug 2016 19:00:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think the issue here is that a tab like this would not actually get push notifications (since they'd be delivered via direct communication with the server). One possible approach would be to","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:13:33 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How about sound streaming? I use YouTube as a jukebox and which is always in background. Ping sound from a background hanguout page is also very useful and instancy is very important. 2016年8月10日(水) 11:","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 02:28:43 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, Ben Maurer <ben.maurer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How about sound streaming? I use YouTube as a jukebox and which is always in background. As mentioned in the first email, we already have a mechanism to blacklist tabs playing video, audio etc. So","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 11:47:33 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Just to be clear: The proposal is about enabling the purge + suspend *under high memory pressure*. In long term, we might want to more aggressively suspend background tabs to save more memory and","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 13:29:11 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"When you say "existing tab-discarding", is this the sad face saying "something has crashed" that happens whenever I run out of swap space? Or is it something different? On Wed, Aug","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 06:55:49 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We're already forcibly discarding background tabs (with some blacklisting) when the system is under high memory pressure. You can find a design doc here. On Wed, Aug 10, 2016 at 1:55 PM, Harald","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 14:04:50 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Why does the memory not go back up when we resume? What are we discarding that stays discarded? On Tue, Aug 9, 2016 at 10:04 PM, Kentaro Hara <haraken@chromium.org> wrote: We're already","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 23:22:27 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"hm. the design doc refers to chrome://discards as the place to get info on tab discarding, but I can't find that in any of my (Linux) browsers. How do I tell that tab discarding is running in my","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:20:55 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Why does the memory not go back up when we resume? Note that we're just resuming the tab in background and processing pending tasks in the task queue. So CC's memory won't come back. You","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 20:57:48 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 10, 2016 at 4:20 PM, Harald Alvestrand <hta@google.com> wrote: hm. the design doc refers to chrome://discards as the place to get info on tab discarding, but I can't find that in","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 20:58:36 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Chris Hamilton <chrisha@chromium.org>, Georges Abou Khalil <georgesak@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Aug 10, 2016 at 4:57 AM, Kentaro Hara <haraken@chromium.org> wrote: Why does the memory not go back up when we resume? Note that we're just resuming the tab in background and","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 10:44:00 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, 10 Aug 2016 at 07:59 Kentaro Hara <haraken@chromium.org> wrote: On Wed, Aug 10, 2016 at 4:20 PM, Harald Alvestrand <hta@google.com> wrote: hm. the design doc refers to chrome://","payload":{"headers":[{"name":"From","value":"Chris Hamilton <chrisha@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 19:11:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, Harald Alvestrand <hta@google.com>, Georges Abou Khalil <georgesak@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Aug 11, 2016 at 2:44 AM, Elliott Sprehn <esprehn@chromium.org> wrote: On Wed, Aug 10, 2016 at 4:57 AM, Kentaro Hara <haraken@chromium.org> wrote: Why does the memory not go back up","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 22:10:08 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Eric Karl <ericrk@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Getting back to the original point, are there any concerns to be resolved before starting a Finch experiment of the purge + suspend? On Thu, Aug 11, 2016 at 10:10 PM, Kentaro Hara <haraken@chromium.","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 22:20:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Eric Karl <ericrk@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Aug 11, 2016 at 6:20 AM, Kentaro Hara <haraken@chromium.org> wrote: Getting back to the original point, are there any concerns to be resolved before starting a Finch experiment of the","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 08:08:00 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent-to-implement-and-ship: Purge + suspend"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Eric Karl <ericrk@chromium.org>, Harald Alvestrand <hta@google.com>, Yoichi Osato <yoichio@chromium.org>, Ben Maurer <ben.maurer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"https://www.chromestatus.com/feature/5678869528969216 Status: "Proposed" Launch bug was fixed in February. https://www.chromestatus.com/feature/5748821980086272 Status: "Proposed"","payload":{"headers":[{"name":"From","value":"\"'Chris Rebert' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 17:14:22 -0700"},{"name":"Subject","value":"[blink-dev] Outdated Chrome Platform Statuses"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I updated all of them, except the archived one. Thank you! ☆PhistucK On Tue, Aug 9, 2016 at 3:14 AM, 'Chris Rebert' via blink-dev <blink-dev@chromium.org> wrote: https://www.chromestatus.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 9 Aug 2016 09:23:06 +0300"},{"name":"Subject","value":"Re: [blink-dev] Outdated Chrome Platform Statuses"},{"name":"To","value":"Chris Rebert <cvrebert@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks PhistucK. On Aug 9, 2016 02:23, "PhistucK" <phistuck@gmail.com> wrote: I updated all of them, except the archived one. Thank you! ☆PhistucK On Tue, Aug 9, 2016 at 3:14 AM, '","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 07:36:53 -0400"},{"name":"Subject","value":"Re: [blink-dev] Outdated Chrome Platform Statuses"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chris Rebert <cvrebert@google.com>"}]}},{"snippet":"I checked how these were documented on MDN and made a few tweaks. Thank you for the info. Joe Joe Medley | Technical Writer, Chrome DevRel | jmedley@google.com | 816-678-7195 If an API's not","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 08:46:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] Outdated Chrome Platform Statuses"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Chris Rebert <cvrebert@google.com>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blink-intents. Date Sender Intent to Description Decision 7/7/2016 Charles Deprecate and remove fetches for script tags with","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 16:26:01 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"The issue tracker at bugs.chromium.org is currently giving errors when users add an issue or a comment to an existing issue. This effectively makes the issue tracker read only. The cause is a DB schema","payload":{"headers":[{"name":"From","value":"\"'Jason Robbins' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 15:27:46 -0700"},{"name":"Subject","value":"[blink-dev] PSA: bugs.chromium.org outage, ETA ~45 minutes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Update: The schema change seems to have failed and it is being retried. ETA is now another 45-60 minutes from now. At which time we will see if it succeeded, or if we need to interrupt it and do","payload":{"headers":[{"name":"From","value":"\"'Jason Robbins' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 16:51:11 -0700"},{"name":"Subject","value":"[blink-dev] Re: PSA: bugs.chromium.org outage, ETA ~45 minutes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"On Mon, Aug 8, 2016 at 4:51 PM, 'Jason Robbins' via Chromium-dev <chromium-dev@chromium.org> wrote: Update: The schema change seems to have failed and it is being retried. ETA is now","payload":{"headers":[{"name":"From","value":"\"'Krishna Govind' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 16:52:51 -0700"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] Re: PSA: bugs.chromium.org outage, ETA ~45 minutes"},{"name":"To","value":"jrobbins@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, Chromium-dev <chromium-dev@chromium.org>, chrome-te <chrome-te@google.com>"}]}},{"snippet":"The issue tracker is working again. If you hit additional problems, please file an issue at bugs.chromium.org/p/monorail or email me if you are not able to enter an issue. We'll have a planned read","payload":{"headers":[{"name":"From","value":"\"'Jason Robbins' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 18:15:10 -0700"},{"name":"Subject","value":"[blink-dev] Re: PSA: bugs.chromium.org outage, ETA ~45 minutes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, Chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q3: 797 (↓1.2%) Number of untriaged/unconfirmed cr-blink bugs filed in Q3 older than a week: 61 (↑7%) Regressions Number of regression","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 14:18:25 -0700"},{"name":"Subject","value":"[blink-dev] Q3 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails panicker@google.com, igrigorik@google.com, nduca@google.com Spec Explainer: https://github.com/spanicker/longtasks WICG thread: https://discourse.wicg.io/t/proposal-long-task-","payload":{"headers":[{"name":"From","value":"\"'Shubhie Panicker' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 11:17:19 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Long Task Notifications"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"Nathaniel Duca <nduca@chromium.org>, igrigorik@chromium.org"}]}}]},{"messages":[{"snippet":"The Chrome Platform Status entry for the :placeholder-shown CSS pseudo-class (https://www.chromestatus.com/feature/6404760559157248 ) currently gives the status as "Proposed", but the launch","payload":{"headers":[{"name":"From","value":"\"'Chris Rebert' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 10:14:08 -0700"},{"name":"Subject","value":"[blink-dev] Chrome Platform Status for :placeholder-shown is outdated?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Fixed. Thank you for the heads up! ☆PhistucK On Mon, Aug 8, 2016 at 8:14 PM, 'Chris Rebert' via blink-dev <blink-dev@chromium.org> wrote: The Chrome Platform Status entry for the :","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 8 Aug 2016 20:29:04 +0300"},{"name":"Subject","value":"Re: [blink-dev] Chrome Platform Status for :placeholder-shown is outdated?"},{"name":"To","value":"Chris Rebert <cvrebert@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"+chromium-dev,blink-dev On Thu, Aug 4, 2016 at 7:09 PM, Paweł Hajdan, Jr. <phajdan.jr@chromium.org> wrote: [a change to CQ broke sending lists of patched files in events, so I wasn't able to","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 15:28:24 +0200"},{"name":"Subject","value":"[blink-dev] Re: CQ stats for the week of July 25 (chromium+blink)"},{"name":"To","value":"\"infra-dev@chromium.org\" <infra-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-08-01 00:00:00 till 2016-08-08 00:00:00 (UTC time). CQ users: 112 out of 113 total committers 99.12%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 10:47:21 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of August 1"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-08-01 00:00:00 till 2016-08-08 00:00:00 (UTC time). CQ users: 361 out of 365 total committers 98.90%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 10:46:42 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of August 1"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"The previous stats were wrong. I'm sending the correct ones now: Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-08-01 00:00:00 till 2016-08-08 00:","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 16 Aug 2016 13:00:50 +0200"},{"name":"Subject","value":"[blink-dev] Re: CQ stats for the week of August 1"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"HTML/DOM team biweekly snippet (July 18 - July 31) Custom Elements Style attribute changes now fire attributeChangedCallback (kojii) More web platform tests (davaajav) Shadow DOM (hayato, kochi) Web","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 16:46:08 +0900"},{"name":"Subject","value":"[blink-dev] HTML/DOM team biweekly snippet (July 18 - July 31)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Intent to Deprecate and Remove SVGTests.requiredFeatures attribute Primary eng (and PM) emails shanmuga.m@samsung.com Summary Deprecate and Remove SVGTests.requiredFeatures attribute. Motivation In","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 00:28:40 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"}]}},{"snippet":"It's hard to know if we can remove this without a UseCounter. Being useless doesn't mean we can remove it. I'd start by measuring first, ex. Doing deprecation on a popular feature spams","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 00:39:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Agree. Shall make deprecation now and do removal in M55? On Monday, August 8, 2016 at 1:09:29 PM UTC+5:30, Elliott Sprehn wrote: It's hard to know if we can remove this without a UseCounter. Being","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 02:46:38 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"}]}},{"snippet":"I think Elliott meant that you should add a use counter and when the results come, add a deprecation warning (or remove outright if the usage is zero). Otherwise, you may spam web developers with","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 8 Aug 2016 13:17:20 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Understood!! I will add useCounter for this attribute and will measure the usage first. Thank you!!! On Monday, August 8, 2016 at 3:48:09 PM UTC+5:30, PhistucK wrote: I think Elliott meant that you","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 03:20:39 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"}]}},{"snippet":"Ever since document.implementation.hasFeature() was neutered, all that remains of requiredTests is the SVGStringList attribute (reflecting the content attribute, similar to DOMSettableTokenList) on the","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 08 Aug 2016 22:26:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I am interested to further split the usecounter https://www.chromestatus.com/metrics/feature/timeline/popularity/1072 and for the two `return false` branches of SVGTests::isValid. On Tuesday, August 9,","payload":{"headers":[{"name":"Date","value":"Tue, 9 Aug 2016 00:41:49 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove SVGTests.requiredFeatures attribute"}]}}]},{"messages":[{"snippet":"TL;DR: Can we remove function_name, file_name and line_number from FROM_HERE? tracked_objects::Location, which is generated by FROM_HERE, is useful to track where a task is posted from, but has some","payload":{"headers":[{"name":"From","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Date","value":"Mon, 08 Aug 2016 07:03:23 +0000"},{"name":"Subject","value":"[blink-dev] Can we remove redundant members from FROM_HERE?"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Those fields are pretty essential for making sense of task dependencies (ie, which task posted the current one) in Chrome Traces. function_name etc. are pretty crude way to accomplish this, but I","payload":{"headers":[{"name":"From","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Date","value":"Mon, 08 Aug 2016 11:36:46 +0000"},{"name":"Subject","value":"Re: [blink-dev] Can we remove redundant members from FROM_HERE?"},{"name":"To","value":"Taiju Tsuiki <tzik@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ah, wasn't aware of that. OK, let's keep them as is now. 2016年8月8日(月) 20:36 Sami Kyostila <skyostil@chromium.org>: Those fields are pretty essential for making sense of task dependencies","payload":{"headers":[{"name":"From","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Date","value":"Mon, 08 Aug 2016 13:57:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Can we remove redundant members from FROM_HERE?"},{"name":"To","value":"Sami Kyostila <skyostil@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Also that information is used by chrome://profiler which, on CrOS at least, collects uma data about task run statistics. On Mon, Aug 8, 2016 at 2:57 PM Taiju Tsuiki <tzik@chromium.org> wrote: Ah,","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 08:13:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Can we remove redundant members from FROM_HERE?"},{"name":"To","value":"Taiju Tsuiki <tzik@chromium.org>, Sami Kyostila <skyostil@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails sunil.ratnu@samsung.com Spec https://drafts.csswg.org/css-images-3/#image-set-notation Summary Support unprefixed version of image-set. Motivation Currently blink implementation is","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"From","value":"Sunil Ratnu <sunil.ratnu@samsung.com>"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 08 Aug 2016 05:31:08 +0000"}]}},{"snippet":"Is our implementation compatible with Safari? Is there a test suite? On Aug 7, 2016 10:31 PM, "Sunil Ratnu" <sunil.ratnu@samsung.com> wrote: Contact emails sunil.ratnu@samsung.com Spec","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Sun, 7 Aug 2016 22:51:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"sunil.ratnu@samsung.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Edge shows positive signs - https://developer.microsoft.com/en-us/microsoft-edge/platform/status/cssimageset?filter=f3f0000bf&search=image-set. ☆PhistucK On Mon, Aug 8, 2016 at 8:51 AM, Elliott","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 8 Aug 2016 10:04:39 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"sunil.ratnu@samsung.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The CSS image-set spec is old, and has a major todo: it only supports variations in screen density (1x, 2x, etc), but doesn't yet allow for selecting images based on viewport width like the more","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 16:59:17 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, sunil.ratnu@samsung.com, blink-dev <blink-dev@chromium.org>, \"Tab Atkins Jr.\" <jackalmage@gmail.com>"}]}},{"snippet":"Easy LGTM1. Given that authors generally assume that prefixed things are aliases and that WebKit has made it just so, whatever problems there might be with image-set, the only way to move forward is to","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 20:11:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"John Mellor <johnme@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, sunil.ratnu@samsung.com, blink-dev <blink-dev@chromium.org>, \"Tab Atkins Jr.\" <jackalmage@gmail.com>"}]}},{"snippet":"LGTM2 On Fri, Aug 12, 2016 at 1:11 PM, Philip Jägenstedt <foolip@chromium.org> wrote: Easy LGTM1. Given that authors generally assume that prefixed things are aliases and that WebKit has made it","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 13:47:41 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"John Mellor <johnme@chromium.org>, PhistucK <phistuck@gmail.com>, Elliott Sprehn <esprehn@chromium.org>, Sunil Ratnu <sunil.ratnu@samsung.com>, blink-dev <blink-dev@chromium.org>, \"Tab Atkins Jr.\" <jackalmage@gmail.com>"}]}},{"snippet":"It has come to my attention in comment 5 that the standard syntax is a superset of the Blink syntax. https://drafts.csswg.org/css-images-3/#image-set-notation Blink supports - background-image: image-","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 15 Aug 2016 11:47:02 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Unprefixed -webkit-image-set"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, John Mellor <johnme@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Sunil Ratnu <sunil.ratnu@samsung.com>, blink-dev <blink-dev@chromium.org>, \"Tab Atkins Jr.\" <jackalmage@gmail.com>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-08-08 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10192 (+65) 143 (-30) 691 (+15) 401 (+13) 85 Jul 2009 Uncategorized 31 (-3) 0 (-1) 7 (-6) 2 (+","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 08:30:18 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-08-08"},{"name":"To","value":"blink-dev+status@chromium.org"}]}},{"snippet":"The "Storage" team will be starting to triage the "Blink>DataTransfer" bugs soon, so we'll hopefully get those two scary yellow boxes out of the way within a few weeks. On","payload":{"headers":[{"name":"From","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 10:33:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-08-08"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org, Shruthi Sreekanta <sshruthi@google.com>"}]}},{"snippet":"Thank you very much, Storage team and Joshua! Look forward to that. :) 2016-08-09 10:33 GMT-07:00 Joshua Bell <jsbell@chromium.org>: The "Storage" team will be starting to triage the","payload":{"headers":[{"name":"From","value":"\"'Shruthi Sreekanta' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 10:36:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-08-08"},{"name":"To","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"How do I delete all my certificates?","payload":{"headers":[{"name":"Date","value":"Sun, 7 Aug 2016 13:56:35 -0700 (PDT)"},{"name":"From","value":"markshea777@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Certificates"}]}},{"snippet":"Please, use the Chromebook help forums - https://productforums.google.com/forum/#!forum/chromebook-central ☆PhistucK On Sun, Aug 7, 2016 at 11:56 PM, <markshea777@gmail.com> wrote: How do I","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 8 Aug 2016 11:09:33 +0300"},{"name":"Subject","value":"Re: [blink-dev] Certificates"},{"name":"To","value":"markshea777@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, my name is Charle and I work for a Registered Google Partner located in California. I recently browsed through your business listing and wanted to highlight some key points for consideration. I am","payload":{"headers":[{"name":"Date","value":"Sat, 06 Aug 2016 22:44:13 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Charle | Rapident LLC\" <charlesgibson4589@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails bokan@chromium.org, ymalik@chromium.org Spec ED spec WICG GitHub repo We'd likely need to do more like spec `visual viewport` and `layout viewport` but we have pretty good agreement","payload":{"headers":[{"name":"Date","value":"Fri, 5 Aug 2016 13:04:23 -0700 (PDT)"},{"name":"From","value":"David Bokan <bokan@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Yash <ymalik@chromium.org>, Matt Rakow <marakow@microsoft.com>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: window.visualViewport"}]}},{"snippet":"Hi, Some questions to document level of feedback from the standards and browser community: What level of engagement have you had so far with any existing W3C working groups that might be related to","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 17:06:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: window.visualViewport"},{"name":"To","value":"David Bokan <bokan@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Yash <ymalik@chromium.org>, Matt Rakow <marakow@microsoft.com>"}]}},{"snippet":"Clearly that spec at least isn't at the level where implementations should ship. Like it dispatches events on objects which aren't EventTargets and such. And it isn't really defined when","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: window.visualViewport"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, David Bokan <bokan@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Yash <ymalik@chromium.org>, Matt Rakow <marakow@microsoft.com>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Wed, 10 Aug 2016 13:31:47 +0300"}]}},{"snippet":"On Wed, Aug 10, 2016 at 6:31 AM, smaug <smaug@welho.com> wrote: Clearly that spec at least isn't at the level where implementations should ship. Like it dispatches events on objects which","payload":{"headers":[{"name":"From","value":"\"'David Bokan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:23:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: window.visualViewport"},{"name":"To","value":"smaug <smaug@welho.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Yash <ymalik@chromium.org>, Matt Rakow <marakow@microsoft.com>"}]}},{"snippet":"On Tue, Aug 9, 2016 at 8:06 PM, Chris Harrelson <chrishtr@chromium.org> wrote: Hi, Some questions to document level of feedback from the standards and browser community: What level of engagement","payload":{"headers":[{"name":"From","value":"\"'David Bokan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 09:55:26 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: window.visualViewport"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Yash <ymalik@chromium.org>, Matt Rakow <marakow@microsoft.com>"}]}},{"snippet":"I'm supportive of an explicit visual viewport API and I expect we will implement eventually, though it's low priority for us right now since existing APIs expose this functionality already and","payload":{"headers":[{"name":"From","value":"\"'Matt Rakow' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"David Bokan <bokan@google.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"CC","value":"blink-dev <blink-dev@chromium.org>, Yash <ymalik@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Ship: window.visualViewport"},{"name":"Date","value":"Wed, 10 Aug 2016 17:30:47 +0000"}]}}]},{"messages":[{"snippet":"","payload":{"headers":[{"name":"Date","value":"Fri, 5 Aug 2016 05:38:18 -0700 (PDT)"},{"name":"From","value":"friedel.pollefeyt@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Wakkense S"}]}}]},{"messages":[{"snippet":"Intent to Deprecate SVGSVGElement.viewport attribute Primary eng (and PM) emails shanmuga.m@samsung.com Summary Deprecate SVGSVGElement.viewport attribute. Motivation The implementation is trivial but","payload":{"headers":[{"name":"Date","value":"Fri, 5 Aug 2016 03:00:48 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"}]}},{"snippet":"The use-counter numbers are recently less than 0.02%. LGTM1 to deprecate in M54 and remove in M55. On Fri, Aug 5, 2016 at 3:00 AM, Shanmuga <shanmuga.m@samsung.com> wrote: Intent to Deprecate","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 5 Aug 2016 09:14:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Aug 5, 2016, 18:14 Chris Harrelson <chrishtr@chromium.org> wrote: The use-counter numbers are recently less than 0.02%. LGTM1 to deprecate in M54 and remove in M55. On Fri, Aug 5,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 05 Aug 2016 20:20:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Gentle Ping!!!","payload":{"headers":[{"name":"Date","value":"Tue, 9 Aug 2016 00:51:18 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrishtr@chromium.org, shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"}]}},{"snippet":"An "Intent to Deprecate" thread actually doesn't need any LGTM, but since you indicated removal in M56 I treated it as an "Intent to Deprecate and Remove". API owners, one more?","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 08:22:25 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrishtr@chromium.org"}]}},{"snippet":"LGTM3. On Thu, Aug 11, 2016 at 5:22 PM, Philip Jägenstedt <foolip@chromium.org> wrote: An "Intent to Deprecate" thread actually doesn't need any LGTM, but since you indicated","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 13:30:28 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate SVGSVGElement.viewport attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Shanmuga <shanmuga.m@samsung.com>, blink-dev <blink-dev@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails foolip@chromium.org Summary Now that document.createEvent will no longer automatically support new event interfaces, I'll also try to remove some things that have been","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 04 Aug 2016 23:16:07 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Thu, Aug 4, 2016 at 4:16 PM, Philip Jägenstedt <foolip@chromium.org> wrote: Primary eng (and PM) emails foolip@chromium.org Summary Now that document.createEvent will no longer","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 17:43:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"See my comment inline (select and reply workflow in GMail stopped working? Weird :(). ☆PhistucK Entry on the feature dashboard None. Given the usage I don't think it's worth trying to summarize","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 5 Aug 2016 11:06:40 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'll defer to Joe about whether a feature dashboard entry would be useful. I do plan to deprecate and then remove a few of the things that remain, and for that an entry will be needed. If it were","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Sat, 06 Aug 2016 10:22:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Correction: I wrote "KeyboardEvents, which is now in the DOM spec" but that alias for KeyboardEvent is actually not in the spec. Still, I'm leaving it out of this intent because its usage","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Sun, 07 Aug 2016 20:41:16 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is this intent blocked on API owner feedback? On Sunday, August 7, 2016 at 1:41:32 PM UTC-7, Philip Jägenstedt wrote: Correction: I wrote "KeyboardEvents, which is now in the DOM spec" but","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 16:24:25 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"phistuck@gmail.com, chrishtr@chromium.org, jmedley@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blink-WebKit-only document.createEvent strings"}]}}]},{"messages":[{"snippet":"Hi Blinkers, https://github.com/whatwg/dom/issues/289 prompted me to look at document.createEvent again today, and it became apparent that new event interfaces were still being automatically supported","payload":{"headers":[{"name":"From","value":"\"'Philip Jägenstedt' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 04 Aug 2016 15:32:13 +0000"},{"name":"Subject","value":"[blink-dev] PSA: document.createEvent will no longer automatically support new event interfaces"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>"}]}},{"snippet":"Oops, the CL was https://codereview.chromium.org/2210253002/ On Thu, Aug 4, 2016 at 5:32 PM Philip Jägenstedt <foolip@google.com> wrote: Hi Blinkers, https://github.com/whatwg/dom/issues/289","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 04 Aug 2016 15:35:05 +0000"},{"name":"Subject","value":"[blink-dev] Re: PSA: document.createEvent will no longer automatically support new event interfaces"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>"}]}},{"snippet":"I wrote it in the issue already - all of the upcoming events should be removed before they reach stable (PaymentRequest was approved to ship in late June, but maybe others also have and I missed them).","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 4 Aug 2016 18:47:56 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: document.createEvent will no longer automatically support new event interfaces"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"}]}},{"snippet":"https://codereview.chromium.org/2216593002/ is already in the CQ for that. On Thu, Aug 4, 2016 at 5:48 PM PhistucK <phistuck@gmail.com> wrote: I wrote it in the issue already - all of the","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 04 Aug 2016 21:35:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: document.createEvent will no longer automatically support new event interfaces"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, August 3: Recent updates: We're continuing our --isolate-extensions launch trial on Dev and Canary channels, and we're preparing to enable","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 15:41:53 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, August 3, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Bug Triage Back down to 1 unconfirmed Overall holding steady Josh has baton for another week Blob refactor patch - dmurph Up and documented Working on tests for memory controller Important Storage V2 -","payload":{"headers":[{"name":"From","value":"\"'Tony Jin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 03 Aug 2016 21:12:21 +0000"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status: 8/2/16"},{"name":"To","value":"chrome-owp-storage <chrome-owp-storage@google.com>, blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"# Contact emails mkwst@chromium.org # Spec https://heycam.github.io/webidl/#SecureContext # Summary The 'SecureContext' WebIDL attribute controls the exposure of a given interface, method,","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 12:45:02 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"Will this by itself result in any web exposed changes, eg, are you going to convert some existing attribute to use [SecureContext] resulting in a slight change in behavior? If it's only about","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 03 Aug 2016 14:59:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"I do intend to move one or two things (Credential Management API, for instance) behind this attribute, but I planned to send those as a separate intent. This intent is just for the infrastructure","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 17:13:34 +0200"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"I see. Elliott, have you written somewhere about context creation performance concerns? It seems like the kind of thing that would become very concrete (and measurable) in a code review. On Wed, Aug 3,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 03 Aug 2016 15:20:51 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"peria@ is looking into the context creation performance with V8 team. You can find detailed numbers in this sheet. WindowProxy::initialize takes 1.6 ms on high-end Linux. (We speeded it up by 75% in Q2","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 00:24:44 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Hitoshi Yoshida <peria@chromium.org>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"But one v8::Context consumes about 200 KB (when I measured a couple of months ago). On Thu, Aug 4, 2016 at 12:24 AM, Kentaro Hara <haraken@chromium.org> wrote: peria@ is looking into the context","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 00:28:49 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Hitoshi Yoshida <peria@chromium.org>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"Is this intent blocked on API owner feedback? On Wednesday, August 3, 2016 at 3:45:29 AM UTC-7, Mike West wrote: # Contact emails mk...@chromium.org # Spec https://heycam.github.io/webidl/#","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 16:21:24 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"esprehn@chromium.org, wilander@apple.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."}]}},{"snippet":"See also the tracking bug here: https://bugs.chromium.org/p/chromium/issues/detail?id=588893 We definitely need to be careful here, there's work going on to snapshot the Document and Window as well","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 16:27:32 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>, John Wilander <wilander@apple.com>"}]}},{"snippet":"FYI: The OriginTrail for DurableStorage makes creating iframes 18% slower. I think we need to fix this before doing SecureContext or more OriginTrials: https://bugs.chromium.org/p/chromium/issues/","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 17 Aug 2016 13:10:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: The `[SecureContext]` WebIDL attribute."},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>, John Wilander <wilander@apple.com>"}]}}]},{"messages":[{"snippet":"This probably should not be. Discuss. https://groups.google.com/a/chromium.org/d/topic/blink-dev/I3FhKqtui_k/discussion https://groups.google.com/a/chromium.org/d/topic/blink-dev/N0HybdIpKBs/discussion","payload":{"headers":[{"name":"Date","value":"Tue, 2 Aug 2016 09:21:07 -0700 (PDT)"},{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Two Recent Intents Link to the OWP Launch Bug"}]}},{"snippet":"+harkness The Budget API's Intent to Implement should probably link to crbug.com/617971. Thanks, Peter On Tue, Aug 2, 2016 at 5:21 PM, 'Joe Medley' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 17:23:23 +0100"},{"name":"Subject","value":"Re: [blink-dev] Two Recent Intents Link to the OWP Launch Bug"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"Yup, copy/paste fail apparently. Budget API Intent to Implement should link to crbug.com/617971 as Peter Noted. On Tue, Aug 2, 2016 at 5:23 PM, Peter Beverloo <peter@chromium.org> wrote: +","payload":{"headers":[{"name":"From","value":"\"'Jen Harkness' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 17:30:28 +0100"},{"name":"Subject","value":"Re: [blink-dev] Two Recent Intents Link to the OWP Launch Bug"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, blink-dev <blink-dev@chromium.org>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"Can you reply to that thread for historical purposes too? :) On Aug 2, 2016 9:30 AM, "'Jen Harkness' via blink-dev" <blink-dev@chromium.org> wrote: Yup, copy/paste fail","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 20:00:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Two Recent Intents Link to the OWP Launch Bug"},{"name":"To","value":"Jen Harkness <harkness@google.com>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Peter Beverloo <peter@chromium.org>, Jennifer Harkness <harkness@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 16:05:35 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi As we're discussing in the other thread, it's been a while since we started the coding style assimilation project. Dana and Daniel have made amazing progress to improve the conversion script","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 14:37:51 +0900"},{"name":"Subject","value":"[blink-dev] Call for 20% contributors to the coding style project"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender Intent to Description Decision 7/18/2016 Brandon Jones Implement and ship Gamepad API updates < LGTM","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 19:31:10 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"It's early in the quarter, so please take some time to review how triage is going for the components you contribute to. If you need help, please reach out to me. For some guidance, here are some","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 14:29:26 -0700"},{"name":"Subject","value":"[blink-dev] Q3 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails harkness@chromium.org, peter@chromium.org Spec https://beverloo.github.io/budget-api/ Summary This implements an API that exposes a budget with which authors can determine their","payload":{"headers":[{"name":"From","value":"\"'Jen Harkness' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 13:07:12 +0100"},{"name":"Subject","value":"[blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Looks exciting! I know this is a complex and contentious space, but it's also of critical importance to getting the web platform closer to matching the capabilities of native mobile platforms","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 11:13:44 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"Jen Harkness <harkness@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Peter Beverloo <peter@chromium.org>"}]}},{"snippet":"I'm glad you're excited! Doing this in a way that benefits users is definitely my number one concern, but I think we can do that and at the same time enhance the platform. In terms of","payload":{"headers":[{"name":"From","value":"\"'Jen Harkness' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 16:46:02 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Peter Beverloo <peter@chromium.org>"}]}},{"snippet":"Sounds great, thank you! On Mon, Aug 1, 2016 at 11:46 AM, Jen Harkness <harkness@google.com> wrote: I'm glad you're excited! Doing this in a way that benefits users is definitely my","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 12:44:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"Jen Harkness <harkness@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Peter Beverloo <peter@chromium.org>"}]}},{"snippet":"There's a mistake in the original Intent, the bug linked should be crbug.com/617971. The document is on the way! On Mon, Aug 1, 2016 at 5:44 PM, Rick Byers <rbyers@chromium.org> wrote: Sounds","payload":{"headers":[{"name":"From","value":"\"'Jen Harkness' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 12:53:43 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Peter Beverloo <peter@chromium.org>"}]}},{"snippet":"Document is now posted at https://github.com/beverloo/budget-api/blob/gh-pages/BackgroundOperationComparison.md On Wed, Aug 3, 2016 at 12:53 PM, Jen Harkness <harkness@google.com> wrote:","payload":{"headers":[{"name":"From","value":"\"'Jen Harkness' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 14:10:14 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: Budget API"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Peter Beverloo <peter@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-08-01 I added yellow background to cells which has 10+ unconfirmed/untriaged. I wanted to add it to all of non-zero unconfirmed/untriaged cells, but there were too many such","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 08:35:12 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-08-01"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Do we have any testing infrastructure that can test mouse events (as perceived by layout tests) while the system cursor moves, moves out of the window, and then re-enters in a different location?","payload":{"headers":[{"name":"From","value":"Vincent Scheib <scheib@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 20:01:45 -0700"},{"name":"Subject","value":"[blink-dev] Testing mouse cursor moving out of window and back"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think eventSender can do that. Just use negative coordinates to be outside the window? On Jul 29, 2016 8:02 PM, "Vincent Scheib" <scheib@chromium.org> wrote: Do we have any testing","payload":{"headers":[{"name":"Date","value":"Fri, 29 Jul 2016 20:24:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Testing mouse cursor moving out of window and back"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Vincent Scheib <scheib@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, eventSender should be able to send blink synthetic input of any form chromium does. Occasionally we find some special case that's missing, but it's easy to add. But if you need to hit","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sat, 30 Jul 2016 01:43:53 -0400"},{"name":"Subject","value":"Re: [blink-dev] Testing mouse cursor moving out of window and back"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Vincent Scheib <scheib@chromium.org>, blink-dev <blink-dev@chromium.org>, input-dev <input-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Does there exist a JSON parser that can be used from Blink code (outside of v8) that will return a blink::JSONValue? I'm hoping to find such a thing so that I can parse and store HTTP header values","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 14:35:37 -0400"},{"name":"Subject","value":"[blink-dev] JSON parser in Blink?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, this looks ugly... On Fri, Jul 29, 2016 at 8:35 PM, Ian Clelland <iclelland@chromium.org> wrote: Does there exist a JSON parser that can be used from Blink code (outside of v8) that will","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 21:10:19 +0200"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 3:10 PM, Kentaro Hara <haraken@chromium.org> wrote: Yeah, this looks ugly... On Fri, Jul 29, 2016 at 8:35 PM, Ian Clelland <iclelland@chromium.org> wrote: Does there","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 15:30:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 9:30 PM, Ian Clelland <iclelland@chromium.org> wrote: On Fri, Jul 29, 2016 at 3:10 PM, Kentaro Hara <haraken@chromium.org> wrote: Yeah, this looks ugly... On Fri,","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 21:39:57 +0200"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How about letting JSONValue be a wrapper of base::Value? FYI the history of Source/platform/JSONValues: it was split from devtools' Source/inspector/InspectorValues in https://chromiumcodereview.","payload":{"headers":[{"name":"From","value":"Xianzhu Wang <wangxianzhu@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 12:54:41 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't want to allow base::Value even by wrapper in core. It's terribly inefficient because it uses std::string and maps and can't share any of the keys or hashes. Accessing the values","payload":{"headers":[{"name":"Date","value":"Fri, 29 Jul 2016 13:18:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Xianzhu Wang <wangxianzhu@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ian Clelland <iclelland@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 4:18 PM, Elliott Sprehn <esprehn@chromium.org> wrote: I don't want to allow base::Value even by wrapper in core. It's terribly inefficient because it uses std::","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 16:33:44 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 1:18 PM, Elliott Sprehn <esprehn@chromium.org> wrote: I don't want to allow base::Value even by wrapper in core. It's terribly inefficient because it uses std::","payload":{"headers":[{"name":"From","value":"Xianzhu Wang <wangxianzhu@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 13:36:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ian Clelland <iclelland@chromium.org>"}]}},{"snippet":"Relationship between the JSON code in inspector and blink platform: inspector blink platform ========= ============== InspectorValues (none) | \\ JSONParser ---------- JSONValues 17118009 in 2013 |","payload":{"headers":[{"name":"From","value":"Xianzhu Wang <wangxianzhu@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 13:48:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ian Clelland <iclelland@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 1:33 PM, Ian Clelland <iclelland@chromium.org> wrote: On Fri, Jul 29, 2016 at 4:18 PM, Elliott Sprehn <esprehn@chromium.org> wrote: I don't want to allow base::","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 13:53:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 10:53 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Fri, Jul 29, 2016 at 1:33 PM, Ian Clelland <iclelland@chromium.org> wrote: On Fri, Jul 29, 2016 at 4:18 PM,","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 22:57:19 +0200"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Inspector parser used to produce JSONValues before, so if you copy it and replace protocol::Value with JSONValue and String16 with WTF::String, it should just work. - Dmitry On Fri, Jul 29, 2016 at 1:","payload":{"headers":[{"name":"From","value":"Dmitry Gozman <dgozman@chromium.org>"},{"name":"Date","value":"Sat, 30 Jul 2016 12:25:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Ian Clelland <iclelland@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is what that proposal looks like in practice: https://codereview.chromium.org/2205933002 (I don't mind that solution, and I'm tentatively proceeding with it locally) it looks like blink::","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 14:52:24 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Dmitry Gozman <dgozman@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Aug 2, 2016 at 11:52 AM, Ian Clelland <iclelland@chromium.org> wrote: This is what that proposal looks like in practice: https://codereview.chromium.org/2205933002 (I don't mind that","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 12:00:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't know; it looks like they were intended to be changed to OwnPtrs (https://codereview.chromium.org/1728873002) but that last step never happened. pfeldman may have more context here; it looks","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 15:21:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>, Pavel Feldman <pfeldman@google.com>"}]}},{"snippet":"Switch to STL (eg unique_ptr, std::map) happend to facilitate integration with non-Blink clients (eg Node now includes the inspector). Ultimately, the goal is to move v8_inspector to V8. On Tue, Aug 2,","payload":{"headers":[{"name":"From","value":"\"'Eugene Ostroukhov' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 02 Aug 2016 19:25:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>, Pavel Feldman <pfeldman@google.com>"}]}},{"snippet":"So, the inspector parser needs to work with STL values, and not WTF. I suppose if it's moving out entirely, then it doesn't make sense to try to force it back into Source/platform. I've","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 10:46:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Eugene Ostroukhov <eostroukhov@google.com>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>, Pavel Feldman <pfeldman@google.com>"}]}},{"snippet":"Missed this thread, let me try to comment on that. - Inspector has the only native JSON parser in Blink (platform/inspector_protocol) that is being moved into v8, consider it gone. - platform/","payload":{"headers":[{"name":"From","value":"\"'Pavel Feldman' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 08:08:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Eugene Ostroukhov <eostroukhov@google.com>, Elliott Sprehn <esprehn@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, Pavel -- I appreciate the context and insight there. On Thu, Aug 4, 2016 at 11:08 AM, Pavel Feldman <pfeldman@google.com> wrote: Missed this thread, let me try to comment on that. -","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 12:49:55 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Pavel Feldman <pfeldman@google.com>"},{"name":"Cc","value":"Eugene Ostroukhov <eostroukhov@google.com>, Elliott Sprehn <esprehn@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Aug 4, 2016 at 9:49 AM, Ian Clelland <iclelland@chromium.org> wrote: Thanks, Pavel -- I appreciate the context and insight there. On Thu, Aug 4, 2016 at 11:08 AM, Pavel Feldman <","payload":{"headers":[{"name":"From","value":"\"'Pavel Feldman' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 10:24:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Eugene Ostroukhov <eostroukhov@google.com>, Elliott Sprehn <esprehn@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Aug 4, 2016 at 1:24 PM, Pavel Feldman <pfeldman@google.com> wrote: On Thu, Aug 4, 2016 at 9:49 AM, Ian Clelland <iclelland@chromium.org> wrote: Thanks, Pavel -- I appreciate the","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Thu, 4 Aug 2016 23:39:02 -0400"},{"name":"Subject","value":"Re: [blink-dev] JSON parser in Blink?"},{"name":"To","value":"Pavel Feldman <pfeldman@google.com>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Eugene Ostroukhov <eostroukhov@google.com>, Elliott Sprehn <esprehn@chromium.org>, Dmitry Gozman <dgozman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More discussion can be found on loading-dev@ Highlights: Finalizing Q3 OKR Time-to-first-meaningful-paint UMA is","payload":{"headers":[{"name":"From","value":"\"'Kouhei Ueno' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 10:08:24 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (Jul 1 - Jul 22)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"+bcc blink-dev This lgtm to ship! A few questions/comments below. On Thu, Jul 28, 2016 at 12:03 PM, Caitlin Potter <caitp@igalia.com> wrote: Object.getOwnPropertyDescriptors() has been","payload":{"headers":[{"name":"From","value":"Adam Klein <adamk@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 12:23:39 -0700"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Ship: Object.getOwnPropertyDescriptors()"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"}]}}]},{"messages":[{"snippet":"Implemented behind a flag in M52, I propose we ship these in M54 ( https://codereview.chromium.org/2184223004/ ) Contact emails sigbjornf@opera.com Spec https://dom.spec.whatwg.org/#childnode https://","payload":{"headers":[{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"Date","value":"Thu, 28 Jul 2016 09:50:47 +0200"}]}},{"snippet":"LGTM1 On Thu, Jul 28, 2016 at 4:50 PM, Sigbjorn Finne <sigbjornf@opera.com> wrote: Implemented behind a flag in M52, I propose we ship these in M54 ( https://codereview.chromium.org/2184223004/ )","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 16:57:21 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"To","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Thu, Jul 28, 2016 at 12:57 AM, TAMURA, Kent <tkent@chromium.org> wrote: LGTM1 On Thu, Jul 28, 2016 at 4:50 PM, Sigbjorn Finne <sigbjornf@opera.com> wrote: Implemented behind a flag","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 08:00:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Sigbjorn Finne <sigbjornf@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 28, 2016 at 10:50 AM, Sigbjorn Finne <sigbjornf@opera.com> wrote: (Node implements both the ParentNode and ChildNode interfaces.) According to the specification, Node does not","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Jul 2016 18:46:05 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"To","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Den 7/28/2016 17:46, PhistucK skreiv: > On Thu, Jul 28, 2016 at 10:50 AM, Sigbjorn Finne <sigbjornf@opera.com> > wrote: > >> (Node implements both the ParentNode and ChildNode","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Date","value":"Thu, 28 Jul 2016 20:09:27 +0200"}]}},{"snippet":"LGTM3, yay! On Thu, Jul 28, 2016 at 11:09 AM Sigbjorn Finne <sigbjornf@opera.com> wrote: Den 7/28/2016 17:46, PhistucK skreiv: > On Thu, Jul 28, 2016 at 10:50 AM, Sigbjorn Finne <sigbjornf@","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 01:21:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM ParentNode + ChildNode method extras"},{"name":"To","value":"Sigbjorn Finne <sigbjornf@opera.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, July 27: Recent updates: We're continuing our --isolate-extensions launch trial on Dev and Canary channels, and we're preparing to enable","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 16:44:40 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, July 27, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Today I updated my browser to chrome 52 and deployed instances to my application which uses application cache to download and cache latest Javascript code with the use of manifest file, stopped","payload":{"headers":[{"name":"Date","value":"Wed, 27 Jul 2016 12:47:26 -0700 (PDT)"},{"name":"From","value":"rahultiwari.iet@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Application cache is deprecated or completely removed from chrome 52."}]}},{"snippet":"Are you using app cache on an HTTP URL? In that case, we've disabled the caching functionality, see https://www.chromestatus.com/features/5714236168732672 The solution would be to migrate to HTTPS.","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 06:57:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] Application cache is deprecated or completely removed from chrome 52."},{"name":"To","value":"rahultiwari.iet@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, but looks like the issue is that while Chrome may discard the application cache manifest, it still serves responses from the application cache. On an HTTP URL, which does sound like a bug, since","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Jul 2016 10:35:28 +0300"},{"name":"Subject","value":"Re: [blink-dev] Application cache is deprecated or completely removed from chrome 52."},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"rahultiwari.iet@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"can you file a bug for that please? On Thu, Jul 28, 2016 at 9:36 AM PhistucK <phistuck@gmail.com> wrote: Yes, but looks like the issue is that while Chrome may discard the application cache","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 08:47:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] Application cache is deprecated or completely removed from chrome 52."},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"rahultiwari.iet@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The issue which I am observing is that chrome downloading the files mentioned in manifest file but it fails to update in application cache. Hence whenever I reload my page it serves old file from","payload":{"headers":[{"name":"Date","value":"Thu, 28 Jul 2016 06:14:36 -0700 (PDT)"},{"name":"From","value":"rahultiwari.iet@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"rahultiwari.iet@gmail.com"},{"name":"Subject","value":"[blink-dev] Re: Application cache is deprecated or completely removed from chrome 52."}]}},{"snippet":"Again, please, file an issue at crbug.com with all of the details and it will be investigated. ☆PhistucK On Thu, Jul 28, 2016 at 4:14 PM, <rahultiwari.iet@gmail.com> wrote: The issue which I am","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Jul 2016 16:44:53 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Application cache is deprecated or completely removed from chrome 52."},{"name":"To","value":"Rahul Tiwari <rahultiwari.iet@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"This is a follow up to https://groups.google.com/a/chromium.org/d/msg/blink-dev/VhYxkRlfQng/EXRHD7A5BQAJ There is now public support from Microsoft (there is a Edge Platform Status Entry now) as we","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 20:01:16 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Given the discussion today, I agree this is ready to ship. But I'll abstain from casting my vote since I'm the one that wrote the spec for this feature. Although there is public support from","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 21:44:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ted Dinklocker <ted.dinklocker@microsoft.com>"}]}},{"snippet":"LGTM1. On Tue, Jul 26, 2016 at 9:45 PM Rick Byers <rbyers@chromium.org> wrote: Given the discussion today, I agree this is ready to ship. But I'll abstain from casting my vote since I'm","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 04:47:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ted Dinklocker <ted.dinklocker@microsoft.com>"}]}},{"snippet":"LGTM2 On Tue, Jul 26, 2016 at 9:47 PM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM1. On Tue, Jul 26, 2016 at 9:45 PM Rick Byers <rbyers@chromium.org> wrote: Given the discussion","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 08:10:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>, Ted Dinklocker <ted.dinklocker@microsoft.com>"}]}},{"snippet":"LGTM3 On Wed, Jul 27, 2016 at 8:11 AM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On Tue, Jul 26, 2016 at 9:47 PM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM1. On Tue, Jul","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 01:57:54 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>, Ted Dinklocker <ted.dinklocker@microsoft.com>"}]}}]},{"messages":[{"snippet":"I noticed Firefox doesn't process javascript: iframe src URLs synchronously; Blink does (trace forward and backward from HTMLFrameElementBase::openURL.) So something like this: <!DOCTYPE html","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 10:55:55 +0900"},{"name":"Subject","value":"[blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Kouhei Ueno <kouhei@chromium.org>"}]}},{"snippet":"FWIW, Edge seems to have the same behavior as Firefox. I think we should try and see if we can make a similar change in Blink. Daniel On Wed, Jul 27, 2016 at 10:55 AM Dominic Cooney <dominicc@","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:15:49 +0000"},{"name":"Subject","value":"[blink-dev] Re: Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Dominic Cooney <dominicc@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Kouhei Ueno <kouhei@chromium.org>"}]}},{"snippet":"+1 to follow Firefox and Edge. Blink behavior is a food of ClusterFuzz. 2016年7月27日(水) 11:16 Daniel Cheng <dcheng@chromium.org>: FWIW, Edge seems to have the same behavior as Firefox. I think we","payload":{"headers":[{"name":"From","value":"\"'Yoshifumi Inoue' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:28:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, Dominic Cooney <dominicc@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Kouhei Ueno <kouhei@chromium.org>"}]}},{"snippet":"+1 Yesterday Yoav made a similar change to load data uri images asynchronously in https://crrev.com/d0c9ac3bf5bb4843c2c189a72e7b6c39e6743831. On Tue, Jul 26, 2016 at 7:28 PM, 'Yoshifumi Inoue'","payload":{"headers":[{"name":"From","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 20:07:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Yoshifumi Inoue <yosin@google.com>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Dominic Cooney <dominicc@chromium.org>, blink-dev <blink-dev@chromium.org>, Kouhei Ueno <kouhei@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Let's try it. At one point it made the world catch fire due to code that special cases Firefox vs WebKit (ex. Closure, a bunch of google3)... But if Edge is getting away with it maybe we can too. :","payload":{"headers":[{"name":"Date","value":"Wed, 27 Jul 2016 01:21:56 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Cc","value":"Dominic Cooney <dominicc@chromium.org>, dcheng@chromium.org, Kouhei Ueno <kouhei@chromium.org>, Yoav Weiss <yoav@yoav.ws>, blink-dev <blink-dev@chromium.org>, Yoshifumi Inoue <yosin@google.com>"}]}},{"snippet":"On Jul 26, 2016 9:56 PM, "Dominic Cooney" <dominicc@chromium.org> wrote: > > I noticed Firefox doesn't process javascript: iframe src URLs synchronously; Blink does (trace","payload":{"headers":[{"name":"Date","value":"Wed, 27 Jul 2016 01:25:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Cc","value":"kouhei@chromium.org, dcheng@chromium.org, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 27, 2016 at 2:25 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Jul 26, 2016 9:56 PM, "Dominic Cooney" <dominicc@chromium.org> wrote: > > I noticed Firefox","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 14:46:20 +0900"},{"name":"Subject","value":"Re: [blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kouhei Ueno <kouhei@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+1 I think this change allows us to narrow down problem space. This is the only JS hook I'm aware of that's invoked on each parserAppendChild. Parser may invoke multiple parserAppendChild for a","payload":{"headers":[{"name":"From","value":"\"'Kouhei Ueno' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 14:56:22 +0900"},{"name":"Subject","value":"Re: [blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This whole thread is amazing. Thank you for digging into this, Dominic. :DG< On Tue, Jul 26, 2016 at 10:56 PM 'Kouhei Ueno' via blink-dev <blink-dev@chromium.org> wrote: +1 I think","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 15:25:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Kouhei Ueno <kouhei@google.com>, Dominic Cooney <dominicc@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 28, 2016 at 12:25 AM, Dimitri Glazkov <dglazkov@chromium.org> wrote: This whole thread is amazing. Thank you for digging into this, Dominic. :DG< Thank you. Credit due also to","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 11:37:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Has anyone tried making src=\"javascript:...\" iframes load asynchronously?"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Kouhei Ueno <kouhei@google.com>, Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, One of the options suggested to my team for a feature we're implementing was called 'background pages', supposed used by blink to help render/provide necessary resources for certain","payload":{"headers":[{"name":"Date","value":"Tue, 26 Jul 2016 16:08:28 -0700 (PDT)"},{"name":"From","value":"Cathy <chili@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Background pages"}]}},{"snippet":"There's just the extensions feature called background pages. What is the feature you're building? Is there a design doc? On Jul 26, 2016 7:08 PM, "Cathy" <chili@chromium.org>","payload":{"headers":[{"name":"Date","value":"Tue, 26 Jul 2016 16:13:28 -0700"},{"name":"Subject","value":"Re: [blink-dev] Background pages"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Cathy Li <chili@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Bug triage Currently looks like we're holding steady but actually making significant progress Next week should have a lot of improvements Did a pretty comprehensive roundup of Cache Storage bugs","payload":{"headers":[{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 14:32:23 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage weekly status - 7/26/16"},{"name":"To","value":"chrome-owp-storage <chrome-owp-storage@google.com>"}]}}]},{"messages":[{"snippet":"tl;dr: Constants in C++ which are generated from IDL files will look like kConstantName rather than CONSTANT_NAME. I'm going to be landing a large (~1600 loc) CL[1] which is changing the names of","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 16:11:39 -0400"},{"name":"Subject","value":"PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"Makes sense, but [Reflect] is a bit of a misnomer for constants, its typical use is in HTML where "Some IDL attributes are defined to reflect a particular content attribute." It looks like","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:25:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>, blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"That's interesting -- the documentation (Source/bindings/IDLExtendedAttributes.md) mentions that [Reflect] is allowed on constants, and then proceeds to define its semantics on attributes only. (Is","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 22:43:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"I think this change is reasonable. Google C++ style recommends kConstnatName for enum. https://google.github.io/styleguide/cppguide.html#Enumerator_Names However, 'New Blink Style Guide' says","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 28 Jul 2016 08:52:53 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 27, 2016 at 4:52 PM, TAMURA, Kent <tkent@chromium.org> wrote: I think this change is reasonable. Google C++ style recommends kConstnatName for enum. https://google.github.io/","payload":{"headers":[{"name":"From","value":"danakj@chromium.org"},{"name":"Date","value":"Wed, 27 Jul 2016 16:54:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, Nico Weber <thakis@chromium.org>, blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"Yeah we decided on k prefixing. :) On Jul 27, 2016 7:54 PM, <danakj@chromium.org> wrote: On Wed, Jul 27, 2016 at 4:52 PM, TAMURA, Kent <tkent@chromium.org> wrote: I think this change is","payload":{"headers":[{"name":"Date","value":"Wed, 27 Jul 2016 20:26:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, Ian Clelland <iclelland@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Nico Weber <thakis@chromium.org>"}]}},{"snippet":"Looks like the doc is updated now -- although I don't have rights to see the revision history, so I can't tell when it was changed. The wording is now: "constants, whether defined as a","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 23:00:19 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Kent TAMURA <tkent@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, Ian Clelland <iclelland@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Nico Weber <thakis@chromium.org>"}]}},{"snippet":"With Dana and Elliott saying we agreed on this style, that's more than enough IMHO to indicate a (rough) consensus :-). So I'd say go ahead. Thanks for doing this! On Wed, Jul 27, 2016 at 11:00","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 17:55:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Dana Jansens <danakj@chromium.org>, Kent TAMURA <tkent@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Nico Weber <thakis@chromium.org>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 5:55 PM, Rick Byers <rbyers@chromium.org> wrote: With Dana and Elliott saying we agreed on this style, that's more than enough IMHO to indicate a (rough) consensus :-)","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 19:25:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dana Jansens <danakj@chromium.org>, Kent TAMURA <tkent@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, everyone -- I'm considering this to be consensus enough, and sending this to the CQ now :) On Fri, Jul 29, 2016 at 7:25 PM, Nico Weber <thakis@chromium.org> wrote: On Fri, Jul 29,","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 10:40:46 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Changing generated C++ constants in Blink"},{"name":"To","value":"Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dana Jansens <danakj@chromium.org>, Kent TAMURA <tkent@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails dcheng@chromium.org Spec https://html.spec.whatwg.org/multipage/obsolete.html#external Summary window.external.IsSearchProviderInstalled and window.external.AddSearchProvider will both","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 07:47:22 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Tue, Jul 26, 2016 at 4:47 PM, Daniel Cheng <dcheng@chromium.org> wrote: Contact emails dcheng@chromium.org Spec https://html.spec.whatwg.org/multipage/obsolete.html#external Summary","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 17:33:51 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Jul 26, 2016 at 1:34 AM TAMURA, Kent <tkent@chromium.org> wrote: LGTM1 On Tue, Jul 26, 2016 at 4:47 PM, Daniel Cheng <dcheng@chromium.org> wrote: Contact emails dcheng@","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 15:43:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Btw, I forgot to mention in the initial email, but the one thing I'm a bit uncertain about is the mismatch between IE10 and the spec for IsSearchProviderInstalled: the spec says it should be a no-","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 15:46:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, Jul 26, 2016 at 8:46 AM, Daniel Cheng <dcheng@chromium.org> wrote: Btw, I forgot to mention in the initial email, but the one thing I'm a bit uncertain about is the mismatch","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 08:54:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jul 26, 2016 at 8:46 AM, Daniel Cheng <dcheng@chromium.org> wrote: Btw, I forgot to mention in the initial email, but the one thing I'm a bit uncertain about is the mismatch between","payload":{"headers":[{"name":"From","value":"John Abd-El-Malek <jam@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 10:10:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Daniel, I take it you'll try making it always return undefined per spec and revisit if that doesn't work out? Unless we have a reason to suspect that some path is less risky, then we should try","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:40:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"John Abd-El-Malek <jam@chromium.org>, Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, that's what the current CL (https://codereview.chromium.org/2177123003/) implements. I don't know how I'd measure "not working out" though. The argument for returning 2 is to","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:43:02 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, John Abd-El-Malek <jam@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Since the difference is so trivial, I'd say that if you learn of a single site that would have a better user experience by returning 2, then changing the spec to do the same would make sense. On","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 01 Aug 2016 10:13:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, John Abd-El-Malek <jam@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Daniel, Do you have some doubt about finishing this before the M54 feature freeze? Joe On Tuesday, July 26, 2016 at 12:47:41 AM UTC-7, Daniel Cheng wrote: Contact emails dch...@chromium.org Spec https:","payload":{"headers":[{"name":"Date","value":"Tue, 2 Aug 2016 08:55:56 -0700 (PDT)"},{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"}]}},{"snippet":"No. The patch is trivial and landed. The OWP launch bug needs to go through review though (which I'm not entirely sure how to trigger). Daniel On Tue, Aug 2, 2016 at 11:56 PM 'Joe Medley'","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 02 Aug 2016 16:22:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Joe Medley <jmedley@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm adding Chrome 54 to the status page. https://www.chromestatus.com/features/5672001305837568 Joe Medley | Technical Writer, Chrome DevRel | jmedley@google.com | 816-678-7195 If an API's not","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 14:35:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Align behavior of window.external.IsSearchProviderInstalled and window.external.AddSearchProvider with the spec"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 15:42:24 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I am planning to support <link rel=stylesheet href=..> in a shadow tree if it is connected. Until now, Blink has banned <link rel=stylesheet> in a shadow tree. See the standard discussion","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 04:16:43 +0000"},{"name":"Subject","value":"[blink-dev] [Web-Facing Change PSA]: Support <link rel=stylesheet> in a *connected* shadow tree"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev@chromium.org A group of us works part-time on improving the infrastructure instead of sheriffing. We meet once a month to give status updates. Ping me if you'd like join us instead","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 20:03:37 -0700"},{"name":"Subject","value":"[blink-dev] Blink Infra monthly meeting notes July 2016"},{"name":"To","value":"blink-infra@chromium.org"}]}}]},{"messages":[{"snippet":"Hi blink-dev, It's been a little ambiguous what's happening to our code style after the merge. There were discussions about Converging with Chromium Style (and revision 2) that ended over 6","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 11:56:46 +1000"},{"name":"Subject","value":"[blink-dev] Blink Code Style"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Nico Weber <thakis@chromium.org>, jyasskin@chromium.org"}]}},{"snippet":"On Mon, Jul 25, 2016 at 6:56 PM, Sasha Bermeister <sashab@chromium.org> wrote: Hi blink-dev, It's been a little ambiguous what's happening to our code style after the merge. There were","payload":{"headers":[{"name":"From","value":"danakj@chromium.org"},{"name":"Date","value":"Mon, 25 Jul 2016 19:16:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] Blink Code Style"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Nico Weber <thakis@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>"}]}},{"snippet":"We discussed this a bit at the last blink-on. There are (at least) two parts to this project. 1. Changing method cases etc like Dana says 2. Whitespace-only changes For 2, the major blocker was to come","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 19:04:00 -0400"},{"name":"Subject","value":"[blink-dev] Re: Blink Code Style"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>"}]}},{"snippet":">> It's been a little ambiguous what's happening to our code style after the >> merge. There were discussions about Converging with Chromium Style (and >> revision 2) that","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Mon, 1 Aug 2016 10:16:50 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Blink Code Style"},{"name":"To","value":"Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>"}]}},{"snippet":"I think we need to keep the current WebKit-based Blink style for implementations of web-exposed interfaces until the great reformatting, and it's ok to start using Chromium-based Blink style for","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 10:31:49 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Blink Code Style"},{"name":"To","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Cc","value":"Nico Weber <thakis@chromium.org>, Sasha Bermeister <sashab@chromium.org>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>"}]}},{"snippet":"I'd prefer not introducing any rule until we finish the conversion; ie, new code can use either the WebKit-based Blink style or the Chromium-based Blink style. If you're migrating code from","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 14:13:30 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Blink Code Style"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Emil A Eklund <eae@chromium.org>, Nico Weber <thakis@chromium.org>, Sasha Bermeister <sashab@chromium.org>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Jeffrey Yasskin <jyasskin@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender Intent to Description Decision 7/18/2016 Brandon Jones Implement and ship Gamepad API updates < LGTM","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 18:53:56 -0700"},{"name":"Subject","value":"[blink-dev] Last week in blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Sent from my iPhone","payload":{"headers":[{"name":"Subject","value":"[blink-dev] I"},{"name":"From","value":"Houman Bahrami <houman.aghdam@gmail.com>"},{"name":"Date","value":"Tue, 26 Jul 2016 04:04:41 +0430"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Stop spamming the group with incoherent messages and empty replies. ☆PhistucK On Tue, Jul 26, 2016 at 2:34 AM, Houman Bahrami <houman.aghdam@gmail.com> wrote: Sent from my iPhone -- You received","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 26 Jul 2016 22:21:26 +0300"},{"name":"Subject","value":"Re: [blink-dev] I"},{"name":"To","value":"Houman Bahrami <houman.aghdam@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"It is early in the quarter, so this is a great opportunity for teams to get a good handle on triage. Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q3: 877 Number of untriaged/","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 15:18:30 -0700"},{"name":"Subject","value":"[blink-dev] Q3 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Highlights: 15 MB reduction on Tumblur!! Memory: (hajimehoshi) Reduced a significant amount of memory from image-heavy websites (15 MB reduction on Tumblur!!). He removed duplicated encoded images","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 20:08:41 +0200"},{"name":"Subject","value":"[blink-dev] Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Wow, that 15 MB change is huge! Congratulations to the team and hajimehoshi for achieving that! Am Montag, 25. Juli 2016 20:09:23 UTC+2 schrieb Kentaro Hara: Hi Highlights: 15 MB reduction on Tumblur!!","payload":{"headers":[{"name":"Date","value":"Tue, 26 Jul 2016 02:13:36 -0700 (PDT)"},{"name":"From","value":"Jacob G <kurtextrem@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Platform Architecture team snippet"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-07-25 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10128 (-97) 188 (-4) 694 (-58) 403 (-32) 90 Jul 2009 Uncategorized 9 (-16) 0 0 1 (-1) 1 4 days","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 08:54:09 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-07-25"},{"name":"To","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Let's get under 10k this week! On Jul 24, 2016 19:54, "TAMURA, Kent" <tkent@chromium.org> wrote: Blink bug status as of 2016-07-25 Component Open Unconfirmed Untriaged Pri-0/1 No","payload":{"headers":[{"name":"Date","value":"Sun, 24 Jul 2016 19:58:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-07-25"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"Kent Tamura <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"The WebAudio spec is proposing to add a dictionary the the decodeAudioData dictionary. The IDL defintionis are basically going to be Promise<AudioBuffer> decodeAudioData(ArrayBuffer audioData,","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 14:00:28 -0700"},{"name":"Subject","value":"[blink-dev] WebIDL method ordering dependency?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 22, 2016 at 2:00 PM, 'Raymond Toy' via blink-dev <blink-dev@chromium.org> wrote: The WebAudio spec is proposing to add a dictionary the the decodeAudioData dictionary. The IDL","payload":{"headers":[{"name":"From","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 15:19:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] WebIDL method ordering dependency?"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 7/22/16 6:19 PM, Joshua Bell wrote: > This IDL seems problematic. Indeed. A spec-compliant IDL parser should error out on it... > (Callback functions and dictionaries are not distinguishable -","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: WebIDL method ordering dependency?"},{"name":"To","value":"Joshua Bell <jsbell@chromium.org>, Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Fri, 22 Jul 2016 20:49:03 -0400"}]}},{"snippet":"+platform-architecture-dev On Jul 22, 2016 8:49 PM, "Boris Zbarsky" <bzbarsky@mit.edu> wrote: On 7/22/16 6:19 PM, Joshua Bell wrote: > This IDL seems problematic. Indeed. A spec-","payload":{"headers":[{"name":"Date","value":"Sat, 23 Jul 2016 03:28:11 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: WebIDL method ordering dependency?"},{"name":"From","value":"\"'Elliott Sprehn' via platform-architecture-dev\" <platform-architecture-dev@chromium.org>"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>, platform-architecture-dev <platform-architecture-dev@chromium.org>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@chromium.org>"}]}},{"snippet":"+bashi +yukishiino On Sat, Jul 23, 2016 at 9:28 AM, 'Elliott Sprehn' via platform-architecture-dev <platform-architecture-dev@chromium.org> wrote: +platform-architecture-dev On Jul 22,","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Sat, 23 Jul 2016 19:07:06 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: WebIDL method ordering dependency?"},{"name":"To","value":"Elliott Sprehn <esprehn@google.com>, \"Kenichi Ishibashi (via Google Docs)\" <bashi@chromium.org>, Yuki Shiino <yukishiino@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, platform-architecture-dev <platform-architecture-dev@chromium.org>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@chromium.org>"}]}},{"snippet":"Nothing to add. callback interface vs dictionary is not distinguishable, and callback function vs dictionary is not distinguishable, either. It's also true that Blink doesn't support callback","payload":{"headers":[{"name":"From","value":"Yuki Shiino <yukishiino@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 18:10:44 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: WebIDL method ordering dependency?"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@google.com>, \"Kenichi Ishibashi (via Google Docs)\" <bashi@chromium.org>, Yuki Shiino <yukishiino@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, platform-architecture-dev <platform-architecture-dev@chromium.org>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@chromium.org>"}]}},{"snippet":"Thanks for everyone's comments. In summary, I take it that this pattern won't work with the current IDL specification (unless https://www.w3.org/Bugs/Public/show_bug.cgi?id=21640 is revisited).","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via platform-architecture-dev\" <platform-architecture-dev@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 10:13:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: WebIDL method ordering dependency?"},{"name":"To","value":"Yuki Shiino <yukishiino@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Elliott Sprehn <esprehn@google.com>, \"Kenichi Ishibashi (via Google Docs)\" <bashi@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, platform-architecture-dev <platform-architecture-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, It's official! BlinkOn 7 will be January 31 - February 1 in Mountain View, CA. You can go ahead and book flights if you'd like. As the event gets closer, we'll share more","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 16:38:52 -0700"},{"name":"Subject","value":"[blink-dev] Save the date: BlinkOn 7 is January 31 - February 1"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"If you don't read Monorail issue notification emails, you can stop reading now. The format of the From-line in Monorail notification emails is being changed to allow Gmail to better display the","payload":{"headers":[{"name":"From","value":"Jason Robbins <jrobbins@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 15:17:24 -0700"},{"name":"Subject","value":"[blink-dev] [PSA] Improvement to Monorail email notifications From-line"},{"name":"To","value":"Chromium-dev <Chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"Thanks, Jason! It was really bothersome to only see one user for all updates, so this is great. One small nit: Can we not capitalize the username? For whatever reason, seeing Jrobbins instead of","payload":{"headers":[{"name":"Date","value":"Fri, 22 Jul 2016 09:51:50 -0700 (PDT)"},{"name":"From","value":"Devlin Cronin <rdevlin.cronin@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"Chromium-dev@chromium.org, blink-dev@chromium.org, infra-announce@chromium.org, jrobbins@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: [PSA] Improvement to Monorail email notifications From-line"}]}},{"snippet":"Thanks for this change! Could I also request to drop the "via Monorail" part of the sender name? That is just useless noise that takes up a lot of space. -Christian On Thu, Jul 21, 2016 at 6:","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 13:00:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] [PSA] Improvement to Monorail email notifications From-line"},{"name":"To","value":"Jason Robbins <jrobbins@chromium.org>"},{"name":"Cc","value":"Chromium-dev <Chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails mlamouri@chromium.org, zqzhang@chromium.org Spec https://fullscreen.spec.whatwg.org/#allowed-to-request-fullscreen Summary Allow web pages to request fullscreen while an orientation","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"zqzhang@chromium.org, foolip@chromium.org, alia@microsoft.com, xidorn@upsuper.org"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: request fullscreen on orientation change"},{"name":"Date","value":"Thu, 21 Jul 2016 20:46:08 +0100"}]}},{"snippet":"LGTM1 I was the one who brought up the bad frame issue. It could probably be avoided with a more declarative approach, but without a real implementation to prove it the risk is that the API is less","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 22:08:16 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: request fullscreen on orientation change"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev@chromium.org"},{"name":"Cc","value":"zqzhang@chromium.org, alia@microsoft.com, xidorn@upsuper.org"}]}},{"snippet":"LGTM2 On Thu, Jul 21, 2016 at 3:08 PM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM1 I was the one who brought up the bad frame issue. It could probably be avoided with a more declarative","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 15:46:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: request fullscreen on orientation change"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, zqzhang@chromium.org, Ali Alabbas <alia@microsoft.com>, xidorn@upsuper.org"}]}},{"snippet":"LGTM3. On Fri, Jul 22, 2016 at 7:46 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On Thu, Jul 21, 2016 at 3:08 PM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM1 I was the","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 11:14:37 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: request fullscreen on orientation change"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, zqzhang@chromium.org, Ali Alabbas <alia@microsoft.com>, xidorn@upsuper.org"}]}},{"snippet":"Cool! ChromeOS supports rotation, especially on convertible devices such as the ASUS Chromebook Flip. +bruthig who implemented the rotation animation there. On Thu, Jul 21, 2016 at 3:46 PM, Mounir","payload":{"headers":[{"name":"From","value":"Eugene Girard <girard@chromium.org>"},{"name":"Date","value":"Mon, 25 Jul 2016 13:00:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: request fullscreen on orientation change"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, zqzhang@chromium.org, foolip@chromium.org, alia@microsoft.com, xidorn@upsuper.org, bruthig@chromium.org, varkha@chromium.org"}]}}]},{"messages":[{"snippet":"Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec Primary eng (and PM) emails shanmuga.m@samsung.com Summary Deprecate and Remove the SVGViewSpec interface and currentView,","payload":{"headers":[{"name":"Date","value":"Wed, 20 Jul 2016 23:02:36 -0700 (PDT)"},{"name":"From","value":"Shanmuga Pandi M <shanmugapandi@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"}]}},{"snippet":"LGTM1 On Wed, Jul 20, 2016 at 11:02 PM, Shanmuga Pandi M <shanmugapandi@gmail.com> wrote: Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec Primary eng (and PM) emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 16:23:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"Shanmuga Pandi M <shanmugapandi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"currentView: https://www.chromestatus.com/metrics/feature/timeline/popularity/834 useCurrentView: https://www.chromestatus.com/metrics/feature/timeline/popularity/833 They are very low. LGTM2. On Fri,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 11:23:17 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Shanmuga Pandi M <shanmugapandi@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The SVGSVGElementFragmentSVGViewElement counter in SVGSVGElement::inheritViewAttributes is also relevant, measuring how often the view comes from an SVGViewElement. I suspect that removing currentView,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 03:27:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Shanmuga Pandi M <shanmugapandi@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"@Philip, This is the WIP patch. https://codereview.chromium.org/2163213007/ But as per the SVG spec "#svgView()" still supported. So we just need to remove only SVGViewSpec interface , I","payload":{"headers":[{"name":"Date","value":"Thu, 21 Jul 2016 21:21:32 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"tkent@chromium.org, chrishtr@chromium.org, shanmugapandi@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"}]}},{"snippet":"On Fri, Jul 22, 2016 at 5:27 AM, Philip Jägenstedt <foolip@chromium.org> wrote: The SVGSVGElementFragmentSVGViewElement counter in SVGSVGElement::inheritViewAttributes is also relevant, measuring","payload":{"headers":[{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Date","value":"Fri, 22 Jul 2016 10:04:47 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Shanmuga Pandi M <shanmugapandi@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is this blocked on API owner feedback? On Friday, July 22, 2016 at 1:04:51 AM UTC-7, Fredrik Söderquist wrote: On Fri, Jul 22, 2016 at 5:27 AM, Philip Jägenstedt <foo...@chromium.org> wrote: The","payload":{"headers":[{"name":"Date","value":"Tue, 26 Jul 2016 11:19:16 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"foolip@chromium.org, tkent@chromium.org, chrishtr@chromium.org, shanmugapandi@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"}]}},{"snippet":"Yes, I left it hanging, sorry. I'm trying to understand what group of things makes sense to remove together and the motivation for removing this from the SVG spec. I end up at https://www.w3.org/","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:18:08 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"dknox@google.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"tkent@chromium.org, chrishtr@chromium.org, shanmugapandi@gmail.com"}]}},{"snippet":"On Wed, Jul 27, 2016 at 4:18 AM, Philip Jägenstedt <foolip@chromium.org> wrote: Yes, I left it hanging, sorry. I'm trying to understand what group of things makes sense to remove together and","payload":{"headers":[{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Date","value":"Wed, 27 Jul 2016 20:31:57 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"dknox@google.com, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, shanmuga pandi <shanmugapandi@gmail.com>"}]}},{"snippet":"Even with the list of suggested simplification I was not sure about how much code it would actually amount to, so I tried applying Shanmuga's CL and then also ripping out SVGViewElement. AFAICT,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 03:06:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"dknox@google.com, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, shanmuga pandi <shanmugapandi@gmail.com>"}]}},{"snippet":"On Fri, Jul 29, 2016 at 5:06 AM, Philip Jägenstedt <foolip@chromium.org> wrote: Even with the list of suggested simplification I was not sure about how much code it would actually amount to, so I","payload":{"headers":[{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Date","value":"Fri, 29 Jul 2016 19:06:55 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Dru Knox <dknox@google.com>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, shanmuga pandi <shanmugapandi@gmail.com>"}]}},{"snippet":"OK, so given the state of currentView, useCurrentView and SVGViewSpec in Gecko and Edge and the usage, this removal is very likely safe compat-wise, and a win for interop if they're also removed in","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 20:25:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"Dru Knox <dknox@google.com>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, shanmuga pandi <shanmugapandi@gmail.com>"}]}},{"snippet":"Thanks for the discussion everyone. LGTM4 (Philip is apparently living in GF(2)+1 today). On Fri, Jul 29, 2016 at 4:25 PM, Philip Jägenstedt <foolip@chromium.org> wrote: OK, so given the state of","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 16:51:54 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"\"Fredrik Söderquist\" <fs@opera.com>, Dru Knox <dknox@google.com>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, shanmuga pandi <shanmugapandi@gmail.com>"}]}},{"snippet":"On Saturday, July 30, 2016 at 1:55:43 AM UTC+5:30, Philip Jägenstedt wrote: OK, so given the state of currentView, useCurrentView and SVGViewSpec in Gecko and Edge and the usage, this removal is very","payload":{"headers":[{"name":"Date","value":"Sun, 31 Jul 2016 22:49:39 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"fs@opera.com, dknox@google.com, tkent@chromium.org, chrishtr@chromium.org, shanmugapandi@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and Remove: currentView, useCurrentView and SVGViewSpec"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, July 20: Recent updates: We're continuing our --isolate-extensions launch trial on Dev and Canary channels, and we're preparing to enable","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 16:27:56 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, July 20, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team has been working on a design proposal for a new layout system for the past quarter and we're now ready to share it with the wider team. Code named LayoutNG it designed with","payload":{"headers":[{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 14:38:42 -0700"},{"name":"Subject","value":"[blink-dev] LayoutNG"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 20, 2016 at 2:38 PM, 'Emil A Eklund' via blink-dev <blink-dev@chromium.org> wrote: Code named LayoutNG Was this a deliberate reference to Mozilla's NGLayout? PK","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 15:17:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] LayoutNG"},{"name":"To","value":"Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 20, 2016 at 3:17 PM, Peter Kasting <pkasting@google.com> wrote: > On Wed, Jul 20, 2016 at 2:38 PM, 'Emil A Eklund' via blink-dev > <blink-dev@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 15:40:35 -0700"},{"name":"Subject","value":"Re: [blink-dev] LayoutNG"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"If you don't use Sublime Text you can stop reading. For those of you using SublimeClang as recommended by our docs, note that there has been a small change in order to make it work with more files.","payload":{"headers":[{"name":"From","value":"\"'Josh Karlin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 11:02:58 +0000"},{"name":"Subject","value":"[blink-dev] PSA: Sublime Text AutoComplete/Navigation on Linux configuration change"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(Fixing subject. Sorry, fat-fingered send on this.) On Wed, Jul 20, 2016 at 4:43 PM, Dominic Cooney <dominicc@chromium.org> wrote: HTML/DOM team biweekly snippet (July 4 - July 17) Shadow DOM (","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 17:55:53 +0900"},{"name":"Subject","value":"Re: [blink-dev] HTML/DOM team biweekly snippet (July 4 - July 17)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"HTML/DOM team biweekly snippet (July 4 - July 17) Shadow DOM (hayato, kochi) Web Standards (hayato@) Discussion: Should <link rel="stylesheet"> work inside shadow DOM? (hayato@) PR to","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 16:43:33 +0900"},{"name":"Subject","value":"[blink-dev]"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails hayato@chromium.org Spec https://dom.spec.whatwg.org/#dom-node-getrootnode Summary Node.getRootNode() is the new name for Node.rootNode [1]. Blink had shipped Node.rootNode, however, it","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 06:05:32 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This isn't just a rename, it's adding features at this same time with the options dictionary. Hopefully in the future we don't add features at the same time we fix name conflicts. :)","payload":{"headers":[{"name":"Date","value":"Wed, 20 Jul 2016 09:18:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, that's a good point. Sorry for not mentioning it. An optional parameter allows us to get the root's host's root's host's root's host's root, .... recursively, until it","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 01:18:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Wed, Jul 20, 2016 at 3:05 PM, Hayato Ito <hayato@chromium.org> wrote: Contact emails hayato@chromium.org Spec https://dom.spec.whatwg.org/#dom-node-getrootnode Summary Node.getRootNode()","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 10:45:06 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So if you're in the document composed: true always returns the document otherwise it returns the top of the subtree crossing shadow boundaries? On Jul 20, 2016 9:18 PM, "Hayato Ito" <","payload":{"headers":[{"name":"Date","value":"Wed, 20 Jul 2016 18:49:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes. If we are *in the document* (in a traditional meaning, now it is called *is connected* ), getRootNode({ composed: true }) can return the document in O(1). On Thu, Jul 21, 2016 at 10:49 AM Elliott","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Thu, 21 Jul 2016 02:32:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Elliott, do you have any concerns with the options? I've taken a quick look at the spec and it looks sane to me, so LGTM2. On Wed, Jul 20, 2016 at 7:32 PM Hayato Ito <hayato@chromium.org>","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 03:54:02 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 21, 2016 at 11:54 PM, Philip Jägenstedt <foolip@chromium.org> wrote: Elliott, do you have any concerns with the options? I've taken a quick look at the spec and it looks sane to","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 01:40:14 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Hayato Ito <hayato@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, in a case of "nodeWhichIsNotConnected.getRootNode({composed: true})", this is just to save people from writing a loop. I guess many frameworks have to write their own similar loop","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 06:28:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Thu, Jul 21, 2016 at 11:28 PM, Hayato Ito <hayato@chromium.org> wrote: Yeah, in a case of "nodeWhichIsNotConnected.getRootNode({composed: true})", this is just to save people","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 22 Jul 2016 08:18:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Node.getRootNode(options)"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"* OKRs - Please review - Aiming for 70%, trying to break KR's into specific steps + value added for accomplishing step * Triage - Crept up during no meetings week - cmumford taking the baton next *","payload":{"headers":[{"name":"Date","value":"Tue, 19 Jul 2016 14:28:05 -0700"},{"name":"Subject","value":"[blink-dev] Chrome OWP Storage weekly status - 7/19/16"},{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"chrome-owp-storage <chrome-owp-storage@google.com>"}]}}]},{"messages":[{"snippet":"tl;dr: https://groups.google.com/a/chromium.org/forum/#!forum/embedder-dev/join Last month was BlinkOn, and I met lots of people who are embedding Chromium to accomplish cool things. I'm one of the","payload":{"headers":[{"name":"From","value":"\"'Avi Drissman' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:00:39 -0400"},{"name":"Subject","value":"[blink-dev] New email list for Chromium embedders!"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Mmm... I do not see any "Join group" button (using my @gmail.com account). ☆PhistucK On Tue, Jul 19, 2016 at 11:00 PM, 'Avi Drissman' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 19 Jul 2016 23:05:40 +0300"},{"name":"Subject","value":"Re: [blink-dev] New email list for Chromium embedders!"},{"name":"To","value":"Avi Drissman <avi@google.com>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Could you add that group to https://www.chromium.org/developers/technical-discussion-groups? Thanks, -Nicholas On Tue, Jul 19, 2016 at 4:00 PM, 'Avi Drissman' via Chromium-dev <chromium-dev@","payload":{"headers":[{"name":"From","value":"Nicholas Bishop <nbishop@neverware.com>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:09:25 -0400"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] New email list for Chromium embedders!"},{"name":"To","value":"avi@google.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Fixed the permissions; try again. On Tue, Jul 19, 2016 at 4:05 PM, PhistucK <phistuck@gmail.com> wrote: Mmm... I do not see any "Join group" button (using my @gmail.com account). ☆","payload":{"headers":[{"name":"From","value":"\"'Avi Drissman' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:09:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] New email list for Chromium embedders!"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It works. Thank you! ☆PhistucK On Tue, Jul 19, 2016 at 11:09 PM, Avi Drissman <avi@google.com> wrote: Fixed the permissions; try again. On Tue, Jul 19, 2016 at 4:05 PM, PhistucK <phistuck@","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 19 Jul 2016 23:35:20 +0300"},{"name":"Subject","value":"Re: [blink-dev] New email list for Chromium embedders!"},{"name":"To","value":"Avi Drissman <avi@google.com>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails csharrison@chromium.org, igrigorik@chromium.org, ojan@chromium.org, yoav@yoav.ws Spec Rough draft summary and technical design. Summary This feature will allow authors to specify the","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 14:53:02 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Content Size Policy (name subject to change)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For anyone interested in following along, or if you'd like to contribute feedback or comments, please file them on the WICG repo: - https://github.com/WICG/content-size - https://github.com/WICG/","payload":{"headers":[{"name":"Date","value":"Tue, 19 Jul 2016 14:56:14 -0700 (PDT)"},{"name":"From","value":"igrigorik via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Content Size Policy (name subject to change)"}]}}]},{"messages":[{"snippet":"Blink's utility class WTF::TemporaryChange was the same as Chromium's base::AutoReset except for (1) the name and (2) accepting a non-const ref instead of a pointer. In the spirit of reducing","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 11:08:23 -0700"},{"name":"Subject","value":"[blink-dev] PSA: WTF::TemporaryChange is now WTF::AutoReset"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Input-dev is a web platform team focused on making touch (P1) and other forms of input (P2) awesome on the web. See our public page for more information. You can view our scored Q3 OKRs and scored Q2","payload":{"headers":[{"name":"From","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:46:05 +0000"},{"name":"Subject","value":"[blink-dev] Input-dev Q3 OKRs, and scored Q2 OKRs"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, input-dev <input-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Lot of websites disable the paste functionality in password boxes, hindering the use of password managers and strong passwords in general. This issue has been covered more in detail here - https://www.","payload":{"headers":[{"name":"Date","value":"Tue, 19 Jul 2016 10:37:03 -0700 (PDT)"},{"name":"From","value":"Inian Parameshwaran <inian1234@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intervention to prevent websites to disable paste functionality in password boxes"}]}},{"snippet":"+vabr Inian Parameshwaran <inian1234@gmail.com> schrieb am Di., 19. Juli 2016, 19:37: Lot of websites disable the paste functionality in password boxes, hindering the use of password managers and","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:57:29 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intervention to prevent websites to disable paste functionality in password boxes"},{"name":"To","value":"Inian Parameshwaran <inian1234@gmail.com>, blink-dev <blink-dev@chromium.org>, vabr@chromium.org"}]}}]},{"messages":[{"snippet":"Hi all, Now that we're back from no meetings week(s), here's what happened in Blink intents. Data from bit.ly/blinkintents. Date Sender Intent to Description Decision 6/22/2016 Niklas Enbom","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:00:32 -0700"},{"name":"Subject","value":"[blink-dev] Last 3 weeks in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:50:34 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"RefPtr.h says that RefPtr and PassRefPtr are referenced at http://webkit.org/coding/RefPtr.html, but that documentation is for WebKit and is now well out-of-date (WebKit now uses RefPtr&&","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 15:28:11 +1000"},{"name":"Subject","value":"[blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Hmm I swear using it like this wasn't allowed or was at least highly discouraged, I thought the plan w as to add a move constructor to RefPtr and then use std::move() at the call sites like we did","payload":{"headers":[{"name":"Date","value":"Mon, 18 Jul 2016 22:42:15 -0700"},{"name":"Subject","value":"[blink-dev] Re: Kill PassRefPtr and use RefPtr&& instead"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>, yutak@chromium.org"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, alancutter@chromium.org, blink-dev <blink-dev@chromium.org>, bugsnash@chromium.org"}]}},{"snippet":"Removing PassRefPtr is something I wanted to do next-ish since we have killed OwnPtr, so I appreciate if you can take that task! I left some comments in your doc. Also, the doc doesn't mention","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 14:54:23 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Note that the Google style guide doesn't allow rvalue reference arguments everywhere: it only allows them for universal forwarding, implementing move constructors, and implementing move assignment","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 06:06:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 3:06 PM, Daniel Cheng <dcheng@chromium.org> wrote: Note that the Google style guide doesn't allow rvalue reference arguments everywhere: it only allows them for","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 15:24:38 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Ok, so I think we all agree that PassRefPtr should be removed, but what we replace it with is a little unclear. Yuta: correct me if I'm wrong, but using pass-by-value with a RefPtr<T> to a","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:43:16 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"You can get the same thing by moving it though, eg: void Foo::setBar(RefPtr<Bar> bar) { m_bar = std::move(bar); } and then call it like this: RefPtr<Bar> bar = Bar::create(); foo->setBar","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 07:02:19 +0000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Is there ever a reason we'd want to do a copy? Maybe we should remove the copy constructor and force an explicit call to .get() or something. On 19 Jul 2016 5:02 PM, "Daniel Cheng" <","payload":{"headers":[{"name":"Date","value":"Tue, 19 Jul 2016 17:12:20 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, bugsnash@chromium.org, Kentaro Hara <haraken@chromium.org>, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 3:43 PM, Sasha Bermeister <sashab@chromium.org> wrote: Ok, so I think we all agree that PassRefPtr should be removed, but what we replace it with is a little unclear. Yuta","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:42:13 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Thanks for clearing that up. What if we forced an explicit call for copying, so you couldn't call f(p) directly, eg: RefPtr<T> p = ...; f(p.copy()); // Copying will happen. f(std::move(p)); /","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:46:36 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"I think we'd want to discourage that: because of the call to .get(), it looks like a raw pointer is being passed. We could make the single argument constructor explicit, but then it also looks odd:","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 07:50:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Ah, the example calls it copy(), but I think that's also undesirable: ownership should use RefPtr not T*. The name makes it sound like it might ref the object (though it probably doesn't), and","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 07:53:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>, bugsnash@chromium.org"}]}},{"snippet":"On Tue, Jul 19, 2016 at 4:50 PM, Daniel Cheng <dcheng@chromium.org> wrote: I think we'd want to discourage that: because of the call to .get(), it looks like a raw pointer is being passed. We","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:53:05 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"Yeah, there's also overhead from that. Ok, so with RefPtr<T> p I'm happy leaving f(p) and f(std::move(p)) as the style, reviewers just need to be wary about copies but this has been the","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:54:05 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 4:54 PM, Sasha Bermeister <sashab@chromium.org> wrote: Yeah, there's also overhead from that. Ok, so with RefPtr<T> p I'm happy leaving f(p) and f(std::move(","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:21:32 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 1:21 AM, Yuta Kitamura <yutak@chromium.org> wrote: On Tue, Jul 19, 2016 at 4:54 PM, Sasha Bermeister <sashab@chromium.org> wrote: Yeah, there's also overhead","payload":{"headers":[{"name":"From","value":"Antoine Labour <piman@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 07:55:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 1:21 AM, Yuta Kitamura <yutak@chromium.org> wrote: On Tue, Jul 19, 2016 at 4:54 PM, Sasha Bermeister <sashab@chromium.org> wrote: Yeah, there's also overhead","payload":{"headers":[{"name":"From","value":"danakj@chromium.org"},{"name":"Date","value":"Tue, 19 Jul 2016 13:43:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"+meade I think we could find someone to work on this, even as a 20% project. :) This would be the implementation plan: 1. Replace PassRefPtr with RefPtr 2. Replace calls to .release() with std::move()","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 11:01:59 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"danakj@chromium.org"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, meade@chromium.org"}]}},{"snippet":"SGTM, as discussed in person :) On Wed, Jul 20, 2016 at 11:01 AM, Sasha Bermeister <sashab@chromium.org> wrote: +meade I think we could find someone to work on this, even as a 20% project. :)","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 13:33:28 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"danakj@chromium.org, Yuta Kitamura <yutak@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"I'd recommend to add 0. Make PassRefPtr move-only, so that, (1) doesn't leave exra RefPtr-to-RefPtr copy. 2016-07-20 12:33 GMT+09:00 Eddy Mead <meade@chromium.org>: SGTM, as discussed in","payload":{"headers":[{"name":"From","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 13:51:18 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Eddy Mead <meade@chromium.org>"},{"name":"Cc","value":"Sasha Bermeister <sashab@chromium.org>, Dana Jansens <danakj@chromium.org>, Yuta Kitamura <yutak@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"The plan sounds reasonable to me. Just keep watching the perf bots when you land the patches because this kind of performance-sensitive refactoring is likely to cause unexpected regressions :) On Wed,","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 16:32:18 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Cc","value":"Eddy Mead <meade@chromium.org>, Sasha Bermeister <sashab@chromium.org>, Dana Jansens <danakj@chromium.org>, Yuta Kitamura <yutak@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}},{"snippet":"On Wed, Jul 20, 2016 at 10:01 AM, Sasha Bermeister <sashab@chromium.org> wrote: +meade I think we could find someone to work on this, even as a 20% project. :) That sounds great :) This would be","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 16:40:23 +0900"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, meade@chromium.org"}]}},{"snippet":"Thanks for the great breakdown Yuta!! I think bugsnash@ will be taking this on. We'll get back to you with a time estimate and full plan next week. :) Plan LGTM. Also, I'd add a step -2 and -1","payload":{"headers":[{"name":"From","value":"Sasha Bermeister <sashab@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 18:00:19 +1000"},{"name":"Subject","value":"Re: [blink-dev] Kill PassRefPtr and use RefPtr&& instead"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, bugsnash@chromium.org, Alan Cutter <alancutter@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, meade@chromium.org"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/blink/layout-team for more information. Updates since last meeting (on Monday, June 27, 2016): Back","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 14:07:56 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - July 18, 2016"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails bajones@chromium.org Spec https://w3c.github.io/gamepad/ Though since this is about new additions to the spec, the relevant pull requests are probably easier to review: GampadButton.","payload":{"headers":[{"name":"From","value":"\"'Brandon Jones' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 15:47:57 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"You forgot the interoperability part, I think - are other browsers on board? ☆PhistucK On Mon, Jul 18, 2016 at 6:47 PM, 'Brandon Jones' via blink-dev <blink-dev@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 18 Jul 2016 19:08:03 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"Brandon Jones <bajones@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The owner of the Gamepad API at Mozilla has signed off on the touched property and discussions are ongoing about pose. He didn't give a clear signal for whether they intend to implement it or not,","payload":{"headers":[{"name":"From","value":"\"'Brandon Jones' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 18:00:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think these two properties need a new ChromeStatus entry. It helps to form a blog post about the new features, for example. I assume it will say "no public signals" across the board,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 18 Jul 2016 22:17:45 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"Brandon Jones <bajones@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sounds good to me. I always question when a feature becomes significant enough to warrant the full "new feature" treatment, so I tend to play it by ear. I'll put together a Chrome status","payload":{"headers":[{"name":"From","value":"\"'Brandon Jones' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 20:13:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Chrome Status entry here: https://www.chromestatus.com/features/5651469617332224 On Mon, Jul 18, 2016 at 1:13 PM Brandon Jones <bajones@google.com> wrote: Sounds good to me. I always question","payload":{"headers":[{"name":"From","value":"\"'Brandon Jones' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 20:29:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It is always good to err on the side of caution and just create an entry just in case. Smaller changes had entries. :) Thank you! ☆PhistucK On Mon, Jul 18, 2016 at 11:29 PM, Brandon Jones <bajones@","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 18 Jul 2016 23:31:23 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"Brandon Jones <bajones@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is this intent blocked on API owner feedback? On Monday, July 18, 2016 at 1:32:11 PM UTC-7, PhistucK wrote: It is always good to err on the side of caution and just create an entry just in case.","payload":{"headers":[{"name":"Date","value":"Mon, 25 Jul 2016 18:47:30 -0700 (PDT)"},{"name":"From","value":"Dru <dknox@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"bajones@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"}]}},{"snippet":"Has this gone through TAG review? I think I've previously noted how un-idiomatic for the web platform it is to use a Float32Array for position/velocity/acceleration/orientation/etc., and how","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"CC","value":"\"bajones@google.com\" <bajones@google.com>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"Date","value":"Tue, 26 Jul 2016 01:56:13 +0000"}]}},{"snippet":"It has not gone through TAG review yet. Is this a requirement? On Mon, Jul 25, 2016 at 6:56 PM, Domenic Denicola <d@domenic.me> wrote: Has this gone through TAG review? I think I've","payload":{"headers":[{"name":"From","value":"\"'Megan Lindsay' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 11:21:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>, \"bajones@google.com\" <bajones@google.com>"}]}},{"snippet":"From: Megan Lindsay [mailto:meganlindsay@google.com] > It has not gone through TAG review yet. Is this a requirement? Yes, or at least reasoning for the API owners to understand why it is being","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Megan Lindsay <meganlindsay@google.com>"},{"name":"CC","value":"Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>, \"bajones@google.com\" <bajones@google.com>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"Date","value":"Tue, 26 Jul 2016 18:24:58 +0000"}]}},{"snippet":"I submitted a suggestion to the template in order to make it clearer (extracted that into a new paragraph). ☆PhistucK On Tue, Jul 26, 2016 at 9:24 PM, Domenic Denicola <d@domenic.me> wrote: From:","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 26 Jul 2016 21:46:54 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Megan Lindsay <meganlindsay@google.com>, Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>, \"bajones@google.com\" <bajones@google.com>"}]}},{"snippet":"I see that https://github.com/w3c/gamepad/pull/25 actually isn't merged yet, and that's where the Float23Array attributes are. Is there a reason this isn't merged? The situation reminds me","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 27 Jul 2016 02:38:59 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Megan Lindsay <meganlindsay@google.com>, Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>, \"bajones@google.com\" <bajones@google.com>"}]}},{"snippet":"I don't see those API shape concerns raised in the PR, can you guys take the discussion there? We should probably wait for this PR to be resolved and landed before making a ship decision. On Tue,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 26 Jul 2016 23:04:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Gamepad API updates"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Domenic Denicola <d@domenic.me>, Megan Lindsay <meganlindsay@google.com>, Dru <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>, \"bajones@google.com\" <bajones@google.com>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-07-11 00:00:00 till 2016-07-18 00:00:00 (UTC time). CQ users: 349 out of 355 total committers 98.31%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 08:43:59 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of July 11"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-07-11 00:00:00 till 2016-07-18 00:00:00 (UTC time). CQ users: 133 out of 136 total committers 97.79%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 09:38:46 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of July 11"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-07-18 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10225 (-117) 192 (-13) 752 (-97) 435 (-9) 96 Jul 2009 Uncategorized 25 (-45) 0 (-1) 0 (-16) 2","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 09:16:28 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-07-18"},{"name":"To","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Is Blink>GamepadAPI really required? It is completely empty for some (or a long) time (it does not even have closed issues) and could probably fit into Blink>Input. ☆PhistucK On Mon, Jul 18, 2016","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 18 Jul 2016 09:40:58 +0300"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-07-18"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Yeah, I thought there was an IP>Gamepad component we use for that? -Christian On Jul 18, 2016 02:41, "PhistucK" <phistuck@gmail.com> wrote: Is Blink>GamepadAPI really required? It","payload":{"headers":[{"name":"Date","value":"Mon, 18 Jul 2016 08:43:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-07-18"},{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev+status@chromium.org, Kent TAMURA <tkent@chromium.org>"}]}}]},{"messages":[{"snippet":"If you look at the WebFonts use adaptive timeouts to take fallback fonts ChromeStatus entry, the mentioned launch bug is crbug.com/576563, which is restricted. Please, use a public issue instead (or","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 16 Jul 2016 10:49:30 +0300"},{"name":"Subject","value":"[blink-dev] A ChromeStatus Entry With A Restricted Issue"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Takashi Toyoshima <toyoshim@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>"}]}},{"snippet":"Also, is the status of the new touch-action values really "In experimental framework"? Can you enable it via origin trials? It is not on the list in the form. ☆PhistucK On Sat, Jul 16, 2016","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 16 Jul 2016 12:39:18 +0300"},{"name":"Subject","value":"[blink-dev] Re: A ChromeStatus Entry With A Restricted Issue"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Takashi Toyoshima <toyoshim@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"}]}},{"snippet":"Fixed the touch-action one. I think the font one was probably just accidentally using the wrong label, but I want to double-check with Kenji before changing it. Thanks for catching these PhistucK! On","payload":{"headers":[{"name":"Date","value":"Sat, 16 Jul 2016 08:28:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: A ChromeStatus Entry With A Restricted Issue"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Takashi Toyoshima <toyoshim@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, \"kenjibaheux@chromium.org\" <kenjibaheux@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Updated to tip to try the lastest fix for #595504. Now about 300 of my tests fail for a different reason: their colors are slightly off. I am running stock Goobuntu machine. Is anyone else seeing this?","payload":{"headers":[{"name":"Date","value":"Fri, 15 Jul 2016 14:02:29 -0700 (PDT)"},{"name":"From","value":"\"'Aleks Totic' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] LayoutTests failing on Linux"}]}},{"snippet":"Yes, I've been experiencing similar for I think past week or two. I recall it being more like 80 tests. It's definitely a huge pain, I can't easily discern test failures locally much of the","payload":{"headers":[{"name":"Date","value":"Fri, 15 Jul 2016 16:07:14 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: LayoutTests failing on Linux"}]}},{"snippet":"Maybe related to recent libpng update? https://chromium.googlesource.com/chromium/src/+/8c0ac8d882561cca77d5184248708b0ce9c851d4 Decoding with libpng 1.2.x and 1.6.x can sometimes produce slightly","payload":{"headers":[{"name":"Date","value":"Sun, 17 Jul 2016 22:41:59 -0700 (PDT)"},{"name":"From","value":"Max Stepin <maxstepin@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: LayoutTests failing on Linux"}]}},{"snippet":"Bisected. It is caused by https://codereview.chromium.org/2115103002, "Support for retreiving the monitor color space on X11" Filed a bug: https://bugs.chromium.org/p/chromium/issues/detail?","payload":{"headers":[{"name":"Date","value":"Mon, 18 Jul 2016 09:26:53 -0700 (PDT)"},{"name":"From","value":"\"'Aleks Totic' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: LayoutTests failing on Linux"}]}}]},{"messages":[{"snippet":"In M52 we shipped the `referrerpolicy` attribute with a miscapitalization in the IDL attribute: it should be referrerPolicy, rather than referrerpolicy. The former is what the spec says (eg https://","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 13:30:00 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is Firefox on board? ☆PhistucK On Fri, Jul 15, 2016 at 11:30 PM, Emily Stark <estark@chromium.org> wrote: In M52 we shipped the `referrerpolicy` attribute with a miscapitalization in the IDL","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 15 Jul 2016 23:40:02 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016 at 1:40 PM, PhistucK <phistuck@gmail.com> wrote: Is Firefox on board? They either never had the miscapitalization or capitalized it correctly from the beginning. (Still","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 13:44:00 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Emily Stark <estark@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+fkiefer from Mozilla On Fri, Jul 15, 2016 at 1:44 PM, Emily Stark <estark@chromium.org> wrote: On Fri, Jul 15, 2016 at 1:40 PM, PhistucK <phistuck@gmail.com> wrote: Is Firefox on board?","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 13:44:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>, Franziskus Kiefer <fkiefer@mozilla.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I asked because that was not clear from your original post - "The former is what the spec says (eg https://html.spec.whatwg.org/multipage/semantics.html#the-a-element) and also what Firefox now","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 15 Jul 2016 23:47:26 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I see, sorry for the confusion. Yes, "referrerPolicy" is what Firefox does and what the spec says, "referrerpolicy" is what Chrome currently does. On Fri, Jul 15, 2016 at 1:47 PM,","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 13:51:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Emily Stark <estark@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Actually, apparently the attribute shipped in M51; the chromestatus entry was wrong. (I just updated it.) That means the misspelling has already hit stable. If that makes a difference, another option","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 14:00:43 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'd say just fix the spelling and merge it back, so we're shipping the same spelling as FF Emily Stark <estark@chromium.org> schrieb am Fr., 15. Juli 2016, 23:01: Actually, apparently the","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Sat, 16 Jul 2016 10:01:25 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Firefox never shipped with referrerpolicy. We renamed referrer to referrerPolicy in 45. (Unfortunately we turn on the attribute by default only in 50, which will be released Nov 8.) Cheers On Fri, Jul","payload":{"headers":[{"name":"From","value":"Franziskus Kiefer <fkiefer@mozilla.com>"},{"name":"Date","value":"Sat, 16 Jul 2016 12:56:07 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The conservative thing would be to add referrerPolicy and deprecate referrerpolicy with a message saying it will be gone in M55, then remove after the next branch point and consider reverting only if","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 01:42:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Franziskus Kiefer <fkiefer@mozilla.com>, Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Given the fact that we just launched this, and it's not yet supported in any other browser, I imagine usage is tiny and malleable. If we can get the spelling change merged back to 52, then I don","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 09:23:47 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Franziskus Kiefer <fkiefer@mozilla.com>, Emily Stark <estark@chromium.org>, PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, if you can get it merged to M52 then that seems OK as well. On Mon, Jul 18, 2016 at 12:24 AM Mike West <mkwst@chromium.org> wrote: Given the fact that we just launched this, and it's","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 20:01:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"Franziskus Kiefer <fkiefer@mozilla.com>, Emily Stark <estark@chromium.org>, PhistucK <phistuck@gmail.com>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"ok, let's try to go down that route. On Mon, Jul 18, 2016 at 10:02 PM Philip Jägenstedt <foolip@chromium.org> wrote: Yeah, if you can get it merged to M52 then that seems OK as well. On Mon,","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 11:18:25 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Correct A Miscapitalization: referrerpolicy IDL attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"Franziskus Kiefer <fkiefer@mozilla.com>, Emily Stark <estark@chromium.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mek@chromium.org, jsbell@chromium.org Spec https://html.spec.whatwg.org/multipage/comms.html#broadcasting-to-other-browsing-contexts Summary BroadcastChannel allows scripts from the same","payload":{"headers":[{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 11:03:43 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: BroadcastChannel"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>"}]}},{"snippet":"LGTM. On Thu, Jul 14, 2016 at 11:03 AM, Marijn Kruisselbrink <mek@chromium.org> wrote: Contact emails mek@chromium.org, jsbell@chromium.org Spec https://html.spec.whatwg.org/multipage/comms.html#","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 11:18:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: BroadcastChannel"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"LGTM2 On Thu, Jul 14, 2016 at 11:18 AM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM. On Thu, Jul 14, 2016 at 11:03 AM, Marijn Kruisselbrink <mek@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 17:47:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: BroadcastChannel"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"This is awesome. Thanks Chrome team !! I've talked briefly about this a year ago when talking about multi-screen Web apps. This API will help a lot https://www.youtube.com/watch?v=-o8B4TE18gI Le","payload":{"headers":[{"name":"Date","value":"Fri, 15 Jul 2016 01:48:58 -0700 (PDT)"},{"name":"From","value":"Hubert SABLONNIERE <hubert.sablonniere@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jsbell@google.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: BroadcastChannel"}]}},{"snippet":"lgtm3 On Fri, Jul 15, 2016 at 10:49 AM Hubert SABLONNIERE <hubert.sablonniere@gmail.com> wrote: This is awesome. Thanks Chrome team !! I've talked briefly about this a year ago when talking","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 08:50:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: BroadcastChannel"},{"name":"To","value":"Hubert SABLONNIERE <hubert.sablonniere@gmail.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jsbell@google.com"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, July 13: Recent updates (2 weeks): We're continuing our --isolate-extensions launch trial on Dev and Canary channels, and we're preparing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 16:41:22 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, July 13, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails skobes@chromium.org, ymalik@chromium.org Spec https://cdn.rawgit.com/ymalik/interventions/master/scroll-anchoring/spec.html Summary Scroll anchoring adjusts the scroll position to","payload":{"headers":[{"name":"From","value":"Steve Kobes <skobes@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 18:16:16 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Scroll Anchoring"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails shekyan@gmail.com, jww@chromium.org Spec https://w3c.github.io/webappsec-subresource-integrity/#request-verification-algorithms Summary The `require-sri-for` directive gives developers","payload":{"headers":[{"name":"From","value":"Sergey Shekyan <shekyan@gmail.com>"},{"name":"Date","value":"Wed, 13 Jul 2016 13:44:01 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: SRI: The `require-sri-for` CSP directive."},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Note that Firefox already has an implementation of this directive behind a flag: https://bugzilla.mozilla.org/show_bug.cgi?id=1265318. Once we're confident that the implementation Sergey is putting","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 07:21:52 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: SRI: The `require-sri-for` CSP directive."},{"name":"To","value":"Sergey Shekyan <shekyan@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Dear Anh/Chị ! Lời đầu tiên em xin chúc Anh/Chị sức khỏe, công việc thuận lợi. ! Em có một thông tin rất tốt em muốn gửi đến cho Anh/Chị. THANH TOÁN 20% NHẬN NHÀ Dự án căn hộ Vale'o đầm sen-phong","payload":{"headers":[{"name":"From","value":"tinh nguyen ngoc thanh <nguyenngocthanhtinh@gmail.com>"},{"name":"Date","value":"Wed, 13 Jul 2016 10:52:54 +0700"},{"name":"Subject","value":"[blink-dev] Fwd: EM XIN CHIA SẺ CƠ HỘI VÀNG VÀ THÔNG TIN TỐT NHẤT."},{"name":"To","value":"undisclosed-recipients:;"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 10:57:47 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style and Animations"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Summary The Chromium project is moving away from Rietveld to a revamped version of Gerrit for our main Code Review tool. When? The conservative estimate is Q4 of 2016. There are already some Chromium","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 21:24:16 +0000"},{"name":"Subject","value":"[blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, tandrii@chromium.org"}]}},{"snippet":"I'm mostly looking forward to this, but I have a couple of questions... On Tue, Jul 12, 2016 at 2:24 PM, Andrew Bonventre <andybons@chromium.org> wrote: Will this change my current command-","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 14:52:02 -0700"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Thanks rsleevi for pointing out the second link for Chromium-specific Gerrit issues is broken. Corrected one: https://bugs.chromium.org/p/gerrit/issues/list?q=label:Hotlist-Chromium For using the","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 22:06:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Stefan Zager <szager@chromium.org>, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"What will happen to existing code review URLs? These URLs can be found all over the place in the commit history and the code review itself often provide useful historical information. Yang On Tuesday,","payload":{"headers":[{"name":"Date","value":"Tue, 12 Jul 2016 22:27:23 -0700 (PDT)"},{"name":"From","value":"yangguo via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chromium-dev@chromium.org, tandrii@chromium.org, andybons@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"}]}},{"snippet":"+infra-dev On Wed, Jul 13, 2016 at 7:27 AM, yangguo via blink-dev <blink-dev@chromium.org> wrote: What will happen to existing code review URLs? These URLs can be found all over the place in the","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 09:35:26 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"yangguo@google.com, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Andrew Bonventre <andybons@chromium.org>"}]}},{"snippet":"On Wed, Jul 13, 2016 at 12:35 AM, Paweł Hajdan, Jr. <phajdan.jr@chromium.org> wrote: > +infra-dev > > On Wed, Jul 13, 2016 at 7:27 AM, yangguo via blink-dev > <blink-dev@chromium.","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 10:47:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Cc","value":"yangguo@google.com, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Andrew Bonventre <andybons@chromium.org>"}]}},{"snippet":"As noted in the original email: What will happen to Rietveld? Rietveld will be put in read-only mode to preserve change history. Potential migration of changes to Gerrit will be considered after the","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 17:49:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Cc","value":"yangguo@google.com, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Andrew Bonventre <andybons@chromium.org>"}]}},{"snippet":"As for contributions, there is already a fairly robust plugin system with a JS plugin system design (that will live on top of the current JS API) in the works, so for specific workflows, I would","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 17:53:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Cc","value":"yangguo@google.com, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Generally very excited to see this coming (below why) Bunch of questions: 1. Any idea about what the config for the chromium/src project is going to be? Is it going to be "rebase if necessary?","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 18:18:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Cc","value":"yangguo@google.com, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Answers based on my understanding (which might be wrong, hopefully infra folks will correct me as needed), and one comment/question/push back ... On Wed, Jul 13, 2016 at 11:18 AM, Primiano Tucci <","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 15:22:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Thanks for being open about the process and soliciting feedback. I'd like to throw in my +1 for the merge workflow. It is important to me that I don't lose local history and rebase doesn't","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 01:53:02 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>, Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Wed, Jul 13, 2016 at 3:22 PM, Dirk Pranke <dpranke@chromium.org> wrote: Answers based on my understanding (which might be wrong, hopefully infra folks will correct me as needed), and one","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 19:21:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"I believe (through only very minimal experience) there is a Gerrit workflow where you have 1 local branch = many CLs and 1 commit = 1 CL. So if you are working on a chain of CLs that need to land","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 03:36:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>, Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Yeah I hope we can keep the 1 branch = 1 CL workflow, I actually much prefer the commit message to be disjoint of my local commits which tend to be more my thought process and local experimentation. I","payload":{"headers":[{"name":"Date","value":"Wed, 13 Jul 2016 21:14:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, eae <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Dirk Pranke <dpranke@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Andrii Shyshkalov <tandrii@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"> I don't know which thing you (Primiano) think is "a dream", since I think you dropped a key word in that sentence. I believe the tooling in git-cl actually supports both models,","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 11:07:48 +0100"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"(sorry for late reply, I've been busy spamming your CLs with warnings about master prefix :)) Let me also add security to the list of reasons for switching to Gerrit. Gerrit's strict ACLs","payload":{"headers":[{"name":"Date","value":"Thu, 14 Jul 2016 07:45:59 -0700 (PDT)"},{"name":"From","value":"Andrii Shyshkalov <tandrii@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"andybons@chromium.org, eae@chromium.org, phajdan.jr@chromium.org, yangguo@google.com, infra-dev@chromium.org, blink-dev@chromium.org, tandrii@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"}]}},{"snippet":"To be clear as owner of git cl for Gerrit: 1 CL = 1 branch will be the supported workflow, just like before with Rietveld. It already is, actually :) On Thursday, July 14, 2016 at 12:08:43 PM UTC+2,","payload":{"headers":[{"name":"Date","value":"Thu, 14 Jul 2016 07:59:17 -0700 (PDT)"},{"name":"From","value":"Andrii Shyshkalov <tandrii@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"dpranke@chromium.org, andybons@chromium.org, eae@chromium.org, phajdan.jr@chromium.org, yangguo@google.com, infra-dev@chromium.org, blink-dev@chromium.org, tandrii@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"}]}},{"snippet":"On Thu, Jul 14, 2016 at 6:07 AM, Primiano Tucci <primiano@chromium.org> wrote: Also the comments here make me realize that I'm probably the only one who cares about this. so... it's all","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 11:08:34 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Dirk Pranke <dpranke@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"1 local commit == 1 CL is the native Gerrit behavior, so once the transition is made then we can explore solutions that allow git cl to support it and I can't imagine it will be too difficult. That","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 15:16:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Joe Mason <joenotcharles@chromium.org>, Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Dirk Pranke <dpranke@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Thu, Jul 14, 2016 at 3:45 PM, Andrii Shyshkalov <tandrii@chromium.org> wrote: It could be "rebase if necessary" if the repository doesn't need Cr-Commit-Position (for example,","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 16:48:42 +0100"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrii Shyshkalov <tandrii@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 13, 2016 at 10:53 AM, Andrew Bonventre <andybons@chromium.org> wrote: > As for contributions, there is already a fairly robust plugin system with a > JS plugin system design (","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 15:18:53 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Does Gerrit has collapse diff view? This is very useful. 2016年7月15日(金) 7:19 Emil A Eklund <eae@chromium.org>: On Wed, Jul 13, 2016 at 10:53 AM, Andrew Bonventre <andybons@chromium.org>","payload":{"headers":[{"name":"From","value":"\"'Yoichi Osato' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 04:26:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Does Gerrit has collapse diff view? This is very useful. 2016年7月15日(金) 7:19 Emil A Eklund <eae@chromium.org>: On Wed, Jul 13, 2016 at 10:53 AM, Andrew Bonventre <andybons@chromium.org>","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 04:29:12 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Following the instructions in the beginning of this thread (install the PolyGerrit extension) it looks like it does. On Fri, Jul 15, 2016 at 5:29 AM Yoichi Osato <yoichio@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 14:13:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Will the review process remain the same (wait for lgtm comments from OWNERS), or will we use the Gerrit's numerical scoring system (-2 to +2). If the latter, will there be a guideline on how to use","payload":{"headers":[{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 17:12:57 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, Andrew Bonventre <andybons@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016 at 11:13 AM Guido Urdaneta <guidou@chromium.org> wrote: Will the review process remain the same (wait for lgtm comments from OWNERS), or will we use the Gerrit's","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 15:52:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, Andrew Bonventre <andybons@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Thu, Jul 14, 2016 at 3:18 PM, Emil A Eklund <eae@chromium.org> wrote: On Wed, Jul 13, 2016 at 10:53 AM, Andrew Bonventre <andybons@chromium.org> wrote: > As for contributions, there","payload":{"headers":[{"name":"From","value":"\"'Julie Parent' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:07:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016 at 8:52 AM, Andrew Bonventre <andybons@chromium.org> wrote: On Fri, Jul 15, 2016 at 11:13 AM Guido Urdaneta <guidou@chromium.org> wrote: Will the review process remain","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:09:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Thu, Jul 14, 2016 at 3:18 PM, Emil A Eklund <eae@chromium.org> wrote: On Wed, Jul 13, 2016 at 10:53 AM, Andrew Bonventre <andybons@chromium.org> wrote: > As for contributions, there","payload":{"headers":[{"name":"From","value":"Julie Parent <jparent@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:09:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016 at 11:09 AM, Brett Wilson <brettw@chromium.org> wrote: On Fri, Jul 15, 2016 at 8:52 AM, Andrew Bonventre <andybons@chromium.org> wrote: On Fri, Jul 15, 2016 at 11:13 AM","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:16:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Emil A Eklund <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"> Gerrit's scoring system has never made any sense to me. Is there something that explains how it works? The way I've used in other projects is: 0 neutral drive-by comment +1 I still want","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 18:17:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"Does +1 plus +1 == +2? Will On Fri, Jul 15, 2016 at 11:17 AM, Primiano Tucci <primiano@chromium.org> wrote: > Gerrit's scoring system has never made any sense to me. Is there something","payload":{"headers":[{"name":"From","value":"Will Harris <wfh@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:38:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"This might be a good chance to change the language we use for code review to make it a bit more, uh, friendly? "NOT LGTM" and "-2" both convey a fair amount of aggression. I propose","payload":{"headers":[{"name":"From","value":"Julie Parent <jparent@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 11:45:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Will Harris <wfh@chromium.org>"},{"name":"Cc","value":"Primiano Tucci <primiano@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae@chromium.org, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016, 19:38 Will Harris <wfh@chromium.org> wrote: Does +1 plus +1 == +2? no. you need somebody with +2 powers to explicitly +2. I imagine in chrome land they would map to","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 18:57:48 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Will Harris <wfh@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, eae@chromium.org, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"+1 to friendlier language if possible. NOT LGTM (+ the red coloring of your CL) leads to a very unpleasant and possibly unwelcoming experience. On Fri, Jul 15, 2016 at 2:57 PM, Primiano Tucci <","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 15:03:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, eae@chromium.org, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"+1 and +2 could be "LGTM" and "LGTM, Approved" perhaps? They're relatively short so perhaps we can show them in place of the numbers without much UI fiddling. The current long","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 19:26:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, eae@chromium.org, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"A nice advantage of Gerrit's system is that it reduces the need for "not lgtm". In Rietveld you have to "not lgtm" to undo an accidental lgtm, in Gerrit you can just set it back","payload":{"headers":[{"name":"From","value":"Miriam Gershenson <mgersh@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 16:07:36 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"davidben@chromium.org"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, eae@chromium.org, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"> no. you need somebody with +2 powers to explicitly +2 Thanks for that clarification. I've used Gerritt various times over the last two years but that was never clear to me. It seems like it is","payload":{"headers":[{"name":"Date","value":"Fri, 15 Jul 2016 14:27:13 -0700 (PDT)"},{"name":"From","value":"Bruce <brucedawson@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"davidben@chromium.org, csharrison@chromium.org, primiano@chromium.org, wfh@chromium.org, andybons@chromium.org, tandrii@chromium.org, brettw@chromium.org, guidou@chromium.org, phajdan.jr@chromium.org, yangguo@google.com, yoichio@chromium.org, blink-dev@chromium.org, eae@chromium.org, infra-dev@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"}]}},{"snippet":"On Fri, Jul 15, 2016 at 12:03 PM, Charles Harrison <csharrison@chromium.org> wrote: +1 to friendlier language if possible. NOT LGTM (+ the red coloring of your CL) leads to a very unpleasant and","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 14:39:13 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"At what point would you like to get UI feedback? Now? When it's dogfoodable? On Tue, Jul 12, 2016 at 2:24 PM, Andrew Bonventre <andybons@chromium.org> wrote: Summary The Chromium project is","payload":{"headers":[{"name":"From","value":"Rachel Blum <groby@chromium.org>"},{"name":"Date","value":"Fri, 15 Jul 2016 16:57:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, tandrii@chromium.org"}]}},{"snippet":"When it's dogfoodable. UX resources were just recently allocated. In the meantime please answer the survey you see in Rietveld if it pops up :) On Fri, Jul 15, 2016 at 7:57 PM Rachel Blum <groby","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Sat, 16 Jul 2016 00:31:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>, Rachel Blum <groby@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, tandrii@chromium.org"}]}},{"snippet":"Having used Gerrit on other projects, there's a couple of use cases for the range of -2..2 that I don't think have been mentioned on the thread so far: 1) Lots of projects allow anybody to +1/-","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 12:21:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>, Rachel Blum <groby@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, tandrii@chromium.org"}]}},{"snippet":"I think two levels of negative are useful. (I'll give them names instead of -1 and -2 since I'm not sure Gerrit's -1 and -2 actually work this way.) "I would prefer this not be","payload":{"headers":[{"name":"From","value":"\"'Joe Mason' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 10:10:11 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"Yes, that's exactly how -2 and -1 work in Gerrit. On Mon, 18 Jul 2016 at 15:10 'Joe Mason' via blink-dev <blink-dev@chromium.org> wrote: I think two levels of negative are useful. (I","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 14:11:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Joe Mason <joenotcharles@google.com>, David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"Resending from the right address... On Mon, Jul 18, 2016 at 10:10 AM, Joe Mason <joenotcharles@google.com> wrote: I think two levels of negative are useful. (I'll give them names instead of -","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 10:12:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"Cool code review tool you got, there. On Mon, Jul 18, 2016 at 7:12 AM Joe Mason <joenotcharles@chromium.org> wrote: Resending from the right address... On Mon, Jul 18, 2016 at 10:10 AM, Joe Mason","payload":{"headers":[{"name":"From","value":"\"'Ben Henry' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:22:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Joe Mason <joenotcharles@chromium.org>, David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"I think switching with the +1/+2/-1/-2 would be a regression, since it's unintuitive. We haven't had issues with folks submitting cls with negative comments, and regardless that could be","payload":{"headers":[{"name":"From","value":"John Abd-El-Malek <jam@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 14:17:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Ben Henry <benhenry@google.com>"},{"name":"Cc","value":"Joe Mason <joenotcharles@chromium.org>, David Benjamin <davidben@chromium.org>, Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"Oh also re the +1 vs +2, that's handled by our tooling which uses OWNERS to enforce that only specific people can lgtm code based on the directory. ie we don't have the issue of random","payload":{"headers":[{"name":"From","value":"John Abd-El-Malek <jam@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 14:22:29 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Ben Henry <benhenry@google.com>"},{"name":"Cc","value":"Joe Mason <joenotcharles@chromium.org>, David Benjamin <davidben@chromium.org>, Charles Harrison <csharrison@chromium.org>, Primiano Tucci <primiano@chromium.org>, Will Harris <wfh@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, Yoichi Osato <yoichio@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Emil A Eklund <eae@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"}]}},{"snippet":"+2, er I mean awesomesauce! Thanks for the idea Julie - this is an excellent observation about our processes. As an open source project we need to friendly and welcoming to all contributors. A bad","payload":{"headers":[{"name":"Date","value":"Tue, 19 Jul 2016 08:05:47 +1000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"From","value":"\"'Mike Lawther' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>, eae@chromium.org"}]}},{"snippet":"There are two uses of "not LGTM": #1 undoing a previous LGTM that you did accidentally (I've pushed the wrong button sometimes) or #2 making it clear that you want to have your comment be","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 15:32:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Mike Lawther <mikelawther@google.com>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>, eae@chromium.org"}]}},{"snippet":"On Mon, Jul 18, 2016 at 3:05 PM, Mike Lawther <mikelawther@google.com> wrote: +2, er I mean awesomesauce! Thanks for the idea Julie - this is an excellent observation about our processes. As an","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 15:33:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Mike Lawther <mikelawther@google.com>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I saw 'awesomesauce' as a strawman suggestion. We can have the tools say "Approved to land. Thanks!", or "Please don't land this (not lgtm)". I don't think '","payload":{"headers":[{"name":"From","value":"\"'Mike Lawther' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:39:23 +1000"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"eae@chromium.org"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 3:32 PM, Brett Wilson <brettw@chromium.org> wrote: There are two uses of "not LGTM": #1 undoing a previous LGTM that you did accidentally (I've pushed the","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 16:39:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@google.com>, Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>, Emil A Eklund <eae@chromium.org>"}]}},{"snippet":"On Tuesday, July 19, 2016, Emil A Eklund <eae@chromium.org> wrote: On Mon, Jul 18, 2016 at 3:05 PM, Mike Lawther <mikelawther@google.com> wrote: +2, er I mean awesomesauce! Thanks for the","payload":{"headers":[{"name":"Date","value":"Mon, 18 Jul 2016 20:42:17 -0300"},{"name":"Subject","value":"Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"From","value":"Thiago Farina <tfarina@chromium.org>"},{"name":"To","value":"\"eae@chromium.org\" <eae@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@google.com>, Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 4:42 PM, Thiago Farina <tfarina@chromium.org> wrote: > > > On Tuesday, July 19, 2016, Emil A Eklund <eae@chromium.org> wrote: >> >> On Mon, Jul","payload":{"headers":[{"name":"From","value":"\"Stéphane Marchesin\" <marcheu@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 16:53:01 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Thiago Farina <tfarina@chromium.org>"},{"name":"Cc","value":"\"eae@chromium.org\" <eae@chromium.org>, Mike Lawther <mikelawther@google.com>, Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 4:39 PM, Mike Lawther <mikelawther@google.com> wrote: > I saw 'awesomesauce' as a strawman suggestion. We can have the tools say > "Approved to land.","payload":{"headers":[{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:01:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Mike Lawther <mikelawther@google.com>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Brett Wilson <brettw@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, Yoichi Osato <yoichio@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yang Guo <yangguo@google.com>, Will Harris <wfh@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 15, 2016 at 11:09 AM, Brett Wilson <brettw@chromium.org> wrote: Gerrit's scoring system has never made any sense to me. Is there something that explains how it works? Given all","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:18:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"I continue to think that we don't need either -1 or +1 (in Chromium; other projects may certainly work differently), and I believe that having them makes the UI more complicated than it needs to be","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:21:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On 19 July 2016 at 09:18, 'Peter Kasting' via Chromium-dev <chromium-dev@chromium.org> wrote: On Fri, Jul 15, 2016 at 11:09 AM, Brett Wilson <brettw@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:24:24 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:21 PM, Dirk Pranke <dpranke@chromium.org> wrote: I continue to think that we don't need either -1 or +1 (in Chromium; other projects may certainly work differently),","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:26:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:26 PM, 'Peter Kasting' via infra-dev <infra-dev@chromium.org> wrote: On Mon, Jul 18, 2016 at 5:21 PM, Dirk Pranke <dpranke@chromium.org> wrote: I continue","payload":{"headers":[{"name":"From","value":"John Abd-El-Malek <jam@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:28:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Dirk Pranke <dpranke@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"So, we'd let everyone do +1, but +2 only to OWNERs? This is an interesting idea. It may significantly improve reviewing speed, but can affect quality. On 19 July 2016 at 09:26, 'Peter Kasting","payload":{"headers":[{"name":"From","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:29:04 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Dirk Pranke <dpranke@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:24 PM, Tomasz Mikolajewski <mtomasz@chromium.org> wrote: On 19 July 2016 at 09:18, 'Peter Kasting' via Chromium-dev <chromium-dev@chromium.org> wrote: On","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:34:00 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:34 PM, 'Peter Kasting' via infra-dev <infra-dev@chromium.org> wrote: On Mon, Jul 18, 2016 at 5:24 PM, Tomasz Mikolajewski <mtomasz@chromium.org> wrote: On","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:41:52 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On 19 July 2016 at 09:34, Peter Kasting <pkasting@google.com> wrote: On Mon, Jul 18, 2016 at 5:24 PM, Tomasz Mikolajewski <mtomasz@chromium.org> wrote: On 19 July 2016 at 09:18, 'Peter","payload":{"headers":[{"name":"From","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:46:17 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"To clarify, I find gerrit 5-state confusing, and since we have so many interpretations of these states may be a proof that this is indeed confusing. I'd be completely happy if we just had three","payload":{"headers":[{"name":"From","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 09:48:27 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:41 PM, Dirk Pranke <dpranke@chromium.org> wrote: On Mon, Jul 18, 2016 at 5:34 PM, 'Peter Kasting' via infra-dev <infra-dev@chromium.org> wrote: On Mon, Jul","payload":{"headers":[{"name":"From","value":"Ken Rockot <rockot@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:49:57 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:41 PM, Dirk Pranke <dpranke@chromium.org> wrote: I guess I didn't say this in my initial comments, but I've committed to a number of different Gerrit-based repos","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:53:45 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:46 PM, Tomasz Mikolajewski <mtomasz@chromium.org> wrote: On 19 July 2016 at 09:34, Peter Kasting <pkasting@google.com> wrote: On Mon, Jul 18, 2016 at 5:24 PM,","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 17:59:51 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"For simplicity's sake, the Code-Review label will have the values [-1, 0, +1]. These map to the current Rietveld states and introducing more will no doubt cause confusion during the transition.","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 01:08:52 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"I don't want to do derail the discussion, but another issue with gerrit which is bothering me even more is lack of cc'ing. Currently reviewers and cc'd people are put on one list, which is","payload":{"headers":[{"name":"From","value":"Tomasz Mikolajewski <mtomasz@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 10:10:37 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 6:08 PM, Andrew Bonventre <andybons@chromium.org> wrote: For simplicity's sake, the Code-Review label will have the values [-1, 0, +1]. These map to the current","payload":{"headers":[{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 18:11:55 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"CC is a blocking feature for the transition and is currently being worked on. On Mon, Jul 18, 2016 at 9:10 PM Tomasz Mikolajewski <mtomasz@chromium.org> wrote: I don't want to do derail the","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 01:12:18 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 5:53 PM, Peter Kasting <pkasting@google.com> wrote: On Mon, Jul 18, 2016 at 5:41 PM, Dirk Pranke <dpranke@chromium.org> wrote: I guess I didn't say this in my","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 18:12:16 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 9:11 PM Peter Kasting <pkasting@google.com> wrote: On Mon, Jul 18, 2016 at 6:08 PM, Andrew Bonventre <andybons@chromium.org> wrote: For simplicity's sake, the","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 01:14:16 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>, Andrew Bonventre <andybons@chromium.org>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On 19 July 2016 at 10:59, 'Peter Kasting' via blink-dev <blink-dev@chromium.org> wrote: The vast majority of my review comments are things which I think could improve the code, but which","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 12:59:18 +1000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 7:59 PM, Mike Lawther <mikelawther@chromium.org> wrote: On 19 July 2016 at 10:59, 'Peter Kasting' via blink-dev <blink-dev@chromium.org> wrote: The vast","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 20:32:52 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Mon, Jul 18, 2016 at 8:32 PM, Dirk Pranke <dpranke@chromium.org> wrote: On Mon, Jul 18, 2016 at 7:59 PM, Mike Lawther <mikelawther@chromium.org> wrote: On 19 July 2016 at 10:59, '","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Mon, 18 Jul 2016 21:05:06 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"While a worthwhile goal, PolyGerrit is not a solution only for chromium. It is a complete replacement for the Gerrit UI. As such it's important to set expectations that we have to support workflows","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 15:09:49 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"IMHO, whether it's called +1, "yay you're cool" or LGTM is the kind of detail that the brain is really good at adapting to in ~3 codereviews and stop even realizing afterwards. As","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 15:50:43 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"The way gerrit actually works "underneath" is that you can set the range for a given thing to be between any two integers, and then the requirement for the commit is "it must have at","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:03:36 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"One other thing to remember; whether we like it or not most gerrit setups in the world use the 5 state system. Switching between a 3 state system on our repository, and a 5 state system on every other","payload":{"headers":[{"name":"From","value":"Anthony Berent <aberent@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 16:23:00 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"That's an argument for not using the labels "-1, 0, +1", since -1 and +1 won't mean the same thing as in other gerrit systems. On Tue, Jul 19, 2016 at 12:23 PM, Anthony Berent <","payload":{"headers":[{"name":"From","value":"\"'Joe Mason' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 14:49:54 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Anthony Berent <aberent@chromium.org>"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"That's an argument for not using the labels "-1, 0, +1", since -1 and +1 won't mean the same thing as in other gerrit systems. I think switching from a 5-state mindset to a 3-state","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 14:51:05 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Anthony Berent <aberent@chromium.org>"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"+1 to consistency w/ a caveat. A five state system is, I think almost everyone would agree, quite an overkill. Instead of us staying with an undesirable system, maybe we should switch to a 3 state","payload":{"headers":[{"name":"From","value":"\"'Rahul Chaturvedi' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 13:55:49 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"aberent@chromium.org"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"I don't believe it's appropriate to propose changes in other teams' workflows when we haven't even moved over to Gerrit yet. This thread has gone long enough with the discussion of Code","payload":{"headers":[{"name":"From","value":"Andrew Bonventre <andybons@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 21:03:37 +0000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Rahul Chaturvedi <rkc@google.com>, aberent@chromium.org"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Primiano Tucci <primiano@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Dirk Pranke <dpranke@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On 19 July 2016 at 13:32, Dirk Pranke <dpranke@chromium.org> wrote: On Mon, Jul 18, 2016 at 7:59 PM, Mike Lawther <mikelawther@chromium.org> wrote: On 19 July 2016 at 10:59, 'Peter","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 10:13:03 +1000"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}},{"snippet":"On Tue, Jul 19, 2016 at 5:13 PM, Mike Lawther <mikelawther@chromium.org> wrote: On 19 July 2016 at 13:32, Dirk Pranke <dpranke@chromium.org> wrote: On Mon, Jul 18, 2016 at 7:59 PM, Mike","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 17:19:20 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] Re: [ANN] Moving from Rietveld to Gerrit"},{"name":"To","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Tomasz Mikolajewski <mtomasz@chromium.org>, Brett Wilson <brettw@chromium.org>, Andrew Bonventre <andybons@chromium.org>, Guido Urdaneta <guidou@chromium.org>, Primiano Tucci <primiano@chromium.org>, Yoichi Osato <yoichio@chromium.org>, eae <eae@chromium.org>, \"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>, Yang Guo <yangguo@google.com>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, chromium-dev <chromium-dev@chromium.org>, Andrii Shyshkalov <tandrii@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails davve@opera.com, shanmuga.m@samsung.com Link to “Intent to Deprecate” thread https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/5PEUh2qHa7c/IUGlM4a9CQAJ Summary","payload":{"headers":[{"name":"Date","value":"Tue, 12 Jul 2016 03:06:13 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Remove: SVGZoomEvent"}]}},{"snippet":"LGTM1 Can you update https://www.chromestatus.com/feature/5760883808534528 with the actual removal milestone, which will be M54? (Given the extremely low usage, I don't think it's worthwhile in","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 10:33:25 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Updated the milestone to M54 On Tuesday, July 12, 2016 at 4:03:41 PM UTC+5:30, Philip Jägenstedt wrote: LGTM1 Can you update https://www.chromestatus.com/feature/5760883808534528 with the actual","payload":{"headers":[{"name":"Date","value":"Tue, 12 Jul 2016 03:37:53 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"}]}},{"snippet":"Review Patch : https://codereview.chromium.org/2133983003/ On Tuesday, July 12, 2016 at 4:07:53 PM UTC+5:30, Shanmuga wrote: Updated the milestone to M54 On Tuesday, July 12, 2016 at 4:03:41 PM UTC+5:","payload":{"headers":[{"name":"Date","value":"Tue, 12 Jul 2016 06:19:52 -0700 (PDT)"},{"name":"From","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"shanmuga.m@samsung.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"}]}},{"snippet":"LGTM2 On Jul 12, 2016 9:19 AM, "Shanmuga" <shanmuga.m@samsung.com> wrote: Review Patch : https://codereview.chromium.org/2133983003/ On Tuesday, July 12, 2016 at 4:07:53 PM UTC+5:30,","payload":{"headers":[{"name":"Date","value":"Tue, 12 Jul 2016 09:24:29 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I didn't mention waiting for 3xLGTM when I reviewed https://codereview.chromium.org/2133983003/, so it has already landed. Since this intent seems 99% likely to pass I suggested leaving it in, but","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 09:16:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"},{"name":"To","value":"Rick Byers <rbyers@google.com>, Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 On Wed, Jul 13, 2016 at 11:16 AM Philip Jägenstedt <foolip@chromium.org> wrote: I didn't mention waiting for 3xLGTM when I reviewed https://codereview.chromium.org/2133983003/, so it","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 09:22:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: SVGZoomEvent"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@google.com>, Shanmuga <shanmuga.m@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails junov@chromium.org, xlai@chromium.org Link to “Intent to Deprecate” thread https://groups.google.com/a/chromium.org/d/msg/blink-dev/Ud3cV1mj35s/Ssat21OeRqYJ Summary Remove","payload":{"headers":[{"name":"Date","value":"Mon, 11 Jul 2016 08:11:24 -0700 (PDT)"},{"name":"From","value":"\"xlai@chromium.org\" <xlai@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"}]}},{"snippet":"LGTM1, but since it has been deprecated for a long time I suggest first changing the deprecation message to say that it will be removed in M55, and then remove after the next branch point. On Mon, Jul","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 15:27:06 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"\"xlai@chromium.org\" <xlai@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Good suggestion. CL ready in changing the deprecation message in M54 before removal in M55. On Mon, Jul 11, 2016 at 11:27 AM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM1, but since it","payload":{"headers":[{"name":"From","value":"xlai <xlai@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 14:10:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Mon, Jul 11, 2016 at 11:10 AM, xlai <xlai@chromium.org> wrote: Good suggestion. CL ready in changing the deprecation message in M54 before removal in M55. On Mon, Jul 11, 2016 at 11:27","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 16:32:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"xlai <xlai@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, Jul 12, 2016 at 7:32 PM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On Mon, Jul 11, 2016 at 11:10 AM, xlai <xlai@chromium.org> wrote: Good suggestion. CL ready in","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 20:27:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"xlai <xlai@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Could someone familiar with the details create a Chrome Status entry for this? Joe Medley | Technical Writer, Chrome DevRel | jmedley@google.com | 816-678-7195 If an API's not documented it doesn","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 09:34:23 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, xlai <xlai@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I created the entry recently: https://www.chromestatus.com/features/5639849247768576 On Thu, Jul 14, 2016 at 12:34 PM, Joe Medley <jmedley@google.com> wrote: Could someone familiar with the","payload":{"headers":[{"name":"From","value":"xlai <xlai@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 12:54:26 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: CanvasRenderingContext2D.webkitImageSmoothingEnabled"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-07-04 00:00:00 till 2016-07-11 00:00:00 (UTC time). CQ users: 286 out of 287 total committers 99.65%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 12:14:02 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of July 4"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-07-04 00:00:00 till 2016-07-11 00:00:00 (UTC time). CQ users: 110 out of 110 total committers 100.00%","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 13:42:56 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of July 4"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Let me summarize Q2 highlights of the arch team, hoping it will be helpful to understand what the team is doing :) You can find more details here. Memory: - Removed all WillBe types. Removed !ENABLE","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 20:41:18 +0900"},{"name":"Subject","value":"[blink-dev] Q2 accomplishments of the Platform Architecture team"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Q3 OKRs are mostly finalized! Memory: (bashi) Wrote a design doc for Memory Coordinator v0 and reached consensus. Landing the CLs one by one. (hajimehoshi) Removing duplicated encoded images from","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 18:07:17 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-07-11 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole Blink 10342 (-66) 205 (+3) 849 (-18) 444 (-23) 95 Jul 2009 Uncategorized 70 (-103) 1 (+1) 16 (-41) 2","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 07:40:15 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-07-11"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails johnme@chromium.org Spec https://w3c.github.io/push-api/#idl-def-PushSubscription (minor update not worth TAG review) Summary An "options" attribute is added to the","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 14:15:49 +0100"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1, but I wonder about the timing. getSubscription says "Return promise and continue the following steps asynchronously." and then "If the Service Worker is not subscribed, resolve","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 13:59:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"John Mellor <johnme@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"> I can't tell if calling getSubscription() immediately after subscribe() should always resolve with a PushSubscription object, always null, or if it's racy? Maybe a simpler design would be","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 15:53:04 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Jul 8, 2016 at 7:53 AM, John Mellor <johnme@chromium.org> wrote: > I can't tell if calling getSubscription() immediately after subscribe() should always resolve with a","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 08:03:41 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"John Mellor <johnme@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 8, 2016 at 4:53 PM John Mellor <johnme@chromium.org> wrote: > I can't tell if calling getSubscription() immediately after subscribe() should always resolve with a","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 15:04:09 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"John Mellor <johnme@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 8 July 2016 at 16:04, Philip Jägenstedt <foolip@chromium.org> wrote: On Fri, Jul 8, 2016 at 4:53 PM John Mellor <johnme@chromium.org> wrote: > I can't tell if calling","payload":{"headers":[{"name":"From","value":"John Mellor <johnme@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 19:30:29 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, I suppose that the order of promise fulfillment is left undefined more often than not, and that races are common. I was just thinking that if one does something user-visible with the result of","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 10:34:59 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"John Mellor <johnme@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, Jul 11, 2016 at 6:34 AM, Philip Jägenstedt <foolip@chromium.org> wrote: Yes, I suppose that the order of promise fulfillment is left undefined more often than not, and that races","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 12 Jul 2016 20:51:41 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: PushSubscription.options"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"John Mellor <johnme@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (Oslo) and Samsung (Boston). We are tasked with improving the style engine in Blink. Our","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 10:21:17 +1000"},{"name":"Subject","value":"[blink-dev] (belated) Last week in style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello! I have a service worker (http://pushpad.xyz/service-worker.js) like this: ... return self.","payload":{"headers":[{"name":"Date","value":"Thu, 7 Jul 2016 10:39:37 -0700 (PDT)"},{"name":"From","value":"collimarco91@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Refresh Service Worker in Production (Push API)"}]}},{"snippet":"bcc blink-dev: this mailing list is for discussion about the design and implementation of Blink. I recommend service-worker-discuss or Stack Overflow for questions like this. Basically a service worker","payload":{"headers":[{"name":"From","value":"Matt Falkenhagen <falken@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 10:54:13 +0900"},{"name":"Subject","value":"Re: [blink-dev] Refresh Service Worker in Production (Push API)"},{"name":"To","value":"collimarco91@gmail.com"}]}}]},{"messages":[{"snippet":"Contact emails nzolghadr@chromium.org Spec https://navidz.github.io/auxclick/ Summary The new input","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 17:23:59 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement: auxclick"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Example 2 in https://navidz.github.io/auxclick/ seems a bit strange. Shouldn't showing the context menu be the default action of an auxclick event rather than the other way around? And which spec","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 11:46:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: auxclick"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There was this issue about the context menu and auxclick: https://github.com/NavidZ/auxclick/issues/1 Contextmenu event cannot be the default action of auxclick as for example on Linux it happens right","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 14:37:44 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: auxclick"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ah, the context menu does appear on mousedown on Linux, I hadn't really noticed. My next though was that preventDefault() in the mousedown event should prevent the context menu, but the whole point","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 14:48:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: auxclick"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Since Web Notifications expose system-level functionality to websites, one of our goals is to enable","payload":{"headers":[{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 17:58:29 +0100"},{"name":"Subject","value":"Accurate exposure of Notification properties"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"platform-architecture-dev@chromium.org"}]}},{"snippet":"I like this; I think it's the right approach. Feature detection of exposed interfaces *should* be","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 17:02:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] Accurate exposure of Notification properties"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"I think I like this idea, but this is probably more of a standards discussion than a blink","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 17:34:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] Accurate exposure of Notification properties"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"How would a website detect whether a certain feature of site input device is present or not? Rick Byers <rbyers@chromium.org> schrieb am Do., 7. Juli 2016, 23:34: I think I like this idea, but","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 04:58:44 +0000"},{"name":"Subject","value":"Re: [blink-dev] Accurate exposure of Notification properties"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"Note that the more dynamic the system is that constructs our interfaces the slower it is. In general I don't think we want to do this for very many things on the web, we need context creation to be","payload":{"headers":[{"name":"Date","value":"Thu, 7 Jul 2016 22:20:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Accurate exposure of Notification properties"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"platform-architecture-dev <platform-architecture-dev@chromium.org>, Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mab@google.com, agl@chromium.org, davidben@chromium.org Summary and motivation CECPQ1","payload":{"headers":[{"name":"From","value":"Adam Langley <agl@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 08:43:39 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>"}]}},{"snippet":"A two year period is a very long time... Servers may depend on it. I understand this will be","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 7 Jul 2016 19:12:07 +0300"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Adam Langley <agl@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 9:12 AM, PhistucK <phistuck@gmail.com> wrote: A two year period is a","payload":{"headers":[{"name":"From","value":"Adam Langley <agl@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 09:24:16 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>"}]}},{"snippet":"Do you have any concrete research plans, or do you know about researchers that will yet to evaluate","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 16:38:42 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Adam Langley <agl@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 9:38 AM, Jochen Eisinger <jochen@chromium.org> wrote: Do you have any","payload":{"headers":[{"name":"From","value":"Adam Langley <agl@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 09:50:26 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"Is there a spec for CECPQ1? Does it follow from the work of Stebila et al that NewHope + ECDSA is at","payload":{"headers":[{"name":"From","value":"\"'Katriel Cohn-Gordon' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 17:06:07 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Adam Langley <agl@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 10:06 AM, Katriel Cohn-Gordon <katrielc@google.com> wrote: Is there a","payload":{"headers":[{"name":"From","value":"Adam Langley <agl@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 10:44:00 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Katriel Cohn-Gordon <katrielc@google.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"out of curiosity, is there a high-level description available somewhere for why NewHope is supposedly","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 18:12:14 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Adam Langley <agl@chromium.org>, Katriel Cohn-Gordon <katrielc@google.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 11:12 AM, Jochen Eisinger <jochen@chromium.org> wrote: > out of","payload":{"headers":[{"name":"From","value":"Adam Langley <agl@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 11:32:40 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Katriel Cohn-Gordon <katrielc@google.com>, PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"(Disclaimer: not even a little bit of an expert in post-quantum crypto.) There is some evidence that","payload":{"headers":[{"name":"From","value":"\"'Katriel Cohn-Gordon' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 18:51:58 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Adam Langley <agl@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"LGTM2 Experiments that we can try (without putting Chrome/Google at some special advantage in the","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 17:43:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Katriel Cohn-Gordon <katrielc@google.com>"},{"name":"Cc","value":"Adam Langley <agl@chromium.org>, Jochen Eisinger <jochen@chromium.org>, PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"thanks for sharing. It would be nice to have some more details though, so if somebody is willing to write a server supporting this Cipher can do it (without getting crazy doing reverse engineering),","payload":{"headers":[{"name":"From","value":"Antonio Sanso <antonio.sanso@gmail.com>"},{"name":"Date","value":"Fri, 8 Jul 2016 13:20:23 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Katriel Cohn-Gordon <katrielc@google.com>, Adam Langley <agl@chromium.org>, Jochen Eisinger <jochen@chromium.org>, PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"LGTM3 Given TLSs negotiation and that the experiment isn't intended to ever be enabled for 100% of the users (right?) the risk of lock-in here seems small. On security I am totally unqualified, but","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 12:20:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: CECPQ1 for TLS"},{"name":"To","value":"Antonio Sanso <antonio.sanso@gmail.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Katriel Cohn-Gordon <katrielc@google.com>, Adam Langley <agl@chromium.org>, Jochen Eisinger <jochen@chromium.org>, PhistucK <phistuck@gmail.com>, David Benjamin <davidben@google.com>, Matt Braithwaite <mab@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Si usted no es capaz de ver este email, haga clic aquí ¡Únete a nuestro club filatélico! ¿Todavía no","payload":{"headers":[{"name":"To","value":"<blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Únete al club filatélico"},{"name":"From","value":"\"Club Filatélico Español\" <info@clubfilatelico.es>"},{"name":"Date","value":"Thu, 07 Jul 2016 16:40:46 +0200"}]}}]},{"messages":[{"snippet":"eng (and PM) emails csharrison@chromium.org Summary Right now, the preload scanner will send fetches","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 08:56:34 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"The preload scanner doesn't have a spec (yet?) but at least https://html.spec.whatwg.org/","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 13:28:59 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 9:28 AM, Philip Jägenstedt <foolip@chromium.org> wrote: The preload","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 09:55:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"I'll try to test Edge later today when I can get my hands on a windows machine. simonp@ mentions","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 10:15:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, simonp@opera.com"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"On Thu, Jul 7, 2016 at 3:56 PM Rick Byers <rbyers@chromium.org> wrote: On Thu, Jul 7, 2016 at 9","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 14:20:43 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"I just did a quick test of Edge and it does make a request for this case: <script type="text/","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 14:28:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Charles Harrison <csharrison@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"I tested Safari with an HTML file with: <script type="text/template" src="/ping.js","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 10:55:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"On Thu, 07 Jul 2016 16:55:00 +0200, 'Charles Harrison' via blink-dev <blink-dev@chromium.","payload":{"headers":[{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Charles Harrison <csharrison@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"Date","value":"Thu, 07 Jul 2016 22:25:58 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"Ah thanks for the clarification. I've been away from a Mac to test this with. In any case it","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 16:29:37 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"On Thu, 07 Jul 2016 22:29:37 +0200, Charles Harrison <csharrison@google.com> wrote: > Ah","payload":{"headers":[{"name":"To","value":"Charles Harrison <csharrison@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"Date","value":"Fri, 08 Jul 2016 00:37:42 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"What would an analysis of httparchive tell us that a UseCounter couldn't? I guess we could actually inspect the more popular pages to see if they rely on this behavior? On Thu, Jul 7, 2016 at 6:37","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 20:30:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"On Fri, 08 Jul 2016 00:37:42 +0200, Simon Pieters <simonp@opera.com> wrote: > On Thu, 07 Jul 2016 22:29:37 +0200, Charles Harrison > <csharrison@google.com> wrote: > >> Ah","payload":{"headers":[{"name":"To","value":"Charles Harrison <csharrison@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"Date","value":"Fri, 08 Jul 2016 10:28:30 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"Thanks for the analysis. It's definitely possible to run this analysis using web page test. I'll see if I can fire off a job today. I glanced at some sifr/prefetch code and it looks like it","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 08:22:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Jobs fired. There are a lot of URLs in the corpus so it might take > 24h for the test to finish. This is on mobile with a simulated 3G network, with content_shell_apk builds from TOT (#404341) with","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 11:14:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Update: seems like I maybe broke WPT slightly with that test. Working it out right now with pmeenan@. On Fri, Jul 8, 2016 at 11:14 AM, Charles Harrison <csharrison@google.com> wrote: Jobs fired.","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 12:29:36 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Okay we got the analysis working! The results of the experiment page summaries are attached. Here is a link to the analysis using ab_analysis.py in the WPT github repo. Spoiler: The data is pretty","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 14:49:53 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Hmm, so it looks like it's pretty evenly distributed around 0% change. Can the distribution be explained entirely by noise, or can you tease out something statistically significant from this? On","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 03:24:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>, Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"There's not much significance unfortunately. Looking at % improvement, we're looking at a mean of 1% with a standard deviation of 17%. This could definitely be explained by noise. It might be","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Tue, 19 Jul 2016 23:31:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Simon Pieters <simonp@opera.com>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"Does ab_analysis provide a way to dump the test ID's (or WPT URLs) as part of the comparison? It would be interesting to look at a few of the waterfalls for some of the sites to make sure it is","payload":{"headers":[{"name":"From","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 08:13:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"I don't think it does currently. Might be able to add it locally though. I just used WPT search UI to look at the extreme outliers, but it would be nice to see them all. On Wed, Jul 20, 2016 at 8:","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Wed, 20 Jul 2016 08:22:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"I have updated the analysis in sheets to include columns for experiment / control urls. I'll create a pull request adding this feature (+ some fixes) to webpagetest. On Wed, Jul 20, 2016 at 8:22 AM","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 29 Jul 2016 15:45:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, \"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Is this intent blocked on API owner feedback? On Friday, July 29, 2016 at 12:45:36 PM UTC-7, Charles Harrison wrote: I have updated the analysis in sheets to include columns for experiment / control","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 16:17:41 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"pmeenan@chromium.org, foolip@chromium.org, simonp@opera.com, rbyers@chromium.org, yoav@yoav.ws"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"}]}},{"snippet":"I think this is blocked on just manually going through some of these URLs and seeing if anything looks fishy. I haven't had much time to look at this though. Will hopefully be able to look at some","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 20:57:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"dknox@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"Apologies, by "today" I mean "this week" :) On Mon, Aug 8, 2016 at 8:57 PM, Charles Harrison <csharrison@google.com> wrote: I think this is blocked on just manually going","payload":{"headers":[{"name":"From","value":"\"'Charles Harrison' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 8 Aug 2016 20:58:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"dknox@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>"}]}},{"snippet":"I'm looking through the script tags, filtered by ones which showed some significance on WPT. The vast majority are false positives from the http archive scrape (ie document.writes with string","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 16:17:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"},{"name":"To","value":"Dru Knox <dknox@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Simon Pieters <simonp@opera.com>, Rick Byers <rbyers@chromium.org>, Yoav Weiss <yoav@yoav.ws>, Jeff Kaufman <jefftk@google.com>"}]}},{"snippet":"Bump - looking for API owner feedback! On Saturday, August 13, 2016 at 6:18:01 AM UTC+10, Charles Harrison wrote: I'm looking through the script tags, filtered by ones which showed some","payload":{"headers":[{"name":"Date","value":"Sun, 14 Aug 2016 17:20:47 -0700 (PDT)"},{"name":"From","value":"dknox via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dknox@google.com, pmeenan@chromium.org, foolip@chromium.org, simonp@opera.com, rbyers@chromium.org, yoav@yoav.ws, jefftk@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate And Remove: fetches for script tags with invalid type/language attributes"}]}}]},{"messages":[{"snippet":"Contact emails binlu@googe.com, ojan@chromium.org, kenjibaheux@chromium.org, aemiller@google.com Spec","payload":{"headers":[{"name":"From","value":"\"'Bin Lu' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 16:19:31 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"ojan@chromium.org, kenjibaheux@chromium.org, Allison Miller <aemiller@google.com>"}]}},{"snippet":"LGTM1 On Wed, Jul 6, 2016 at 1:19 PM, 'Bin Lu' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 14:05:43 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Bin Lu <binlu@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"I've seen these ads as well and I'm not sure this mitigation will help because the ads are in","payload":{"headers":[{"name":"From","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 14:13:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Bin Lu <binlu@google.com>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"Or limit it to only being usable when showing a notification (that's presumably a primary use","payload":{"headers":[{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 14:36:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Bin Lu <binlu@google.com>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"See my inline comments below. Ojan and Kenji, please correct me if I miss something. I've seen","payload":{"headers":[{"name":"From","value":"\"'Bin Lu' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 17:54:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"Regardless of the bigger picture discussion here, disabling in cross-origin iframes seems valuable","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 18:03:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Bin Lu <binlu@google.com>"},{"name":"Cc","value":"Darin Fisher <darin@chromium.org>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"+1, agreed this seems like a low risk & positive change. -Darin On Wed, Jul 6, 2016 at 3:03 PM,","payload":{"headers":[{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 15:08:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"LGTM3. On Thu, Jul 7, 2016 at 7:08 AM, Darin Fisher <darin@chromium.org> wrote: +1, agreed this","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 08:42:37 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"To give a user angle to the data, 0.2-0.3% of Chrome Android users end up hitting cross origin iframe","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"Date","value":"Thu, 07 Jul 2016 10:17:09 +0100"}]}},{"snippet":"What about game aggregators (games on Facebook, for example)? Blocking cross origin vibrations will","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 7 Jul 2016 19:35:56 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Darin Fisher <darin@chromium.org>, Rick Byers <rbyers@chromium.org>, Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"Sandbox tokens are for things that are enabled by default in iframes but are disabled by the sandbox and thus need a way to opt back in. This would be a feature that's disabled by default and thus","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 11:31:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Darin Fisher <darin@chromium.org>, Rick Byers <rbyers@chromium.org>, Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"See also https://github.com/noncombatant/permission-delegation-api/issues/21 to see the distinction between allowing an iframe to use an API at all (what allow* does) and delegating a permission so","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 08 Jul 2016 11:35:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Darin Fisher <darin@chromium.org>, Rick Byers <rbyers@chromium.org>, Bin Lu <binlu@google.com>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}},{"snippet":"Thanks all for the feedback. So far, it seems that: It's agreed that blocking cross-origin iframe vibrations is a low risk & positive change. It's suggested to add a way to re-enable","payload":{"headers":[{"name":"From","value":"\"'Bin Lu' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 11 Jul 2016 12:00:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Block navigator.vibrate in cross-origin iframes"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Mounir Lamouri <mounir@lamouri.fr>, \"TAMURA, Kent\" <tkent@chromium.org>, Darin Fisher <darin@chromium.org>, Rick Byers <rbyers@chromium.org>, Philip Rogers <pdr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Ojan Vafai <ojan@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Allison Miller <aemiller@google.com>"}]}}]},{"messages":[{"snippet":"Contact emails dtapuska@chromium.org Spec https://w3c.github.io/pointerevents/ Summary The touch-","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 16:15:23 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Wed, Jul 6, 2016 at 1:15 PM, Dave Tapuska <dtapuska@chromium.org> wrote: Contact","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 14:11:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I need to post a follow-up on this. In terms of Microsoft support it is not supported. I should have","payload":{"headers":[{"name":"Date","value":"Wed, 6 Jul 2016 17:44:15 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jul 6, 2016 at 2:44 PM, Dave Tapuska <dtapuska@chromium.org> wrote: I need to post a","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 14:45:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There's some spec discussion here. Personally I'd prefer to wait until we've got a public","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 17:52:39 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>, Ted Dinklocker <ted.dinklocker@microsoft.com>"}]}},{"snippet":"Ok. Then I'm fine punting on this until after the F2F. I was just following up some action items","payload":{"headers":[{"name":"Date","value":"Wed, 6 Jul 2016 18:07:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Ted Dinklocker <ted.dinklocker@microsoft.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"All – This is Ted from the Edge Web Platform Team at Microsoft. I just wanted to clarify some timeline information to the broader group as well. We are doing some architectural changes in this area","payload":{"headers":[{"name":"From","value":"\"'Ted Dinklocker' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"CC","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Ship: Support touch-action pan-up pan-down pan-left pan-right CSS properties"},{"name":"Date","value":"Tue, 12 Jul 2016 17:07:55 +0000"}]}}]},{"messages":[{"snippet":"Hey, I'm currently landing some V8 changes to allow for constructing lightweight RemoteFrames, ie","payload":{"headers":[{"name":"From","value":"\"'Jochen Eisinger' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 06 Jul 2016 14:44:38 +0000"},{"name":"Subject","value":"[blink-dev] Design doc for OOPIF / v8 context support"},{"name":"To","value":"v8-dev <v8-dev@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"[+site-isolation-dev] Thanks for working on this! Charlie On Wed, Jul 6, 2016 at 7:44 AM, 'Jochen","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 11:13:27 -0700"},{"name":"Subject","value":"Re: [blink-dev] Design doc for OOPIF / v8 context support"},{"name":"To","value":"Jochen Eisinger <eisinger@google.com>"},{"name":"Cc","value":"v8-dev <v8-dev@googlegroups.com>, blink-dev <blink-dev@chromium.org>, \"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}},{"snippet":"The design looks good. On Thu, Jul 7, 2016 at 3:13 AM, Charlie Reis <creis@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 09:44:07 +0900"},{"name":"Subject","value":"Re: [blink-dev] Design doc for OOPIF / v8 context support"},{"name":"To","value":"Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <eisinger@google.com>, v8-dev <v8-dev@googlegroups.com>, blink-dev <blink-dev@chromium.org>, \"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Q2 Bug summary Beginning of Q2 (2016-04-01): 1466 Beginning of Q3 (2016-07-04): 1477 (+11) Open# at","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Wed, 6 Jul 2016 16:45:19 +0900"},{"name":"Subject","value":"[blink-dev] HTML/DOM team biweekly snippet (June 20 - July 3)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dom-dev@chromium.org"}]}}]},{"messages":[{"snippet":"It is likely due to stale .pyc files; see crbug.com/625877. Quick fix: rm third_party/WebKit/Tools/","payload":{"headers":[{"name":"From","value":"Quinten Yearsley <qyearsley@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 14:19:30 -0700"},{"name":"Subject","value":"[blink-dev] PSA: If layout tests fail to run for you today"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I find... git clean -fxd third_party/WebKit/Tools/ more reliable. On Tue, Jul 5, 2016 at 5:19 PM,","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 17:22:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: If layout tests fail to run for you today"},{"name":"To","value":"Quinten Yearsley <qyearsley@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi We (hiroshige@, tzik@, nhiroki@, haraken@) are planning to move all timers/tasks/EventSenders from","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 14:59:12 +0900"},{"name":"Subject","value":"[blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Task cancelation and posting is very expensive with the base primitives, we need to be careful there.","payload":{"headers":[{"name":"Date","value":"Mon, 4 Jul 2016 23:22:35 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 3:22 PM Elliott Sprehn <esprehn@chromium.org> wrote: Task cancelation","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 05 Jul 2016 06:38:44 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+hiroshige@ has some idea on the task cancellation. On Tue, Jul 5, 2016 at 3:22 PM, Elliott Sprehn","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 15:38:59 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Hiroshige Hayashizaki <hiroshige@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Jul 4, 2016 11:38 PM, "Daniel Cheng" <dcheng@chromium.org> wrote: > > On Tue","payload":{"headers":[{"name":"Date","value":"Tue, 5 Jul 2016 00:00:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Also sorry if I wasn't clear but EventSender is a batching system. So once we remove it inserting","payload":{"headers":[{"name":"Date","value":"Tue, 5 Jul 2016 00:55:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"dcheng@chromium.org, Gabriel Charette <gab@chromium.org>, Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"btw, feel free to mark such threads as intent to implement in the future :) On Tue, Jul 5, 2016 at 9:","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 05 Jul 2016 07:57:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, dcheng@chromium.org, Gabriel Charette <gab@chromium.org>, Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 4:55 PM, Elliott Sprehn <esprehn@chromium.org> wrote: Also sorry if I","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 17:21:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, Sami Kyostila <skyostil@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Jul 5, 2016 1:22 AM, "Kentaro Hara" <haraken@chromium.org> wrote: > > On Tue","payload":{"headers":[{"name":"Date","value":"Tue, 5 Jul 2016 01:47:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"dcheng@chromium.org, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 5:47 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Jul 5, 2016 1:","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 18:00:11 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"On Jul 5, 2016 2:00 AM, "Kentaro Hara" <haraken@chromium.org> wrote: > > On Tue","payload":{"headers":[{"name":"Date","value":"Tue, 5 Jul 2016 02:09:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"dcheng@chromium.org, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 6:09 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Jul 5, 2016 2:","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 18:21:58 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"> That's working around us dispatching document load event sync incorrectly, it's not an","payload":{"headers":[{"name":"From","value":"Hiroshige Hayashizaki <hiroshige@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 18:38:08 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 7:22 AM, Elliott Sprehn <esprehn@chromium.org> wrote: Task cancelation","payload":{"headers":[{"name":"From","value":"\"'Alex Clarke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 10:50:01 +0100"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 10:50 AM, Alex Clarke <alexclarke@google.com> wrote: On Tue, Jul 5, 2016","payload":{"headers":[{"name":"From","value":"\"'Alex Clarke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 10:54:08 +0100"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Question from the sidelines: how is cancellation managed in Blink? If it uses something like","payload":{"headers":[{"name":"From","value":"Gabriel Charette <gab@chromium.org>"},{"name":"Date","value":"Tue, 05 Jul 2016 14:37:16 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Hiroshige Hayashizaki <hiroshige@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Gabriel Charette <gab@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}},{"snippet":"On Tue, Jul 5, 2016 at 3:37 PM, Gabriel Charette <gab@chromium.org> wrote: Question from the","payload":{"headers":[{"name":"From","value":"\"'Alex Clarke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 5 Jul 2016 16:06:28 +0100"},{"name":"Subject","value":"Re: [blink-dev] PSA: Moving all timers/tasks/EventSenders to a per-iframe scheduler"},{"name":"To","value":"Gabriel Charette <gab@chromium.org>"},{"name":"Cc","value":"Hiroshige Hayashizaki <hiroshige@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Kentaro Hara <haraken@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Sami Kyostila <skyostil@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-06","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 4 Jul 2016 10:51:23 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of June 27"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-06-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 4 Jul 2016 11:16:04 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of June 27"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-07-04 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 4 Jul 2016 08:25:02 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-07-04"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"I was just scrolling through all the different issue people have reported. Although most of you","payload":{"headers":[{"name":"Date","value":"Sun, 3 Jul 2016 07:03:50 -0700 (PDT)"},{"name":"From","value":"cody@meatify.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Strange recurring outdated JS, expired certificates, extensions and native extensions that cause data loss and inter product interactions. I'm certain that there has somehow been a serious abuse and use of \"blink-dev\" or related technology..."}]}}]},{"messages":[{"snippet":"Hello Everyone, We have branched for M53. Please read through this entire email if you plan on making","payload":{"headers":[{"name":"Date","value":"Fri, 1 Jul 2016 16:03:41 -0700 (PDT)"},{"name":"From","value":"\"'Krishna Govind' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] M53 branch is here!"}]}},{"snippet":"在 2016年7月2日星期六 UTC+8上午7:03:46,Krishna Govind写道: Hello Everyone, We have branched for M53. Please read through this entire email if you plan on making changes that you want in this release. Branches","payload":{"headers":[{"name":"Date","value":"Mon, 8 Aug 2016 20:47:16 -0700 (PDT)"},{"name":"From","value":"lifajing398@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chromium-dev@chromium.org, govind@google.com"},{"name":"Subject","value":"[blink-dev] Re: M53 branch is here!"}]}},{"snippet":"Please use "gclient sync" with "--with_branch_heads" option. On 9 August 2016 at 04:47, <lifajing398@gmail.com> wrote: 在 2016年7月2日星期六 UTC+8上午7:03:46,Krishna Govind写道: Hello","payload":{"headers":[{"name":"From","value":"Alexander Timin <altimin@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 17:56:38 +0100"},{"name":"Subject","value":"Re: [blink-dev] Re: M53 branch is here!"},{"name":"To","value":"lifajing398@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, chromium-dev@chromium.org, Krishna Govind <govind@google.com>"}]}}]},{"messages":[{"snippet":"Hello folks, We are writing an android app in which we want to execute javascript from app. Since v8","payload":{"headers":[{"name":"Date","value":"Fri, 1 Jul 2016 14:57:55 -0700 (PDT)"},{"name":"From","value":"Poorna <bhagatindia@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Executing javascript using v8 through blink"}]}},{"snippet":"Unfortunately this is not possible. V8 is not exposed through the NDK and so it is not possible to","payload":{"headers":[{"name":"From","value":"Ross McIlroy <rmcilroy@chromium.org>"},{"name":"Date","value":"Mon, 4 Jul 2016 14:07:53 +0100"},{"name":"Subject","value":"Re: [blink-dev] Executing javascript using v8 through blink"},{"name":"To","value":"Poorna <bhagatindia@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you very much Ross. The detailed explanation and the alternatives makes sense On Mon, Jul 4,","payload":{"headers":[{"name":"From","value":"PoornaChand Srinivas Perumalla <bhagatindia@gmail.com>"},{"name":"Date","value":"Mon, 4 Jul 2016 09:33:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Executing javascript using v8 through blink"},{"name":"To","value":"Ross McIlroy <rmcilroy@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I've installed Android N in hopes of adding a more secure way of updating my device. For more","payload":{"headers":[{"name":"Date","value":"Fri, 1 Jul 2016 12:31:14 -0700 (PDT)"},{"name":"From","value":"codyatmeatify@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Cannot update, phone displaying all different dates of the TOS pages."}]}},{"snippet":"Sorry, but this is unrelated to Blink, or Chromium. Search for an Android Google Group or product","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 2 Jul 2016 10:01:09 +0300"},{"name":"Subject","value":"Re: [blink-dev] Cannot update, phone displaying all different dates of the TOS pages."},{"name":"To","value":"codyatmeatify@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"No tengo acceso a facebook; ayudarme a desbloquearlo. Gracias","payload":{"headers":[{"name":"Date","value":"Fri, 1 Jul 2016 08:22:08 -0700 (PDT)"},{"name":"From","value":"fgarcia39@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Desbloquear acceso a facebook"}]}},{"snippet":"For support, use https://productforums.google.com/forum/#!forum/chrome-es (I assume you are writing","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 1 Jul 2016 20:08:01 +0300"},{"name":"Subject","value":"Re: [blink-dev] Desbloquear acceso a facebook"},{"name":"To","value":"fgarcia39@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I'd like to remove blink::WebURLResponse::initialize() and just allocate m_private in the","payload":{"headers":[{"name":"From","value":"\"'Adam Rice' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 12:20:19 +0900"},{"name":"Subject","value":"[blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jun 30, 2016 at 8:20 PM 'Adam Rice' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Adam Barth <abarth@chromium.org>"},{"name":"Date","value":"Fri, 01 Jul 2016 03:25:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"To","value":"Adam Rice <ricea@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That seems reasonable to me: I assume we'll keep the current behavior that a default-constructed","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Fri, 01 Jul 2016 03:47:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"To","value":"Adam Barth <abarth@chromium.org>, Adam Rice <ricea@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I must admit I failed to spot the isNull() method. The semantics won't change. In a quick scan of","payload":{"headers":[{"name":"From","value":"\"'Adam Rice' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 14:06:02 +0900"},{"name":"Subject","value":"Re: [blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Adam Barth <abarth@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This change makes sense. What Adam said. WebURLRequest could benefit from the same change. There are","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 23:06:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"To","value":"Adam Rice <ricea@google.com>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Adam Barth <abarth@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sounds reasonable to me too. Looks like at least WebURLRequest, WebURLLoadTiming, WebHTTPBody seem to","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 16:15:15 +0900"},{"name":"Subject","value":"Re: [blink-dev] Request To Delete WebURLResponse::initialize"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"Adam Rice <ricea@google.com>, Daniel Cheng <dcheng@chromium.org>, Adam Barth <abarth@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 09:00:26 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (Jun 13 - Jun 30)"},{"name":"To","value":"Chromium Loading Performance <loading-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"hi, I am researching Chromium for Android. I want to append some new JS object and functions.","payload":{"headers":[{"name":"From","value":"\"Allen.W\" <17742238@qq.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] technical help"},{"name":"Date","value":"Thu, 30 Jun 2016 15:53:47 +0800"}]}},{"snippet":"Hi, Maybe you can try this: https://cs.chromium.org/chromium/src/content/public/android/java/src/org/","payload":{"headers":[{"name":"From","value":"\"Willy Yu (游佳偉)\" <Willy.Yu@mediatek.com>"},{"name":"To","value":"\"Allen.W\" <17742238@qq.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] technical help"},{"name":"Date","value":"Thu, 30 Jun 2016 08:03:19 +0000"}]}}]},{"messages":[{"snippet":"I wanted to change my browser to google.com. Everytime it open up to google.com.au. I dont want .au.","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 19:29:13 -0700 (PDT)"},{"name":"From","value":"helenscchin@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Chrome google is not right. Its looks funny."}]}},{"snippet":"[blink-dev to bcc] This is a developers mailing list, not a support list. You can try the information","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 13:50:20 +1000"},{"name":"Subject","value":"Re: [blink-dev] Chrome google is not right. Its looks funny."},{"name":"To","value":"helenscchin@gmail.com"}]}}]},{"messages":[{"snippet":"Primary eng email mmenke@chromium.org Summary HTTP/0.9 is the predecessor to HTTP/1.x. The big","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 21:03:13 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Of the possible HTTP/0.9 responses, how many occur in the main frame? In other words how many more","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 18:10:39 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"net-dev@chromium.org, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I vaguely remember that HTTP/0.9 is used a lot in the context of proxies (which a lot of the time","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 30 Jun 2016 08:58:57 +0300"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"Matt Menke <mmenke@google.com>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hooray for the idea that we might at last remove support for this misbegotten pitiful excuse for a","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 09:49:54 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev@chromium.org, Darin Fisher <darin@chromium.org>, Matt Menke <mmenke@google.com>"}]}},{"snippet":"Since you're targeting M54, can we collect data on M53 on how many additional error pages we'","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 07:52:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev@chromium.org, Darin Fisher <darin@chromium.org>, Matt Menke <mmenke@google.com>"}]}},{"snippet":"0.01% is a very high worst case number, if even a tiny fraction of that amounts to a total failure to","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 11:19:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev@chromium.org, Darin Fisher <darin@chromium.org>, Matt Menke <mmenke@google.com>"}]}},{"snippet":"I'm happy to add the requested histogram to M53. In terms of code complexity, removing HTTP/0.9","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 07:35:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"This is a tricky tradeoff, between unknown compat risk and a low severity security issue, but LGTM2.","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 12:52:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"SGTM. I'll add the histograms to M53, remove from M54 promptly with a new error code (Faster","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 08:57:52 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"It would be great if you could add it to ChromeStatus. This makes sure (or makes it more likely that)","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 30 Jun 2016 17:32:43 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"Done (I marked it as removed in M54 - not sure if there's some better way to represent the","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 13:24:11 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"I think deprecated in Chrome 53 works and when you decide to remove (before Chrome 54 beta is out, or","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 30 Jun 2016 20:33:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Darin Fisher <darin@chromium.org>"}]}},{"snippet":"LGTM, FWIW. Thank you, from security team. :) But, I also think FTP can go. A seemingly-relevant","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 11:17:42 -0700 (PDT)"},{"name":"From","value":"\"'Chris Palmer' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"net-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"}]}},{"snippet":"LGTM3 On Jun 30, 2016 2:17 PM, "'Chris Palmer' via blink-dev" <blink-dev@","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 14:22:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chris Palmer <palmer@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Should we have a backup plan ready to mitigate the security issue in case we find the breakage/","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 14:26:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chris Palmer <palmer@google.com>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There are some separate bugs about removing FTP and it's been on the table before - but let's","payload":{"headers":[{"name":"From","value":"Chris Bentzel <cbentzel@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 18:36:08 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Chris Palmer <palmer@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"net-dev@chromium.org"}]}},{"snippet":"If need be, we can do what Safari did - restrict HTTP/0.9 to port 80 for HTTP and 443 for HTTPS,","payload":{"headers":[{"name":"From","value":"Matt Menke <mmenke@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 14:39:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Rick Byers <rbyers@google.com>"},{"name":"Cc","value":"Chris Palmer <palmer@google.com>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jun 30, 2016 at 2:39 PM, Matt Menke <mmenke@chromium.org> wrote: If need be, we can do","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 15:05:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@chromium.org>"},{"name":"Cc","value":"Chris Palmer <palmer@google.com>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Rather than consider the percentage of pages, it would be good to see what the percentage impacted","payload":{"headers":[{"name":"Date","value":"Sat, 2 Jul 2016 23:23:59 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"From","value":"Jim Roskind <jim.roskind@gmail.com>"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Matt Menke <mmenke@google.com>"}]}},{"snippet":"We've hit a bit of a snag. The Tenda D301 home router uses HTTP/0.9. While I believe the model is no longer being made, it isn't ancient, or at least it supports 802.11N. Unclear if other Tenda","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 12:00:07 -0400"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Jim Roskind <jim.roskind@gmail.com>"},{"name":"Cc","value":"Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Maybe crazypants, but would it help at all to mitigate the security issue to limit HTTP/0.9 support to intranet or perhaps even to the gateway IP? On Fri, Aug 12, 2016 at 6:00 PM 'Matt Menke'","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 20:14:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>, Jim Roskind <jim.roskind@gmail.com>"},{"name":"Cc","value":"Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Philip Jägenstedt <foolip@chromium.org> wrote: > Maybe crazypants, but would it help at all to mitigate the security issue to > limit HTTP/0.9 support to intranet or perhaps even to the","payload":{"headers":[{"name":"From","value":"Brian Smith <brian@briansmith.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 10:18:04 -1000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Matt Menke <mmenke@google.com>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"The security issue is actually exactly due to HTTP/0.9 connections to intranet IPs (Though intranet IPs with DNS addresses, which some home routers use), so I don't think that helps at all. The","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 16:21:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Brian Smith <brian@briansmith.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Matt Menke <mmenke@google.com> wrote: > The security issue is actually exactly due to HTTP/0.9 connections to > intranet IPs (Though intranet IPs with DNS addresses, which some home >","payload":{"headers":[{"name":"From","value":"Brian Smith <brian@briansmith.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 11:05:40 -1000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"If we have to leave in support for any subset of routers, I don't think the end goal is to eventually remove support completely (Or, perhaps a bit more clearly, I don't think if any broken","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 17:11:27 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Brian Smith <brian@briansmith.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Matt Menke <mmenke@google.com> wrote: > If we have to leave in support for any subset of routers, I don't think the > end goal is to eventually remove support completely (Or, perhaps a","payload":{"headers":[{"name":"From","value":"Brian Smith <brian@briansmith.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 11:20:34 -1000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"That's a fair point. While I'm not sure there's any significant security risk to HTTP/0.9 running on remote sites, we could potentially disallow it on them, just to work towards reducing","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 17:30:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Brian Smith <brian@briansmith.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"FWIW, breaking router config pages is not entirely unprecedented. Chrome 39 dropped support for SSLv3, which broke config pages on most Tomato and DD-WRT routers that had "https only" checked","payload":{"headers":[{"name":"From","value":"Tom Bergan <tombergan@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 14:51:46 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"What about allowing it strictly for typed (well, bookmarked, too) or same-origin navigations? ☆PhistucK On Sat, Aug 13, 2016 at 12:30 AM, 'Matt Menke' via net-dev <net-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 13 Aug 2016 01:53:14 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"The problem with same-origin navigations is that's where the security issue lies (Basically you change the IP the DNS address maps to after the attacking page has been loaded. And there are non-","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 12 Aug 2016 19:07:19 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"+1 to eventually breaking the Tendas of the world. Until they feel the pain, we won't get the gain. Can we be seriously annoying to them by showing an interstitial like we do for self-signed certs,","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sat, 13 Aug 2016 08:07:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Matt Menke <mmenke@google.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"I have been thinking of yellow single-click warning interstitials for things like OCSP server not available for a while now. From: 'Harald Alvestrand' via net-dev <net-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Yuhong Bao <YuhongBao_386@hotmail.com>"},{"name":"To","value":"Matt Menke <mmenke@google.com>, Harald Alvestrand <hta@google.com>"},{"name":"CC","value":"PhistucK <phistuck@gmail.com>, Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"Date","value":"Sat, 13 Aug 2016 06:58:51 +0000"}]}},{"snippet":"Since we're nearing branch, I'm going to go ahead and just disable HTTP/0.9 over non-default ports for the time being. We can still narrow where we allow it in future releases. May add an","payload":{"headers":[{"name":"From","value":"\"'Matt Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 15 Aug 2016 16:16:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate and Remove: HTTP/0.9 Support"},{"name":"To","value":"Yuhong Bao <YuhongBao_386@hotmail.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, PhistucK <phistuck@gmail.com>, Brian Smith <brian@briansmith.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jim Roskind <jim.roskind@gmail.com>, Darin Fisher <darin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Service worker related Working on cookie i18n, how does it work in IE? Strange system. Bad side:","payload":{"headers":[{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 14:27:03 -0700"},{"name":"Subject","value":"[blink-dev] Chrome OWP storage notes: 6/28/16"},{"name":"To","value":"chrome-owp-storage <chrome-owp-storage@google.com>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, June 29: Recent updates: We're continuing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 14:20:57 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, June 29, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 12:00:42 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, My name is Shannon I represent a-Digital-Marketing-Company. We are US based company having a","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 12:51:23 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Shannon Brien | RAPIDNET LLC\" <shannonbrien08@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Hi blink-dev! It's been a week after I landed the gigapatch and I've not received any issues","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 18:56:55 +0900"},{"name":"Subject","value":"[blink-dev] OwnPtr removal completed & feedback form"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng emails toyoshim@chromium.org Summary Deprecate receivedTime attribute from","payload":{"headers":[{"name":"From","value":"Takashi Toyoshima <toyoshim@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 17:45:45 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate: MIDIMessageEvent.receivedTime attribute"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Removing receivedTime will make MIDIMessageEvent a bit similar to BlobEvent, but similar enough to","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 10:11:19 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MIDIMessageEvent.receivedTime attribute"},{"name":"To","value":"Takashi Toyoshima <toyoshim@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you for feedbacks. On Wed, Jun 29, 2016 at 7:11 PM, Philip Jägenstedt <foolip@chromium.org","payload":{"headers":[{"name":"From","value":"Takashi Toyoshima <toyoshim@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 18:27:11 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MIDIMessageEvent.receivedTime attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Jun 30, 2016 at 11:27 AM Takashi Toyoshima <toyoshim@chromium.org> wrote: Thank you for","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 11:10:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MIDIMessageEvent.receivedTime attribute"},{"name":"To","value":"Takashi Toyoshima <toyoshim@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, On Thu, Jun 30, 2016 at 8:10 PM, Philip Jägenstedt <foolip@chromium.org> wrote: On Thu,","payload":{"headers":[{"name":"From","value":"Takashi Toyoshima <toyoshim@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 16:35:52 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MIDIMessageEvent.receivedTime attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello Dear, I am Sgt. Evelyn Liam from United States, Florida to be precisely. I am 28yrs working","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 03:00:20 +0000 (UTC)"},{"name":"From","value":"\"'Zarina Jafar' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] HELLO"}]}},{"snippet":"Hello Dear, I am Sgt. Evelyn Liam from United States, Florida to be precisely. I am 28yrs working","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 03:04:41 +0000 (UTC)"},{"name":"From","value":"\"'Zarina Jafar' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] HELLO"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 907 (↑6%) Number of untriaged/","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 15:58:40 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Looking at the older untriaged/unconfirmed bugs (the ones with the red up arrow): Component=Loader appears to hold the largest stash, ringing up at 191 at this moment. Loading folks, do y'all need","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 15:26:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Q2 Bug Health"},{"name":"To","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Our triage rotation is heavily focused on bugs filed since Q1. We can probably address that at a systemic level by adding a few required filters for triagers. On Wed, Jul 13, 2016 at 6:26 PM, Dimitri","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 18:47:03 -0400"},{"name":"Subject","value":"Re: [blink-dev] Q2 Bug Health"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Shruthi Sreekanta <sshruthi@chromium.org>, blink-dev <blink-dev@chromium.org>, Kinuko Yasuda <kinuko@chromium.org>, Bryan McQuade <bmcquade@chromium.org>"}]}},{"snippet":"Given that the Component=Blink rotation just reached the bottom of their pile, maybe we could add digging into Unconfirmed bits as an optional task to https://sites.google.com/a/chromium.org/dev/blink/","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 13 Jul 2016 16:01:32 -0700"},{"name":"Subject","value":"Re: [blink-dev] Q2 Bug Health"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"Shruthi Sreekanta <sshruthi@chromium.org>, blink-dev <blink-dev@chromium.org>, Kinuko Yasuda <kinuko@chromium.org>, Bryan McQuade <bmcquade@chromium.org>"}]}},{"snippet":"Yeah we haven't been actively triaging bugs filed before Q1. Now that (hopefully) people started becoming more familiar we can add more required filters & can update some of the triage steps (","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Thu, 14 Jul 2016 10:05:49 +0900"},{"name":"Subject","value":"Re: [blink-dev] Q2 Bug Health"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Shruthi Sreekanta <sshruthi@chromium.org>, blink-dev <blink-dev@chromium.org>, Bryan McQuade <bmcquade@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev@chromium A group of us works part-time on improving the infrastructure instead of","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 19:47:46 -0700"},{"name":"Subject","value":"[blink-dev] Blink infra monthly meeting notes"},{"name":"To","value":"blink-infra@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails mgiuca@chromium.org, dominickn@chromium.org Spec https://w3c.github.io/manifest/#","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 02:04:37 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Mon, Jun 27, 2016 at 7:04 PM, Matt Giuca <mgiuca@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 20:11:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 27, 2016 at 10:04 PM, Matt Giuca <mgiuca@chromium.org> wrote: Interoperability risk","payload":{"headers":[{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Date","value":"Tue, 28 Jun 2016 11:09:41 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2. On Tue, Jun 28, 2016 at 12:11 PM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 08:55:45 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Matt Giuca <mgiuca@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"OK thanks for the clarification, Ben. On Wed, 29 Jun 2016 at 09:56 TAMURA, Kent <tkent@chromium.","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 00:34:04 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The spec seems a little incomplete to me - filed https://github.com/w3c/manifest/issues/475 But the","payload":{"headers":[{"name":"Date","value":"Tue, 28 Jun 2016 22:52:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I also filed some concerns about that yesterday and they are being addressed. On Wed, 29 Jun 2016 at","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 02:57:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: install event for Web App Manifest"},{"name":"To","value":"Rick Byers <rbyers@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails zkoch@google.com, rouslan@google.com Spec https://w3c.github.io/browser-payment-api/","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 16:47:16 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Has any vendor or group committed to writing the shim mentioned? Edge appeared interested in doing so","payload":{"headers":[{"name":"Date","value":"Tue, 28 Jun 2016 00:27:57 -0700 (PDT)"},{"name":"From","value":"addyosmani@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: PaymentRequest"}]}},{"snippet":"With Safari shipping a similar but proprietary API I agree this increases the urgency. I expect it","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 13:28:09 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Any idea how the other WG members would feel about us shipping now? I think it would be mixed. Some","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 21:28:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Zach. LGTM1 On Wed, Jun 29, 2016 at 12:28 AM, Zach Koch <zkoch@google.com> wrote: Any","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 09:50:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, Rick. I'll bring this up with the WG at the face-to-face next week in London. I'll","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 15:02:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"In general I agree with Rick's analysis. LGTM2. If there are any significant changes to the spec","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 15:51:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. I agree with Rick that the urgency on getting this shipped has been raised because there are","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 16:47:23 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Zach Koch <zkoch@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Brett Wilson <brettw@chromium.org>, rouslan@chromium.org"}]}},{"snippet":"Thanks all! On Wed, Jun 29, 2016 at 4:47 PM Alex Russell <slightlyoff@google.com> wrote: LGTM3.","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 23:49:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Alex Russell <slightlyoff@google.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Rick Byers <rbyers@chromium.org>, Rouslan Solomakhin <rouslan@google.com>, blink-dev <blink-dev@chromium.org>, rouslan@chromium.org"}]}},{"snippet":"LGTM3. I understand we should ship this. earlier. (Note that Alex isn't an API owner). On Thu,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 09:05:49 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: PaymentRequest"},{"name":"To","value":"Zach Koch <zkoch@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Alex Russell <slightlyoff@google.com>, Chris Harrelson <chrishtr@chromium.org>, Brett Wilson <brettw@chromium.org>, Rick Byers <rbyers@chromium.org>, Rouslan Solomakhin <rouslan@google.com>, Rouslan Solomakhin <rouslan@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 16:35:33 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails wolenetz@chromium.og Spec http://w3c.github.io/media-source/ Summary Media Source spec","payload":{"headers":[{"name":"From","value":"Matthew Wolenetz <wolenetz@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 16:13:17 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Disallow Media Source abort() of range removals and truncating buffered media by reducing duration"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Update: the implementation (behind experimental flag) CL is now in CQ at https://codereview.chromium.","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 13:48:42 -0700 (PDT)"},{"name":"From","value":"wolenetz via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Disallow Media Source abort() of range removals and truncating buffered media by reducing duration"}]}},{"snippet":"Sounds good to me. We should probably treat this like a deprecate/remove - ie look at the UMA data","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 18:01:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Disallow Media Source abort() of range removals and truncating buffered media by reducing duration"},{"name":"To","value":"Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 15:42:16 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - June 27, 2016"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails wolenetz@google.com Spec http://w3c.github.io/media-source/ Summary This API lets","payload":{"headers":[{"name":"From","value":"\"'Matt Wolenetz' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 15:03:44 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: API for customizing HTMLMediaElement.seekable for Media Source live streams"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have prepared a candidate CL to implement this change at https://codereview.chromium.org/2105593002","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 18:05:00 -0700 (PDT)"},{"name":"From","value":"wolenetz via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wolenetz@google.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: API for customizing HTMLMediaElement.seekable for Media Source live streams"}]}},{"snippet":"LGTM1 Nit: the spec doesn't seem to make it very clear what the units of these double parameters","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 20:18:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: API for customizing HTMLMediaElement.seekable for Media Source live streams"},{"name":"To","value":"Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hmm. Units are in seconds like the rest of the API being extended. I used position terminology to","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 20:21:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: API for customizing HTMLMediaElement.seekable for Media Source live streams"},{"name":"From","value":"\"'Matt Wolenetz' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I was on mobile. Apologies: s/if like/I'd like/. Regarding units: thanks for the feedback. I'","payload":{"headers":[{"name":"Date","value":"Tue, 28 Jun 2016 11:26:27 -0700 (PDT)"},{"name":"From","value":"wolenetz via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrishtr@chromium.org, wolenetz@google.com"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: API for customizing HTMLMediaElement.seekable for Media Source live streams"}]}}]},{"messages":[{"snippet":"Contact emails iclelland@chromium.org, igrigorik@chromium.org, mkwst@chromium.org Spec https://","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 17:31:50 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Feature Policy"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails wolenetz@google.com Spec http://w3c.github.io/media-source/ Summary Per recent MSE","payload":{"headers":[{"name":"From","value":"\"'Matt Wolenetz' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 13:27:24 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It would have been more helpful if you included the actual attributes... MediaSource.prototype.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 27 Jun 2016 23:50:51 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"},{"name":"To","value":"Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Agreed. My apologies. I included those in the CL and in other links, but missed including them in the","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 14:25:46 -0700 (PDT)"},{"name":"From","value":"wolenetz via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wolenetz@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"}]}},{"snippet":"I have prepared a candidate CL to implement this change at https://codereview.chromium.org/1945523003","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 17:25:27 -0700 (PDT)"},{"name":"From","value":"wolenetz via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"wolenetz@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"}]}},{"snippet":"LGTM1 On Mon, Jun 27, 2016 at 5:25 PM, wolenetz via blink-dev <blink-dev@chromium.org> wrote: I","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 20:12:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"},{"name":"To","value":"Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Jun 28, 2016 at 5:13 AM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 On","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 19:44:09 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. On Wed, Jun 29, 2016 at 4:44 AM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 08:53:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: MediaSource EventHandler attributes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Matt Wolenetz <wolenetz@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails skyostil@chromium.org Spec Discussion at WICG: https://github.com/WICG/interventions/","payload":{"headers":[{"name":"From","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 16:55:23 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Mon, Jun 27, 2016 at 9:55 AM, Sami Kyostila <skyostil@chromium.org> wrote: Contact","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 10:26:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2. On Mon, Jun 27, 2016 at 10:26 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 10:27:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Sami Kyostila <skyostil@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, Jun 27, 2016 at 7:27 PM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2. On","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 09:55:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Sami Kyostila <skyostil@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Will this (should this) apply to requestAnimationFrame and requestIdleCallback as well? -Darin On Mon","payload":{"headers":[{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 07:51:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We're already stopping requestAnimationFrame callbacks for out-of-view frames as of M52. We could","payload":{"headers":[{"name":"From","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 16:56:07 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Darin Fisher <darin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Cool, thanks. That makes sense about idle callbacks. On Wed, Jun 29, 2016 at 9:56 AM, Sami Kyostila","payload":{"headers":[{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 09:57:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Timer throttling for hidden cross-origin frames"},{"name":"To","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Funds Transfer The Mission Continues Dear Sir, Re: Payment Cleared and Ready. Please be informed that","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 07:49:13 -0500"},{"name":"Subject","value":"[blink-dev] Message from Funds Transfer"},{"name":"From","value":"Funds Transfer on behalf of The Mission Continues <no-reply@classy.org>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-06","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 11:40:41 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of June 20"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-06-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 12:18:32 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of June 20"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi haraken@ wrote a roadmap of the arch team for the rest of 2016. We're now building Q3 OKRs","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 15:14:33 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"(yangguo) Landed necessary V8 APIs to snapshot DOM templates (design doc). The plan is to snapshot","payload":{"headers":[{"name":"Date","value":"Mon, 27 Jun 2016 22:42:33 -0700 (PDT)"},{"name":"From","value":"Yong Wang <wangyong131@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Platform Architecture team snippet"}]}},{"snippet":"Another presentation at BlinkOn that might be relevant to the architecture work is Mojo in Blink.","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 07:40:48 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Platform Architecture team snippet"},{"name":"To","value":"Yong Wang <wangyong131@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I copied to design doc to chromium.org so it can be made public: https://docs.google.com/document/d/","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 06 Jul 2016 12:02:59 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Platform Architecture team snippet"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, Yong Wang <wangyong131@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, blink devs. I'm about to land a CL to disallow raw pointers on WTF::bind and blink::","payload":{"headers":[{"name":"From","value":"\"'Taiju Tsuiki' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 13:17:53 +0900"},{"name":"Subject","value":"[blink-dev] PSA: Disallowing raw pointers on WTF::bind and blink::threadSafeBind"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Hiroshige Hayashizaki <hiroshige@chromium.org>"}]}},{"snippet":"This is a great improvement. Can we create an md file that explains pointer types used in WTF::bind?","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 13:22:26 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Disallowing raw pointers on WTF::bind and blink::threadSafeBind"},{"name":"To","value":"Taiju Tsuiki <tzik@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Hiroshige Hayashizaki <hiroshige@chromium.org>"}]}},{"snippet":"Thanks for the work! This really clarifies the confusing behaviors of bind variants. The BlinkOn6","payload":{"headers":[{"name":"From","value":"\"'Kouhei Ueno' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 13:26:24 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Disallowing raw pointers on WTF::bind and blink::threadSafeBind"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Taiju Tsuiki <tzik@google.com>, blink-dev <blink-dev@chromium.org>, Hiroshige Hayashizaki <hiroshige@chromium.org>"}]}},{"snippet":"Really nice improvement, and +1000 to have some easy-to-refer documentation, which could be just a","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 13:37:59 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Disallowing raw pointers on WTF::bind and blink::threadSafeBind"},{"name":"To","value":"Kouhei Ueno <kouhei@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Taiju Tsuiki <tzik@google.com>, blink-dev <blink-dev@chromium.org>, Hiroshige Hayashizaki <hiroshige@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-06-27 Blink>Architecture was renamed to Blink>Internals Component","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 08:15:24 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-06-27"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Does Blink intentionally convert header names to lower case when using the fetch API? And if so, does","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 26 Jun 2016 16:36:46 +0300"},{"name":"Subject","value":"[blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, Matt Menke <mmenke@chromium.org>"}]}},{"snippet":"According to the fetch spec, all operation to the header uses byte-lowercased header name. Here is a","payload":{"headers":[{"name":"From","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Date","value":"Sun, 26 Jun 2016 22:49:37 +0900"},{"name":"Subject","value":"[blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Matt Menke <mmenke@chromium.org>"}]}},{"snippet":"Thank you! ☆PhistucK On Sun, Jun 26, 2016 at 4:49 PM, Taiju Tsuiki <tzik@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 26 Jun 2016 17:04:44 +0300"},{"name":"Subject","value":"[blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"Taiju Tsuiki <tzik@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Matt Menke <mmenke@chromium.org>"}]}},{"snippet":"On Sun, Jun 26, 2016 at 9:36 AM, PhistucK <phistuck@gmail.com> wrote: Does Blink intentionally","payload":{"headers":[{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Date","value":"Mon, 27 Jun 2016 09:47:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, Matt Menke <mmenke@chromium.org>"}]}},{"snippet":"When I try it on www.walla.co.il, the previously mentioned code produces this (taken from "Raw","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 27 Jun 2016 16:56:43 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"Yea, it appears we actually normalize to the mixed-case when we atomize standard headers. I'll","payload":{"headers":[{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Date","value":"Mon, 27 Jun 2016 10:09:19 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}},{"snippet":"WebKit does that, too. ☆PhistucK On Mon, Jun 27, 2016 at 5:09 PM, Ben Kelly <bkelly@mozilla.com","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 27 Jun 2016 17:12:12 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Fetch API Sends Lower Case Headers"},{"name":"To","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"https://www.chromestatus.com/feature/4504699138998272 Behind a flag in desktop Chrome 52 (launch bug)","payload":{"headers":[{"name":"Date","value":"Sat, 25 Jun 2016 23:51:57 -0700 (PDT)"},{"name":"From","value":"l.pmdiggo@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Chrome status for pointer events seems incorrect"}]}},{"snippet":"I do not see neutral, but perhaps someone beat me to it. The wording is confusing, but the first line","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 26 Jun 2016 10:01:39 +0300"},{"name":"Subject","value":"Re: [blink-dev] Chrome status for pointer events seems incorrect"},{"name":"To","value":"l.pmdiggo@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I see, how confusing. Thanks for clearing that up.","payload":{"headers":[{"name":"Date","value":"Sun, 26 Jun 2016 00:04:48 -0700 (PDT)"},{"name":"From","value":"l.pmdiggo@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Chrome status for pointer events seems incorrect"}]}},{"snippet":"Yeah sorry for this confusion. There's already a bug for this here, I'm actively working on","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 13:31:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] Chrome status for pointer events seems incorrect"},{"name":"To","value":"l.pmdiggo@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, I found your contact over the web and wanted to send you a quick note. With-Search-Engine-","payload":{"headers":[{"name":"Date","value":"Sat, 25 Jun 2016 10:54:16 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Tommie | Wam Wab Analytics Media Inc.\" <janepayne519@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails pdr@chromium.org Spec https://drafts.csswg.org/css-size-adjust https://compat.spec.","payload":{"headers":[{"name":"From","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 13:13:00 -0700"},{"name":"Subject","value":"[blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"non-owner LGTM :) On Fri, Jun 24, 2016 at 1:13 PM, Philip Rogers <pdr@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"Steve Kobes <skobes@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 16:14:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 Kinda sad we had this regression but didn't notice. I'm glad we're MUCH better","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 20:00:13 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"Steve Kobes <skobes@chromium.org>"},{"name":"Cc","value":"Philip Rogers <pdr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 :DG< On Fri, Jun 24, 2016 at 5:00 PM, Rick Byers <rbyers@chromium.org> wrote: LGTM1","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 17:01:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Steve Kobes <skobes@chromium.org>, Philip Rogers <pdr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Not to be confused with https://drafts.csswg.org/css-fonts-3/#propdef-font-size-adjust ... LGTM too,","payload":{"headers":[{"name":"From","value":"\"'Dominik Röttsches' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 17:53:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, Jun 27, 2016 at 7:53 AM, 'Dominik Röttsches' via blink-dev <blink-dev@","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 28 Jun 2016 09:41:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship the text-size-adjust property"},{"name":"To","value":"\"Dominik Röttsches\" <drott@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"As discussed at BlinkOn (video), we're kicking off a new effort within chromium that we're","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 12:39:41 -0400"},{"name":"Subject","value":"[blink-dev] Chromium's Web Platform Predictability effort"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello, people on blink-dev who write layout tests! Following up on a small piece of the testing","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 09:38:09 +0200"},{"name":"Subject","value":"[blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is there a best-practices document for testharness? I tried to use the testharness to a new CL, and","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 1 Jul 2016 15:04:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hey Raymond! On Sat, Jul 2, 2016 at 12:04 AM, Raymond Toy <rtoy@google.com> wrote: Is there a","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Mon, 4 Jul 2016 10:02:54 +0200"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Simplified reply: Yeah, we can make everything work out I think with the new testharness. It will","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 12:55:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Can you write those as separate tests instead with shared setup code? On Jul 7, 2016 12:55 PM, "'Raymond Toy' via blink-dev" <blink-dev@chromium.org> wrote: Simplified reply:","payload":{"headers":[{"name":"Date","value":"Thu, 7 Jul 2016 13:05:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, we can add a bunch of globals (ick) so that the tests can be done individually. Well, maybe. Most of the tests use OfflineAudioContext.startRendering() which returns a promise, and the tests are","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 07:57:10 -0700"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jul 8, 2016 at 10:57 AM, 'Raymond Toy' via blink-dev <blink-dev@chromium.org> wrote: Yes, we can add a bunch of globals (ick) so that the tests can be done individually. Well,","payload":{"headers":[{"name":"From","value":"Steve Kobes <skobes@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 11:07:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Please use `testharness.js` when writing layout tests."},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails hayato@chromium.org Spec Shadow DOM Most parts of the Shadow DOM specification have","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 06:54:49 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm1 On Thu, Jun 23, 2016 at 8:55 AM Hayato Ito <hayato@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 07:08:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How much interoperable between Blink and WebKit? Does the main feature of Shadow DOM (attachShadow","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 16:24:07 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Hayato Ito <hayato@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As far as I can test Safari Technology Preview (released on June 22, 2016), using W3C Web Platform","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 07:55:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It sounds good. LGTM2 to ship. On Thu, Jun 23, 2016 at 4:55 PM, Hayato Ito <hayato@chromium.org","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 17:11:07 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The followings are already deprecated, but not removed from Blink yet: CSSDeepCombinator (/deep/):","payload":{"headers":[{"name":"Date","value":"Thu, 23 Jun 2016 02:20:00 -0700 (PDT)"},{"name":"From","value":"mcharsley via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Shadow DOM v1"}]}},{"snippet":"On Thu, Jun 23, 2016 at 6:20 PM mcharsley via blink-dev <blink-dev@chromium.org> wrote: The","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 09:57:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Shadow DOM v1"},{"name":"To","value":"mcharsley@google.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That's a rather long email trail, and I'm far from an expert (despite having added shadow DOM","payload":{"headers":[{"name":"From","value":"\"'Mark Charsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 11:50:53 +0100"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. On Thu, Jun 23, 2016 at 1:11 AM, TAMURA, Kent <tkent@chromium.org> wrote: It sounds good","payload":{"headers":[{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 10:42:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Hayato Ito <hayato@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM!!! :DG< On Thu, Jun 23, 2016 at 10:42 AM, 'Alex Russell' via blink-dev <blink-dev@","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 10:43:32 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Alex Russell <slightlyoff@google.com>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Hayato Ito <hayato@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Fwiw I think we should keep /deep/ in the static css profile. :) The alternative of what authors will","payload":{"headers":[{"name":"Date","value":"Thu, 23 Jun 2016 19:50:26 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Shadow DOM v1"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Mark Charsley <mcharsley@google.com>"},{"name":"Cc","value":"Hayato Ito <hayato@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"/deep/ in the static css profile is discussed here: https://github.com/w3c/webcomponents/issues/78.","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 01:57:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Shadow DOM v1"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Mark Charsley <mcharsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"HTML/DOM team biweekly snippet (June 6 - June 19) Shadow DOM Wrote Tests (as preparation for","payload":{"headers":[{"name":"From","value":"Dominic Cooney <dominicc@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 12:16:29 +0900"},{"name":"Subject","value":"[blink-dev] HTML/DOM team biweekly snippet x2 (May 23-June 19, 2016)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, June 22: Recent updates (last 2 weeks): We'","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 17:29:47 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, June 22, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Thanks so much for making BlinkOn 6 awesome! In order to make BlinkOn 7 even better please","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 10:56:31 -0700"},{"name":"Subject","value":"[blink-dev] BlinkOn 6 Feedback"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi all, Don't forget to fill out the BlinkOn 6 feedback form! It should take less than 5 minutes","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 10:35:01 -0700"},{"name":"Subject","value":"[blink-dev] Re: BlinkOn 6 Feedback"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mcasas@chromium.org, niklase@chromium.org Spec https://www.w3.org/TR/mediacapture-","payload":{"headers":[{"name":"From","value":"\"'Niklas Enbom' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 08:58:35 -0700"},{"name":"Subject","value":"[blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Miguel Casas <mcasas@google.com>"}]}},{"snippet":"LGTM1, with questions below to confirm. I think the spec link is a bit off. The spec is section 3 in","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 09:22:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Niklas Enbom <niklase@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"Correct, the link should be to section 3 and not 4. There doesn't seem to be a TAG review done, I","payload":{"headers":[{"name":"From","value":"\"'Niklas Enbom' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 12:46:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"captureStreamUntilEnded() is commented out in HTMLMediaElementCapture.idl so I guess this intent is","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 21:20:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Niklas Enbom <niklase@google.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"Also please create a chromestatus.com entry so that our docs and blog posts reflect the status of","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 21:06:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Niklas Enbom <niklase@google.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"On Wed, Jun 22, 2016 at 6:06 PM, Rick Byers <rbyers@chromium.org> wrote: Also please create a","payload":{"headers":[{"name":"From","value":"\"'Niklas Enbom' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 11:03:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"Are the additions in https://codereview.chromium.org/2110573002/ intended to be covered by this","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 11:46:25 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Niklas Enbom <niklase@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Miguel Casas <mcasas@google.com>"}]}},{"snippet":"On 29 June 2016 at 04:46, Philip Jägenstedt <foolip@chromium.org> wrote: Are the additions in","payload":{"headers":[{"name":"From","value":"\"'Miguel Casas' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 09:31:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Niklas Enbom <niklase@google.com>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jun 29, 2016 at 6:31 PM Miguel Casas <mcasas@google.com> wrote: On 29 June 2016 at 04:","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 30 Jun 2016 11:26:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Media Capture from <audio> and <video>"},{"name":"To","value":"Miguel Casas <mcasas@google.com>"},{"name":"Cc","value":"Niklas Enbom <niklase@google.com>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"There's a block of code in audit-runtime-enabled-features.py which looks for the","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 13:49:03 -0400"},{"name":"Subject","value":"[chromium-dev] Vestigal code in audit_runtime_enabled_features.py"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Looking more closely into this, it looks like audit_runtime_enabled_features hasn't worked in","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 14:00:17 -0400"},{"name":"Subject","value":"[chromium-dev] Re: Vestigal code in audit_runtime_enabled_features.py"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"If it's been broken for 1.5 years without anybody noticing, I think it's fine to delete that","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 20:03:05 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Vestigal code in audit_runtime_enabled_features.py"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"It seems okay to remove this. We do probably want to start auditing RuntimeEnabledFeatures for things","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 23:18:43 +0200"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] Re: Vestigal code in audit_runtime_enabled_features.py"},{"name":"To","value":"Nico Weber <thakis@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"https://youtu.be/s2mEASqcipA On Wed, Jun 22, 2016 at 2:48 AM, Elliott Sprehn <esprehn@chromium.org","payload":{"headers":[{"name":"From","value":"Koshthi Hemraj Ghanshyam <koshthihemraj@gmail.com>"},{"name":"Date","value":"Wed, 22 Jun 2016 12:53:30 +0530"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] Re: Vestigal code in audit_runtime_enabled_features.py"},{"name":"To","value":"esprehn@chromium.org"},{"name":"Cc","value":"Nico Weber <thakis@chromium.org>, blink-dev <blink-dev@chromium.org>, Ian Clelland <iclelland@chromium.org>, chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello, Inquiring about your art work and the costs Solomon Stone","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 19:02:24 +0000 (UTC)"},{"name":"From","value":"\"'Solomon Stone' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Enquiry"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 12:44:32 -0400"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Devs, I am getting while gclient sync, I am getting this error while using a proxy " Failed","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 05:28:40 -0700 (PDT)"},{"name":"From","value":"sanjoy pal <sanjoy.net@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] SSL3_GET_SERVER_CERTIFICATE:certificate verify failed. while running gclient runhooks"}]}},{"snippet":"Is your proxy installing a MITM certificate? On Tue, Jun 21, 2016 at 8:28 AM, sanjoy pal <sanjoy.","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 15:55:54 -0400"},{"name":"Subject","value":"Re: [blink-dev] SSL3_GET_SERVER_CERTIFICATE:certificate verify failed. while running gclient runhooks"},{"name":"To","value":"sanjoy pal <sanjoy.net@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Vào 02:58:48 UTC+7 Thứ Ba, ngày 06 tháng 8 năm 2013, Alexis Menard đã viết: Contact emails alexis...@","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 02:23:03 -0700 (PDT)"},{"name":"From","value":"hunglai231078@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"WinDows XP professional strore book Apps <hunglai231078@gmail.com>"},{"name":"Subject","value":"[blink-dev] WinDows XP professional strore book"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 19:52:23 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Last week was slow, perhaps due to BlinkOn (Note the bad spike in the untriaged-older-than-a-week","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 14:15:01 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The Chrome Platform Status entry for CSS Exclusions (https://www.chromestatus.com/feature/","payload":{"headers":[{"name":"Date","value":"Mon, 20 Jun 2016 10:23:21 -0700 (PDT)"},{"name":"From","value":"cvrebert via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Chrome Platform Status for CSS Exclusions is outdated?"}]}},{"snippet":"It looks like the bug was auto-archived (almost 2 years since any activity) so yes I assume that","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 14:17:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Chrome Platform Status for CSS Exclusions is outdated?"},{"name":"To","value":"cvrebert@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-06","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 10:06:17 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of June 16"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-06-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 10:22:19 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of June 16"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"can you look at my account and pull all the crap off tyhat one of your people has put on it to spy on","payload":{"headers":[{"name":"Date","value":"Sun, 19 Jun 2016 18:38:03 -0700 (PDT)"},{"name":"From","value":"ben arrington <ailynmabras4@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] someone is invading my privacy and using this as a tool"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-06-20 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 08:44:58 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-06-20"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Hi, I found your contact over the web and wanted to send you a quick note. With-Search-Engine-","payload":{"headers":[{"name":"Date","value":"Sun, 19 Jun 2016 14:49:37 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Tommie | Wam Wab Analytics Media Inc.\" <marrylambert321@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails {mgiuca,sammc,benwells,owencm}@chromium.org Spec https://github.com/mgiuca/web-share/","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 05:24:09 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Sam McNally <sammc@chromium.org>, Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>"}]}},{"snippet":"I'm extremely surprised you stopped talking to us. January 15, 2015, I told you that focusing on","payload":{"headers":[{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Date","value":"Fri, 17 Jun 2016 07:32:52 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Sam McNally <sammc@chromium.org>, Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>"}]}},{"snippet":"Hi Anne, Sorry for radio silence. We did a round of public discussions, took on board all the","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 07:09:09 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Sam McNally <sammc@chromium.org>, Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>"}]}},{"snippet":"Can you share a bit more about what we learned from Web Intents and how the Web Share API is going to","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 07:31:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Sam McNally <sammc@chromium.org>, Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>"}]}},{"snippet":"The original Ballista explainer addresses Web Intents: https://github.com/chromium/ballista/blob/","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 07:48:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>, Sam McNally <sammc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I wrote up a number of things about the issues with Web Intents: * UX Issues - https://paul.kinlan.me","payload":{"headers":[{"name":"From","value":"\"'Paul Kinlan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 11:09:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Ben Wells <benwells@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>, Sam McNally <sammc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I can be wrong and I didn't read all the docs yet, but isn't it bad to tie this API to","payload":{"headers":[{"name":"Date","value":"Fri, 17 Jun 2016 07:12:42 -0700 (PDT)"},{"name":"From","value":"nekr.fabula@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"}]}},{"snippet":"On Sat, 18 Jun 2016 at 00:12 <nekr.fabula@gmail.com> wrote: I can be wrong and I didn't","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 22:42:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So if the UI for Web Intents was hard to get right on all platforms, and at the same time you","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 11:25:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>, nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 21, 2016 at 1:25 PM, Jochen Eisinger <jochen@chromium.org> wrote: So if the UI for","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 13:32:10 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Matt Giuca <mgiuca@chromium.org>, nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Oh, so the plan is to eventually ship on platforms that natively support sharing first? Matt, could","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 12:46:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Matt Giuca <mgiuca@chromium.org>, nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"FWIW, I think some of us at Mozilla have concerns about making features require manifest. It would be","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 14:56:37 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Owen Campbell-Moore <owencm@chromium.org>, Ben Wells <benwells@chromium.org>, Sam McNally <sammc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"WebShare (the part proposed here) doesn't interact with the manifest at all, no? Ben Kelly <","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 12:58:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Ben Kelly <bkelly@mozilla.com>, Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Owen Campbell-Moore <owencm@chromium.org>, Ben Wells <benwells@chromium.org>, Sam McNally <sammc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, 21 Jun 2016 at 22:59 Jochen Eisinger <jochen@chromium.org> wrote: WebShare (the part","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 01:32:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Ben Kelly <bkelly@mozilla.com>"},{"name":"Cc","value":"Owen Campbell-Moore <owencm@chromium.org>, Ben Wells <benwells@chromium.org>, Sam McNally <sammc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Jun 22, 2016 3:32 AM, "Matt Giuca" <mgiuca@chromium.org> wrote: >> Ben Kelly","payload":{"headers":[{"name":"Date","value":"Wed, 22 Jun 2016 17:27:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"From","value":"Ben Kelly <bkelly@mozilla.com>"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Ben Wells <benwells@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Owen Campbell-Moore <owencm@chromium.org>, blink-dev <blink-dev@chromium.org>, Sam McNally <sammc@chromium.org>"}]}},{"snippet":"On Tue, Jun 21, 2016 at 1:32 PM, Elliott Sprehn <esprehn@chromium.org> wrote: > That's","payload":{"headers":[{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Date","value":"Thu, 23 Jun 2016 12:12:14 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Matt Giuca <mgiuca@chromium.org>, nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, 23 Jun 2016 at 20:12 Anne van Kesteren <annevk@annevk.nl> wrote: On Tue, Jun 21, 2016","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 03:17:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Share API"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, nekr.fabula@gmail.com, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Thu, 16 Jun 2016 09:39:51 +0200"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Are you going to implement this spec http://globalplatform.github.io/WebApis-for-SE/doc/ ?","payload":{"headers":[{"name":"Date","value":"Wed, 15 Jun 2016 11:27:17 -0700 (PDT)"},{"name":"From","value":"vladimir.korichkov@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to implement Web API For Accessing Secure Element"}]}}]},{"messages":[{"snippet":"I was wondering why the "window" interface was the only one to return enumerable properties","payload":{"headers":[{"name":"Date","value":"Wed, 15 Jun 2016 04:10:03 -0700 (PDT)"},{"name":"From","value":"fbeaufort@chromium.org"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Return enumerable properties with Object.keys() for all interfaces?"}]}},{"snippet":"As opposed to Object.keys(document) (that only returns location, for some reason), you mean?","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 15 Jun 2016 15:58:43 +0300"},{"name":"Subject","value":"Re: [blink-dev] Return enumerable properties with Object.keys() for all interfaces?"},{"name":"To","value":"fbeaufort@chromium.org"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry for not being clear there. I meant as opposed to all interfaces but document. Give a try to","payload":{"headers":[{"name":"Date","value":"Wed, 15 Jun 2016 06:11:24 -0700 (PDT)"},{"name":"From","value":"fbeaufort via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"fbeaufort@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Return enumerable properties with Object.keys() for all interfaces?"}]}},{"snippet":"Do other browsers return them? I tried Firefox and it does not return as well. The reason is that","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 15 Jun 2016 16:18:38 +0300"},{"name":"Subject","value":"Re: [blink-dev] Return enumerable properties with Object.keys() for all interfaces?"},{"name":"To","value":"\"François Beaufort\" <fbeaufort@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, fbeaufort@chromium.org"}]}}]},{"messages":[{"snippet":"Just FYI, Safari 10's new feature, "Programmatic Cut and Copy Support"(WebKit/146336,","payload":{"headers":[{"name":"From","value":"Yoshifumi Inoue <yosin@chromium.org>"},{"name":"Date","value":"Wed, 15 Jun 2016 05:23:10 +0000"},{"name":"Subject","value":"[blink-dev] Safari 10 - Programmatic Cut and Copy Support"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We did. See https://developers.google.com/web/updates/2015/04/cut-and-copy-commands?hl=en On","payload":{"headers":[{"name":"Date","value":"Wed, 15 Jun 2016 04:10:53 -0700 (PDT)"},{"name":"From","value":"fbeaufort@chromium.org"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Safari 10 - Programmatic Cut and Copy Support"}]}}]},{"messages":[{"snippet":"Hi all, BlinkOn 6 is only a couple days away! If you're too excited to wait, you can view the","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 02:44:44 -0700"},{"name":"Subject","value":"[blink-dev] BlinkOn 6 Schedule"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Hi blink-dev! Finally, it's time to remove OwnPtr completely. I have a local patch touching ~1500","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 16:04:30 +0900"},{"name":"Subject","value":"[blink-dev] PSA: OwnPtr removal is planned on this Sunday (June 19)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hello! I landed the patch a while ago, and it seems to be working pretty well, modulo some slow bots","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Sun, 19 Jun 2016 18:10:37 +0900"},{"name":"Subject","value":"[blink-dev] Re: PSA: OwnPtr removal is planned on this Sunday (June 19)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Woohoo! Great job. Let's hope it sticks! On Sun, Jun 19, 2016 at 11:10 AM, Yuta Kitamura <","payload":{"headers":[{"name":"From","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Date","value":"Sun, 19 Jun 2016 11:18:11 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: OwnPtr removal is planned on this Sunday (June 19)"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"You did it :D Congrats! On Sun, Jun 19, 2016 at 6:18 PM, Charles Harrison <csharrison@chromium.org","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Sun, 19 Jun 2016 19:01:30 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: OwnPtr removal is planned on this Sunday (June 19)"},{"name":"To","value":"Charles Harrison <csharrison@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi! I just wanted to let you know I found no suspicious failures caused by the OwnPtr removal patch.","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Sun, 19 Jun 2016 23:36:36 +0900"},{"name":"Subject","value":"[blink-dev] Re: PSA: OwnPtr removal is planned on this Sunday (June 19)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-06","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 11:47:23 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of June 6"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-06-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 12:08:09 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of June 6"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 19:40:36 +1000"},{"name":"Subject","value":"[blink-dev] (belated) Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi guys, I have questions about "will-change" CSS property implementation on blink. "","payload":{"headers":[{"name":"Date","value":"Mon, 13 Jun 2016 02:35:44 -0700 (PDT)"},{"name":"From","value":"anatoo.jp@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Question: Does \"will-change: contents\" and \"will-change: scroll-position\" have any effect on blink?"}]}},{"snippet":"I am pretty sure "will-change:scroll-position" and "will-change:contents" do not","payload":{"headers":[{"name":"From","value":"Majid Valipour <majidvp@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 14:46:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Question: Does \"will-change: contents\" and \"will-change: scroll-position\" have any effect on blink?"},{"name":"To","value":"anatoo.jp@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 10:46 AM Majid Valipour <majidvp@chromium.org> wrote: I am not an","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 09:16:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] Question: Does \"will-change: contents\" and \"will-change: scroll-position\" have any effect on blink?"},{"name":"To","value":"Majid Valipour <majidvp@chromium.org>, anatoo.jp@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you Majid and Ali. These are great pointers. I got that "will-change: contents"","payload":{"headers":[{"name":"Date","value":"Wed, 15 Jun 2016 14:20:43 -0700 (PDT)"},{"name":"From","value":"anatoo.jp@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"majidvp@chromium.org, anatoo.jp@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Question: Does \"will-change: contents\" and \"will-change: scroll-position\" have any effect on blink?"}]}}]},{"messages":[{"snippet":"Hi Highlights: - We identified that encoded images are duplicated in two places (PartitionAlloc's","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 17:25:22 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Is there going to be a one-pager for BlinkOn 6 with general info and final schedule of talks","payload":{"headers":[{"name":"From","value":"Olli Etuaho <oetuaho@nvidia.com>"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] BlinkOn 6 one-pager?"},{"name":"Date","value":"Mon, 13 Jun 2016 07:45:27 +0000"}]}},{"snippet":"See http://bit.ly/blinkon6-onepager On Mon, Jun 13, 2016 at 4:45 PM, Olli Etuaho <oetuaho@nvidia.","payload":{"headers":[{"name":"From","value":"Takayoshi Kochi <kochi@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 16:49:44 +0900"},{"name":"Subject","value":"Re: [blink-dev] BlinkOn 6 one-pager?"},{"name":"To","value":"Olli Etuaho <oetuaho@nvidia.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 15:56:41 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (May 31 - Jun 10)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-06-13 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 08:48:11 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-06-13"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"[net-dev on BCC] Contact emails estark@chromium.org, jochen@chromium.org Spec https://w3c.github.io/","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 17:00:46 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Referrer-Policy header"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Matthew Menke <mmenke@chromium.org>, Mike West <mkwst@chromium.org>, Jochen Eisinger <jochen@chromium.org>"}]}},{"snippet":"On Fri, Jun 10, 2016 at 5:00 PM, Emily Stark <estark@chromium.org> wrote: [net-dev on BCC]","payload":{"headers":[{"name":"From","value":"Emily Stark <estark@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 17:23:49 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Referrer-Policy header"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Matthew Menke <mmenke@chromium.org>, Mike West <mkwst@chromium.org>, Jochen Eisinger <jochen@chromium.org>"}]}},{"snippet":"Non-owner's LGTM for this; I'm especially excited about being able to drop the deprecated CSP","payload":{"headers":[{"name":"From","value":"\"'Mike West' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sun, 12 Jun 2016 20:08:05 +0200"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Referrer-Policy header"},{"name":"To","value":"Emily Stark <estark@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Matthew Menke <mmenke@chromium.org>, Jochen Eisinger <jochen@chromium.org>"}]}},{"snippet":"Given that there would be privacy implications to removing this (which could make us more cautious","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 10:38:34 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Referrer-Policy header"},{"name":"To","value":"Mike West <mkwst@google.com>"},{"name":"Cc","value":"Emily Stark <estark@chromium.org>, blink-dev <blink-dev@chromium.org>, Matthew Menke <mmenke@chromium.org>, Jochen Eisinger <jochen@chromium.org>"}]}},{"snippet":"Oh whoops, I was thinking this was an "implement and ship" - sorry. Let's revisit once","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 10:39:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement: Referrer-Policy header"},{"name":"To","value":"Mike West <mkwst@google.com>"},{"name":"Cc","value":"Emily Stark <estark@chromium.org>, blink-dev <blink-dev@chromium.org>, Matthew Menke <mmenke@chromium.org>, Jochen Eisinger <jochen@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails chrishtr@chromium.org, danakj@chromium.org Spec The document describing this change is","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 22:43:45 +0000"},{"name":"Subject","value":"[blink-dev] Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The primary risk of this Intent is worse performance on some sites. See crbug.com/600482 for some","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 23:04:03 +0000"},{"name":"Subject","value":"[blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hm, I feel like that this intent sort of builds on a bug. In Internet Explorer 11, I do not see any","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 11 Jun 2016 12:40:10 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Sat, Jun 11, 2016 at 2:40 AM PhistucK <phistuck@gmail.com> wrote: Hm, I feel like that this","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 01:12:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you for making this more predictable! In general this seems more in-line with what developers","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:31:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 6:32 AM Rick Byers <rbyers@chromium.org> wrote: Thank you for making","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 16:11:48 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 12:11 PM, Chris Harrelson <chrishtr@chromium.org> wrote: On Mon, Jun 13","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 12:40:11 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 9:40 AM Rick Byers <rbyers@chromium.org> wrote: On Mon, Jun 13, 2016 at","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 17:32:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2. I think this improves interoperability and predictability. On Sat, Jun 11, 2016 at 7:43 AM,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 10:38:42 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3, but the lack of control over the initial scale when using will-change: transform is","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 13:53:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 20, 2016 at 3:53 PM, Philip Jägenstedt <foolip@chromium.org> wrote: LGTM3, but the","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 17:30:17 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks all. CL in progress. On Mon, Jun 20, 2016 at 8:30 AM, Elliott Sprehn <esprehn@chromium.org","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 14:42:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: re-rastering composited layers on scale change"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails davidben@chromium.org awhalley@chromium.org Link to “Intent to Deprecate”","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 22:43:23 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Fri, Jun 10, 2016 at 3:43 PM David Benjamin <davidben@chromium.org> wrote: Primary eng","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 23:16:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"David Benjamin <davidben@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"Does Chrome currently shows an insecure connection indicator for the sites that use this? If not, can","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 11 Jun 2016 10:05:20 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"David Benjamin <davidben@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"See the Intent to Deprecate thread. We show a warning in DevTools like other deprecations. (Actually","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Sat, 11 Jun 2016 20:05:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"I'm a little nervous about the 0.01% figure - that's still a LOT of connections to be","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 11:12:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 11:12 AM Rick Byers <rbyers@chromium.org> wrote: I'm a little","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 21:50:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 5:50 PM David Benjamin <davidben@chromium.org> wrote: On Mon, Jun 13,","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 21:54:04 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 12:50 AM, David Benjamin <davidben@chromium.org> wrote: If Safari ever","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 14 Jun 2016 08:51:44 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"Thanks for the detailed analysis! Also I assume most (or all) of these broken sites support HTTP (don","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 04:41:29 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"David Benjamin <davidben@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 4:41 AM Rick Byers <rbyers@chromium.org> wrote: Thanks for the detailed","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 16:09:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 12:09 PM, David Benjamin <davidben@chromium.org> wrote: On Tue, Jun 14,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 16:12:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"David Benjamin <davidben@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kent Tamura <tkent@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}},{"snippet":"LGTM. :DG< On Tue, Jun 21, 2016 at 5:12 AM, Rick Byers <rbyers@chromium.org> wrote: On Tue,","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 06:41:28 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: DHE-based ciphers"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"David Benjamin <davidben@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Kent Tamura <tkent@chromium.org>, Jochen Eisinger <jochen@chromium.org>, PhistucK <phistuck@gmail.com>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, security-dev <security-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"We are adding support for VP9 codec in the ISO BMFF container. VP9 is an open and royalty-free video","payload":{"headers":[{"name":"Date","value":"Fri, 10 Jun 2016 14:34:11 -0700 (PDT)"},{"name":"From","value":"Kongqun <kqyang@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, David Dorwin <ddorwin@chromium.org>, Thomas Inskip <tinskip@chromium.org>"},{"name":"Subject","value":"[blink-dev] [Web-Facing Change PSA] Support VP9 in ISO BMFF"}]}}]},{"messages":[{"snippet":"bugs.chromium.org is NOT going into read-only mode from 4-6PDT today as previously announced. The bug","payload":{"headers":[{"name":"From","value":"\"'Sean McCullough' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 13:48:33 -0700"},{"name":"Subject","value":"[blink-dev] [PSA] Cancelled: Today's bugs.chromium.org 4-6PDT maintenance mode"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, chromium-os-dev@chromium.org"}]}}]},{"messages":[{"snippet":"tl;dr You will not be able to create or modify bugs on bugs.chromium.org for two hours, starting at","payload":{"headers":[{"name":"From","value":"\"'Sean McCullough' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 08:01:17 -0700"},{"name":"Subject","value":"[blink-dev] [PSA] Reminder: 4-6pm PDT today, bugs.chromium.org is read-only"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, chromium-os-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails hta@chromium.org, tommi@chromium.org Spec https://w3c.github.io/mediacapture-main/","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 12:07:47 +0200"},{"name":"Subject","value":"[blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 10, 2016 at 1:07 PM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 11 Jun 2016 00:49:14 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Fri, Jun 10, 2016 at 2:49 PM PhistucK <phistuck@gmail.com> wrote: On Fri, Jun 10, 2016","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 23:18:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Note that the promise-based getUserMedia was the subject of an intent-to-ship thread a year ago:","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 12:42:54 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"In some ad-hoc testing and reading of IDL files I found: Gecko supports navigator.mediaDevices.","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 15:33:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry, I am forgetful. Rick reminded me that the constraints testing was already discussed in https:/","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 15:38:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, Jun 13, 2016 at 11:38 AM, Philip Jägenstedt <foolip@chromium.org> wrote: Sorry, I","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 11:39:53 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Chris Harrelson <chrishtr@chromium.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have filed two Gecko bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=1279933 https://bugzilla.","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 15:48:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Chris Harrelson <chrishtr@chromium.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 6/13/16 4:33 PM, Philip Jägenstedt wrote: > Also, navigator.mediaDevices.getUserMedia has an","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Mon, 13 Jun 2016 22:59:04 +0100"}]}},{"snippet":"There's a weakness in WebIDL in this area: The requirement on this dictionary is that one of the","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 09:04:54 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I've filed https://github.com/w3c/mediacapture-main/issues/366 on fixing the getusermedia spec. I","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 09:17:50 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 6/14/16 8:04 AM, Harald Alvestrand wrote: > There's a weakness in WebIDL in this area: The","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 14 Jun 2016 12:46:54 +0100"}]}},{"snippet":"If webidl gave me a "this dictionary must not be empty" marker, I could express in syntax","payload":{"headers":[{"name":"Date","value":"Tue, 14 Jun 2016 13:52:22 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Unless some pretty elaborate annotations are added to WebIDL, passing in {audio: false, video: false}","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 11:58:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How does this design affect forwards compatibility? Eg. imagine in the future you want to add a new","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 08:00:56 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 6/14/16 12:52 PM, Harald Alvestrand wrote: > If webidl gave me a "this dictionary must not","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 14 Jun 2016 13:03:18 +0100"}]}},{"snippet":"On 6/14/16 12:58 PM, Philip Jägenstedt wrote: > Unless some pretty elaborate annotations are added","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 14 Jun 2016 13:04:33 +0100"}]}},{"snippet":"It turns out that there's some resistance to navigator.getUserMedia (the callback-based API):","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 14:53:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>, Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jan-Ivar Bruaroey <jib@mozilla.com>"}]}},{"snippet":"To reiterate it here, I would like to request that Blink not unprefix navigator.getUserMedia at this","payload":{"headers":[{"name":"Date","value":"Wed, 22 Jun 2016 08:16:13 -0700 (PDT)"},{"name":"From","value":"wingboy@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"bzbarsky@mit.edu, hta@google.com, jib@mozilla.com"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"}]}},{"snippet":"Jan-Ivar, I'd ask that you have some respect for the standardization process in which you've","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 21:56:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"wingboy@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, Jan-Ivar Bruaroey <jib@mozilla.com>"}]}},{"snippet":"Harald, I did raise it there. It was your colleague who brought it here. Sorry about the wrong forum","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"From","value":"Jan-Ivar Bruaroey <jib@mozilla.com>"},{"name":"Date","value":"Wed, 22 Jun 2016 16:19:26 -0400"}]}},{"snippet":"FWIW I agree that blink implementation should proceed along whatever the consensus of the WG is here","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 17:11:36 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: Unprefixed getUserMedia"},{"name":"To","value":"Jan-Ivar Bruaroey <jib@mozilla.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>"}]}}]},{"messages":[{"snippet":"I'd like to propose simplifying web-platform-tests import process. Current procedure: https://www","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 15:16:07 +0900"},{"name":"Subject","value":"[blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, bjonesbe@adobe.com, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"Do you have a proposal for how to indicate why a test is being skipped in W3CImportExpectations? We","payload":{"headers":[{"name":"From","value":"\"'Tim Dresser' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 12:06:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, bjonesbe@adobe.com, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"Do you have a proposal for how to indicate why a test is being skipped in W3CImportExpectations? We","payload":{"headers":[{"name":"From","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 12:07:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, bjonesbe@adobe.com, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"The plan sounds reasonable to me. Importing has been a pain just I think the "ownership"","payload":{"headers":[{"name":"From","value":"\"'Mustaq Ahmed' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 10:23:44 -0400"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Timothy Dresser <tdresser@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, bjonesbe@adobe.com, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"I think the motivation is good (we should be trying to auto-roll in the tests) but I have the same","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 13:47:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Suzy Howlett <suzyh@chromium.org>, hta@chromium.org, michaeln@chromium.org, Quinten Yearsley <qyearsley@chromium.org>"}]}},{"snippet":"What problem does this solve? Importing the W3C tests is not hard as it is. The approach of silently","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 17:56:28 -0400"},{"name":"Subject","value":"[blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"+Shruthi Sreekanta +Rick Byers Something to consider is that we're in the process of: a) Setting","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 23:38:49 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, sshruthi@google.com, rbyers@google.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"On Fri, Jun 10, 2016 at 9:07 PM, Timothy Dresser <tdresser@chromium.org> wrote: Do you have a","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:33:13 +0900"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"On Fri, Jun 10, 2016 at 11:23 PM, Mustaq Ahmed <mustaq@google.com> wrote: The plan sounds","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:38:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Mustaq Ahmed <mustaq@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Timothy Dresser <tdresser@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, jww@chromium.org, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"On Sat, Jun 11, 2016 at 5:47 AM, Dirk Pranke <dpranke@chromium.org> wrote: I think the","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:46:52 +0900"},{"name":"Subject","value":"Re: [blink-dev] Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Timothy Dresser <tdresser@chromium.org>, blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Suzy Howlett <suzyh@chromium.org>, hta@chromium.org, michaeln@chromium.org, Quinten Yearsley <qyearsley@chromium.org>"}]}},{"snippet":"On Sat, Jun 11, 2016 at 6:56 AM, Christian Biesinger <cbiesinger@chromium.org> wrote: What","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:50:55 +0900"},{"name":"Subject","value":"[blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"On Sat, Jun 11, 2016 at 8:38 AM, Ojan Vafai <ojan@chromium.org> wrote: +Shruthi Sreekanta +Rick","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 10:04:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Suzy Howlett <suzyh@chromium.org>, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"Note, this summer one of the primary goals for my intern project (of dcampb@google.com and raikiri@","payload":{"headers":[{"name":"Date","value":"Mon, 13 Jun 2016 10:06:06 -0700 (PDT)"},{"name":"From","value":"Quinten <qyearsley@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"cbiesinger@chromium.org, tkent@chromium.org, sshruthi@google.com, rbyers@google.com, kochi@chromium.org, bjonesbe@adobe.com, kojii@chromium.org, jsbell@chromium.org, bajones@chromium.org, phoglund@chromium.org, mustaq@chromium.org, rob.buis@samsung.com, mkwst@chromium.org, jww@chromium.org, chongz@chromium.org, dtapuska@chromium.org, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org, dcampb@google.com, raikiri@google.com"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"}]}},{"snippet":"Tamura-san, will you be at BlinkOn next week? This sounds like a great topic to discuss there. If not","payload":{"headers":[{"name":"From","value":"\"'Suzy Howlett' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 17:57:29 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Ojan Vafai <ojan@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"On Mon, Jun 13, 2016 at 2:50 AM, TAMURA, Kent <tkent@chromium.org> wrote: > On Sat, Jun 11,","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 21:00:04 +0200"},{"name":"Subject","value":"[blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"}]}},{"snippet":"I summarized some of the discussion here in a doc, if it's useful, this could be edited during/","payload":{"headers":[{"name":"Date","value":"Thu, 16 Jun 2016 15:35:20 -0700 (PDT)"},{"name":"From","value":"qyearsley via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"cbiesinger@chromium.org, kochi@chromium.org, bjonesbe@adobe.com, kojii@chromium.org, jsbell@chromium.org, bajones@chromium.org, phoglund@chromium.org, mustaq@chromium.org, rob.buis@samsung.com, mkwst@chromium.org, jww@chromium.org, chongz@chromium.org, dtapuska@chromium.org, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"}]}},{"snippet":"If we have a mapping of directories to bug components and owners, then for every new failure (","payload":{"headers":[{"name":"From","value":"Quinten Yearsley <qyearsley@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 11:48:07 -0700"},{"name":"Subject","value":"[blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"cbiesinger@chromium.org, kochi@chromium.org, bjonesbe@adobe.com, kojii@chromium.org, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, phoglund@chromium.org, mustaq@chromium.org, rob.buis@samsung.com, mkwst@chromium.org, jww@chromium.org, chongz@chromium.org, dtapuska@chromium.org, suzyh@chromium.org, hta@chromium.org, michaeln@chromium.org, Dre Campbell <dcampb@google.com>, Anphernee Wilson <raikiri@google.com>"}]}},{"snippet":"This is really a question for the team leads to say what process they would like to follow since they","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Sat, 18 Jun 2016 12:59:54 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Quinten Yearsley <qyearsley@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Anphernee Wilson <raikiri@google.com>, Dre Campbell <dcampb@google.com>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, Bem Jones-Bey <bjonesbe@adobe.com>, Christian Biesinger <cbiesinger@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, hta@chromium.org, Joel Weinberger <jww@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Koji Ishii <kojii@chromium.org>, michaeln@chromium.org, Mike West <mkwst@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, \"Patrik Höglund\" <phoglund@chromium.org>, Rob Buis <rob.buis@samsung.com>, suzyh@chromium.org, Shruthi Sreekanta <sshruthi@google.com>"}]}},{"snippet":"I intended to discuss this in BlinkOn Predictability discussion session, however we had no enough","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 17:45:38 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Proposal: Simpler procedure to import web-platform-tests"},{"name":"To","value":"Quinten Yearsley <qyearsley@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Takayoshi Kochi <kochi@chromium.org>, Bem Jones-Bey <bjonesbe@adobe.com>, Koji Ishii <kojii@chromium.org>, Joshua Bell <jsbell@chromium.org>, bajones@chromium.org, \"Patrik Höglund\" <phoglund@chromium.org>, Mustaq Ahmed <mustaq@chromium.org>, Rob Buis <rob.buis@samsung.com>, Mike West <mkwst@chromium.org>, Joel Weinberger <jww@chromium.org>, Chong <chongz@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Suzy Howlett <suzyh@chromium.org>, hta@chromium.org, michaeln@chromium.org, Dre Campbell <dcampb@google.com>, Anphernee Wilson <raikiri@google.com>"}]}}]},{"messages":[{"snippet":"I'm doing some refactoring inside of the V8 bindings code generation (all python), and it looks","payload":{"headers":[{"name":"From","value":"\"'Ian Clelland' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 14:29:43 -0400"},{"name":"Subject","value":"[blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Last I checked, pep8 and pylint checked for and caught different things, and hence there was value in","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 11:47:50 -0700"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"Ian Clelland <iclelland@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, tansell@chromium.org"}]}},{"snippet":"Does putting the opening brace on its own line help? That's how I'd have done it: return {","payload":{"headers":[{"name":"Date","value":"Thu, 9 Jun 2016 14:50:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@google.com>, blink-dev <blink-dev@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, tansell@chromium.org"}]}},{"snippet":"I ended up putting the closing brace on the end of the previous line, which satisfied both. It's","payload":{"headers":[{"name":"Date","value":"Thu, 9 Jun 2016 14:57:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"From","value":"Ian Clelland <iclelland@google.com>"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Quinten Yearsley <qyearsley@chromium.org>, Dirk Pranke <dpranke@chromium.org>, blink-dev <blink-dev@chromium.org>, tansell@chromium.org"}]}},{"snippet":"I'm curious: there is a format-webkitpy script that does what you'd think it would do. Did","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 12:30:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"Ian Clelland <iclelland@google.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, blink-dev <blink-dev@chromium.org>, tansell@chromium.org"}]}},{"snippet":"I did not know about that -- thanks! (Can we hook that up to git cl format?) (Trying it, it seems","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@google.com>"},{"name":"Date","value":"Thu, 9 Jun 2016 15:48:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, blink-dev <blink-dev@chromium.org>, tansell@chromium.org"}]}},{"snippet":"I actually thought it was hooked up to git-cl format, but I'm probably misremembering. -- Dirk On","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 13:04:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"Ian Clelland <iclelland@google.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, blink-dev <blink-dev@chromium.org>, tansell@chromium.org"}]}},{"snippet":"YAPF is hooked up to git cl format, but you have to make sure that you have yapf installed yourself;","payload":{"headers":[{"name":"From","value":"Quinten Yearsley <qyearsley@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 13:19:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] Pylint and PEP8 presubmit checks fighting"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@google.com>, Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>, tansell@chromium.org"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 02:07:06 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - June 6, 2016"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Is it possible? I see long-running javascript there, but I don't know where it's coming from.","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 23:45:36 +0000"},{"name":"Subject","value":"[blink-dev] Associating v8.callFunction in chrome://tracing to execution context and source file"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"DevTools record devtools.timeline.FunctionCall event with the info you may find helpful. Just enable","payload":{"headers":[{"name":"From","value":"\"'Alexei Filippov' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 17:27:35 -0700"},{"name":"Subject","value":"Re: [blink-dev] Associating v8.callFunction in chrome://tracing to execution context and source file"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That's the magic, thanks! On Wed, Jun 8, 2016 at 5:27 PM Alexei Filippov <alph@google.com>","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 08:41:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] Associating v8.callFunction in chrome://tracing to execution context and source file"},{"name":"To","value":"Alexei Filippov <alph@google.com>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, June 8: Recent updates: We're continuing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 15:15:11 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, June 8, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Informator 1/2016 NOVO NA TRŽIŠTU! Povoljan i atraktivan bežični alarmni sistem kojim možete","payload":{"headers":[{"name":"To","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Informator 1/2016"},{"name":"Date","value":"Wed, 08 Jun 2016 07:30:03 +0200"},{"name":"From","value":"Tesla Sistemi <info@tesla.rs>"}]}}]},{"messages":[{"snippet":"This is a re-posting of https://groups.google.com/a/chromium.org/d/msg/blink-dev/OzHI2c2vkEo/9Bz-","payload":{"headers":[{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 22:36:38 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Tue, Jun 7, 2016 at 10:36 PM, Dave Tapuska <dtapuska@chromium.org> wrote: This is a re","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 11:31:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm2 On Thu, Jun 9, 2016 at 5:32 PM Rick Byers <rbyers@chromium.org> wrote: LGTM1 On Tue, Jun","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 15:40:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. On Thu, Jun 9, 2016 at 8:40 AM, Jochen Eisinger <jochen@chromium.org> wrote: lgtm2 On","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 08:40:46 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails Eng: avayvod@chromium.org, mlamouri@chromium.org, zqzhang@chromium.org PM: renganathan","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"avayvod@chromium.org, renganathan@chromium.org, zqzhang@chromium.org"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Tue, 07 Jun 2016 23:37:51 +0100"}]}},{"snippet":"Non owner +1, The workarounds I've seen are extremely inefficient across at least one dimension (","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 05:43:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev@chromium.org"},{"name":"Cc","value":"avayvod@chromium.org, renganathan@chromium.org, zqzhang@chromium.org"}]}},{"snippet":"This sounds a low-risk and a good feature, but I hesitate to approve this because of no spec. On Wed,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 14:48:46 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"Will videos that are off screen also start playing regardless? TAMURA, Kent <tkent@chromium.org","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 05:59:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"If a video has the autoplay attribute and is muted, we will wait for it to be in viewport to play it.","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Wed, 08 Jun 2016 12:09:19 +0100"}]}},{"snippet":"What are your thoughts about video elements not in the DOM used to drive WebGL playbacks? See http://","payload":{"headers":[{"name":"From","value":"Dale Curtis <dalecurtis@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 10:47:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"On Wed, Jun 8, 2016 at 8:09 PM, Mounir Lamouri <mounir@lamouri.fr> wrote: If a video has the","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 09:27:05 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"On Tue, Jun 7, 2016 at 3:37 PM, Mounir Lamouri <mounir@lamouri.fr> wrote: Contact emails Eng:","payload":{"headers":[{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 20:22:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anton Vayvod <avayvod@chromium.org>, renganathan@chromium.org, zqzhang@chromium.org"}]}},{"snippet":"On Wed, Jun 8, 2016 at 8:22 PM, Alexandre Elias <aelias@chromium.org> wrote: > > On Tue,","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 21:17:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anton Vayvod <avayvod@chromium.org>, renganathan@chromium.org, zqzhang@chromium.org"}]}},{"snippet":"Dale, regarding playing videos off tree to render them with WebGL, I would say that given the","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anton Vayvod <avayvod@chromium.org>, renganathan@chromium.org, zqzhang@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Thu, 09 Jun 2016 11:17:39 +0100"}]}},{"snippet":"A spec change will also be required for the autoplay attribute. Currently, there is exactly one place","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 10:55:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>, Jochen Eisinger <jochen@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"On Thu, Jun 9, 2016 at 3:17 AM, Mounir Lamouri <mounir@lamouri.fr> wrote: Dale, regarding","payload":{"headers":[{"name":"From","value":"Dale Curtis <dalecurtis@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 10:54:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Alexandre Elias <aelias@chromium.org>, blink-dev <blink-dev@chromium.org>, Anton Vayvod <avayvod@chromium.org>, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"On Thu, 9 Jun 2016, at 18:54, Dale Curtis wrote: > On Thu, Jun 9, 2016 at 3:17 AM, Mounir Lamouri","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Dale Curtis <dalecurtis@chromium.org>"},{"name":"Cc","value":"Alexandre Elias <aelias@chromium.org>, blink-dev <blink-dev@chromium.org>, Anton Vayvod <avayvod@chromium.org>, renganathan <renganathan@chromium.org>, zqzhang@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Thu, 09 Jun 2016 20:16:51 +0100"}]}},{"snippet":"In terms of accessibility considerations, autoplay is a bad plan. Of course, GIFs do that now, but","payload":{"headers":[{"name":"Date","value":"Fri, 10 Jun 2016 16:58:17 -0700 (PDT)"},{"name":"From","value":"chris.heilmann@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"avayvod@chromium.org, renganathan@chromium.org, zqzhang@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"}]}},{"snippet":"On Sat, 11 Jun 2016, at 00:58, chris.heilmann@gmail.com wrote: > In terms of accessibility","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"chris.heilmann@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"avayvod@chromium.org, renganathan@chromium.org, zqzhang@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Sun, 12 Jun 2016 11:11:39 +0100"}]}},{"snippet":"LGTM2 IMHO this is relaxing an existing intervention to reflect that it was a misguided design that","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 10:24:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"chris.heilmann@gmail.com, blink-dev <blink-dev@chromium.org>, \"avayvod@chromium.org\" <avayvod@chromium.org>, Renganathan Ramamoorthy <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"LGTM3 On Mon, Jun 13, 2016 at 7:24 AM Rick Byers <rbyers@chromium.org> wrote: LGTM2 IMHO this","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 17:33:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"chris.heilmann@gmail.com, blink-dev <blink-dev@chromium.org>, \"avayvod@chromium.org\" <avayvod@chromium.org>, Renganathan Ramamoorthy <renganathan@chromium.org>, zqzhang@chromium.org"}]}},{"snippet":"FWIW, Apple announced that Safari 10 will ship autoplay for muted videos and videos without audio","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"chris.heilmann@gmail.com, blink-dev <blink-dev@chromium.org>, avayvod@chromium.org, Renganathan Ramamoorthy <renganathan@chromium.org>, zqzhang@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Mon, 13 Jun 2016 22:33:27 +0100"}]}},{"snippet":"Great to see. It seems like this will enable autoplay with sound in some cases. Is that right? On Jun","payload":{"headers":[{"name":"Date","value":"Mon, 13 Jun 2016 14:42:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"From","value":"\"'Darin Fisher' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Zhiqiang Zhang <zqzhang@chromium.org>, Anton <avayvod@chromium.org>, chris.heilmann@gmail.com, Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Renganathan Ramamoorthy <renganathan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, it is possible that it means that Safari will autoplay videos with sound if they are considered","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Darin Fisher <darin@google.com>"},{"name":"Cc","value":"Zhiqiang Zhang <zqzhang@chromium.org>, Anton <avayvod@chromium.org>, chris.heilmann@gmail.com, Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Renganathan Ramamoorthy <renganathan@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"Date","value":"Mon, 13 Jun 2016 22:48:44 +0100"}]}},{"snippet":"I wonder if it uses the same heuristic as their version of plugin power saver. -Darin On Jun 13, 2016","payload":{"headers":[{"name":"Date","value":"Mon, 13 Jun 2016 14:51:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: autoplay muted videos on Android"},{"name":"From","value":"Darin Fisher <darin@chromium.org>"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Christian Heilmann <chris.heilmann@gmail.com>, Anton <avayvod@chromium.org>, Zhiqiang Zhang <zqzhang@chromium.org>, Rick Byers <rbyers@chromium.org>, Renganathan Ramamoorthy <renganathan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mlamouri@chromium.org (eng), renganathan@chromium.org (pm) Spec No spec. Public","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"renganathan@chromium.org, rtoy@chromium.org"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"Date","value":"Tue, 07 Jun 2016 23:35:25 +0100"}]}},{"snippet":"On Tue, Jun 7, 2016 at 3:35 PM, Mounir Lamouri <mounir@lamouri.fr> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 15:51:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, renganathan@chromium.org, rtoy@chromium.org, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"I wanted to point out the "public discussion" link isn't a discussion of the","payload":{"headers":[{"name":"From","value":"\"'Chris Wilson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 16:45:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, renganathan@chromium.org, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"Sadly I am agreeing with Chris here. As a WebAudio developer, I feel this blocking mechanism on","payload":{"headers":[{"name":"From","value":"Hongchan Choi <hongchan@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 00:00:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Chris Wilson <cwilso@google.com>, Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, renganathan@chromium.org, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"On Wed, 8 Jun 2016, at 00:45, Chris Wilson wrote: > I wanted to point out the "public","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Chris Wilson <cwilso@google.com>, Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, renganathan@chromium.org, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>, padenot@mozilla.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"Date","value":"Wed, 08 Jun 2016 14:36:52 +0100"}]}},{"snippet":"On Tuesday, June 7, 2016 at 6:52:08 PM UTC-4, Jeffrey Yasskin wrote: I got opposition to having the","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 08:13:04 -0700 (PDT)"},{"name":"From","value":"wingboy@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mounir@lamouri.fr, renganathan@chromium.org, rtoy@chromium.org, benwells@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"}]}},{"snippet":"I'm not at all surprised that this is a controversial change. I think what we should hope for, in","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:38:04 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"wingboy@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mounir@lamouri.fr, renganathan@chromium.org, rtoy@chromium.org, benwells@chromium.org"}]}},{"snippet":"On 6/8/16 11:38 AM, Philip Jägenstedt wrote: Jan-Ivar, interaction with gUM-originating MediaStreams","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mounir@lamouri.fr, renganathan@chromium.org, rtoy@chromium.org, benwells@chromium.org"},{"name":"From","value":"Jan-Ivar Bruaroey <jib@mozilla.com>"},{"name":"Date","value":"Wed, 8 Jun 2016 11:45:16 -0400"}]}},{"snippet":"On Wed, Jun 8, 2016 at 5:45 PM Jan-Ivar Bruaroey <jib@mozilla.com> wrote: On 6/8/16 11:38 AM,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:49:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Jan-Ivar Bruaroey <jib@mozilla.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mounir@lamouri.fr, renganathan@chromium.org, rtoy@chromium.org, benwells@chromium.org"}]}},{"snippet":"On Wed, Jun 8, 2016 at 6:36 AM, Mounir Lamouri <mounir@lamouri.fr> wrote: Correct. Chrome","payload":{"headers":[{"name":"From","value":"\"'Chris Wilson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 12:21:10 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Jeffrey Yasskin <jyasskin@chromium.org>, blink-dev <blink-dev@chromium.org>, renganathan@chromium.org, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>, Paul Adenot <padenot@mozilla.com>"}]}},{"snippet":"On Wed, Jun 8, 2016 at 8:38 AM, Philip Jägenstedt <foolip@chromium.org> wrote: I'm not at","payload":{"headers":[{"name":"From","value":"\"'Chris Wilson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 12:28:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"wingboy@gmail.com, blink-dev <blink-dev@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, renganathan@chromium.org, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"The discussion in this thread indicates that before we get to implementation, we might want to come","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 12:48:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Chris Wilson <cwilso@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, wingboy@gmail.com, blink-dev <blink-dev@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Renganathan Ramamoorthy <renganathan@chromium.org>, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"If you guys will be there, this seems like a great discussion topic for BlinkOn! We've repeatedly","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 14:31:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chris Wilson <cwilso@google.com>, \"Philip Jägenstedt\" <foolip@chromium.org>, wingboy@gmail.com, blink-dev <blink-dev@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Renganathan Ramamoorthy <renganathan@chromium.org>, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"1) Yes, I'm happy to work with Mounir to resolve. Will follow up. 2) Rick, usually I'd be","payload":{"headers":[{"name":"From","value":"\"'Chris Wilson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 12:18:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jan-Ivar Bruaroey <wingboy@gmail.com>, blink-dev <blink-dev@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Renganathan Ramamoorthy <renganathan@chromium.org>, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"For what it's worth, I have heard reports that one of the largest group of advertisers is pushing","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 20:45:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Web Audio requires user gesture on Android"},{"name":"To","value":"Chris Wilson <cwilso@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Jan-Ivar Bruaroey <wingboy@gmail.com>, blink-dev <blink-dev@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Renganathan Ramamoorthy <renganathan@chromium.org>, Raymond Toy <rtoy@chromium.org>, Ben Wells <benwells@chromium.org>"}]}}]},{"messages":[{"snippet":"I'm trying to understand how the Chrome content layer works, specifically how content_shell gets","payload":{"headers":[{"name":"Subject","value":"[blink-dev] chrome content API"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Tue, 7 Jun 2016 12:36:49 -0400"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Both processes run the same binary. There isn't a browser process app and a renderer process app.","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 16:50:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 12:36 PM, Andy Somogyi <andy.somogyi@gmail.com> wrote: I'm still a","payload":{"headers":[{"name":"From","value":"Avi Drissman <avi@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 13:06:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, that makes a lot more sense now. What about OpenGL canvas, or video element, or plugins like","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 8 Jun 2016 02:41:24 -0400"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"Avi Drissman <avi@chromium.org>"}]}},{"snippet":"On analyzing the multi process architecture further, I just don't think it will work for my needs","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 8 Jun 2016 04:06:26 -0400"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"Avi Drissman <avi@chromium.org>"}]}},{"snippet":"Single-process mode is only regularly used/tested in Android WebView (and some tests). On other OSes/","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 09:01:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Avi Drissman <avi@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Jun 8, 2016 at 2:41 AM, Andy Somogyi <andy.somogyi@gmail.com> wrote: What about OpenGL","payload":{"headers":[{"name":"From","value":"Avi Drissman <avi@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 10:57:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As other posters have noted, single-process model is unsupported for desktop. Anyways, I don't","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 20:53:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Avi Drissman <avi@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Stefan, First off, I've only been studying the Chrome architecture for about a week now, so","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 8 Jun 2016 17:24:56 -0400"},{"name":"Cc","value":"Avi Drissman <avi@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"}]}},{"snippet":"Sounds like what you really want is React and emscripten, but if that's not performant enough (or","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 22:06:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Avi Drissman <avi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There are many ways to do this, but if you want to look at an example, ExtensionFunction does","payload":{"headers":[{"name":"From","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 22:24:28 +0000"},{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Avi Drissman <avi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Lucas This looks like exactly what I've been looking for. Sent from my iPhone On Jun 8,","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] chrome content API"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 8 Jun 2016 18:50:04 -0400"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Avi Drissman <avi@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi , I am trying to apply a color theme to the content by adding changes in blink side. I am trying","payload":{"headers":[{"name":"Date","value":"Tue, 07 Jun 2016 15:41:46 +0000 (GMT)"},{"name":"From","value":"SIVA KUMAR GUNTURI <siva.gunturi@samsung.com>"},{"name":"Subject","value":"[Query] Applying theme to content"},{"name":"To","value":"blink-dev@chromium.org, paint-dev@chromium.org"}]}},{"snippet":"Hi , I am trying to apply a color theme to the content by adding changes in blink side. I am trying","payload":{"headers":[{"name":"Date","value":"Tue, 07 Jun 2016 15:41:46 +0000 (GMT)"},{"name":"From","value":"SIVA KUMAR GUNTURI <siva.gunturi@samsung.com>"},{"name":"Subject","value":"[blink-dev] [Query] Applying theme to content"},{"name":"To","value":"blink-dev@chromium.org, paint-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails fs@opera.com, (noel@chromium.org [initiator; OOO]) Spec http://dev.w3.org/fxtf/filters","payload":{"headers":[{"name":"Date","value":"Tue, 7 Jun 2016 13:27:26 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM On Tue, Jun 7, 2016 at 4:27 AM, Fredrik Söderquist <fs@opera.com> wrote: Contact emails fs","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 07:52:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As far as I remember, one of the reasons for not sending an intent to implement or ship before, was","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 7 Jun 2016 19:09:33 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"\"Fredrik Söderquist\" <fs@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Also, do the implementations interoperate in terms of the visual output? (I assume that the syntax","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 7 Jun 2016 19:11:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"\"Fredrik Söderquist\" <fs@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 6:09 PM, PhistucK <phistuck@gmail.com> wrote: As far as I remember, one","payload":{"headers":[{"name":"Date","value":"Tue, 7 Jun 2016 18:15:01 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 6:11 PM, PhistucK <phistuck@gmail.com> wrote: Also, do the","payload":{"headers":[{"name":"Date","value":"Tue, 7 Jun 2016 18:29:55 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is there a test suite? Some actual pass rate reports that can be shown? ☆PhistucK On Tue, Jun 7, 2016","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 7 Jun 2016 19:39:01 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 6:39 PM, PhistucK <phistuck@gmail.com> wrote: Is there a test suite?","payload":{"headers":[{"name":"Date","value":"Tue, 7 Jun 2016 18:56:14 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Well, as outdated as they are, the results show differences... Can you verify that they no longer","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 7 Jun 2016 22:31:01 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 9:31 PM, PhistucK <phistuck@gmail.com> wrote: Well, as outdated as they","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 17:02:32 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2, assuming you yourself judge the differences revealed by those tests to be small enough to be","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:13:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. Thanks for the investigation into the test suite! I love to hear that that's actually","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 20:06:45 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"\"Fredrik Söderquist\" <fs@opera.com>, PhistucK <phistuck@gmail.com>, Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is very exciting, I was working with a designer recently who was very confused why filter only","payload":{"headers":[{"name":"Date","value":"Fri, 10 Jun 2016 13:58:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Unprefixed CSS Filters"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>, Brenton Simpson <brentons@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Enter code here... On Tuesday, 7 June 2016 13:27:30 UTC+2, Fredrik Söderquist wrote: Contact emails f","payload":{"headers":[{"name":"Date","value":"Fri, 10 Jun 2016 14:32:42 -0700 (PDT)"},{"name":"From","value":"nin.minoalb@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Unprefixed CSS Filters"}]}}]},{"messages":[{"snippet":"As part of our work on Custom Elements V1, I'm adding [CEReactions] IDL attribute to many methods","payload":{"headers":[{"name":"From","value":"Koji Ishii <kojii@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 16:59:39 +0900"},{"name":"Subject","value":"[blink-dev] [CEReactions] IDL attribute is coming"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all. I'm interested in making a test where the network is offline from the perspective of the","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 03:04:48 +0000"},{"name":"Subject","value":"[blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Does it have to be a layout test? Could it be a unit test instead? Daniel On Mon, Jun 6, 2016 at 8:05","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 03:15:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Well, a unit test would be helpful as well, but I'm definitely looking for a way to do it in a","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 04:00:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There seems to be an internals.setNetworkConnectionInfo method, but as far as I can tell that only","payload":{"headers":[{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 23:33:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+net-dev@chromium.org It would be nice if dev-tools and layout tests could have more control over the","payload":{"headers":[{"name":"From","value":"\"'Josh Karlin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 11:12:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>, Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"That seems like it would add a lot of complexity for not a lot of clear value. Are there concrete use","payload":{"headers":[{"name":"From","value":"Ryan Sleevi <rsleevi@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 04:45:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Josh Karlin <jkarlin@google.com>"},{"name":"Cc","value":"Marijn Kruisselbrink <mek@chromium.org>, Joel Weinberger <jww@chromium.org>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"I think Josh's example is a pretty compelling one. It sounds like today, we can't actually","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 13:39:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"rsleevi@chromium.org, Josh Karlin <jkarlin@google.com>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"Background Sync uses browser tests for API testing, partly for this reason. I'm okay with that,","payload":{"headers":[{"name":"From","value":"\"'Josh Karlin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 13:47:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>, rsleevi@chromium.org"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"Makes sense, and I'm guessing I'll have to do the best that I can with browsers tests as well","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 14:22:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Josh Karlin <jkarlin@google.com>, rsleevi@chromium.org"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 4:22 PM, Joel Weinberger <jww@chromium.org> wrote: Makes sense, and I","payload":{"headers":[{"name":"From","value":"Yoav Weiss <yoav@yoav.ws>"},{"name":"Date","value":"Tue, 7 Jun 2016 16:29:31 +0200"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Josh Karlin <jkarlin@google.com>, Ryan Sleevi <rsleevi@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 7:22 AM, Joel Weinberger <jww@chromium.org> wrote: Makes sense, and I","payload":{"headers":[{"name":"From","value":"Ryan Sleevi <rsleevi@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 08:01:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Josh Karlin <jkarlin@google.com>, Ryan Sleevi <rsleevi@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"Yoav: doesn't WPT define generic internals-like controls via testharness.js that user agents then","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 17:07:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"rsleevi@chromium.org"},{"name":"Cc","value":"Josh Karlin <jkarlin@google.com>, Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 7:07 PM, Joel Weinberger <jww@chromium.org> wrote: Yoav: doesn't WPT","payload":{"headers":[{"name":"From","value":"Yoav Weiss <yoav@yoav.ws>"},{"name":"Date","value":"Wed, 8 Jun 2016 09:02:37 +0200"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Ryan Sleevi <rsleevi@chromium.org>, Josh Karlin <jkarlin@google.com>, Daniel Cheng <dcheng@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, blink-dev <blink-dev@chromium.org>, \"net-dev@chromium.org\" <net-dev@chromium.org>"}]}},{"snippet":"web-platform-tests doesn't have any API surface for test-only DOM functions because it isn't","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 05:54:04 -0700 (PDT)"},{"name":"From","value":"james@hoppipolla.co.uk"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Simulating offline in LayoutTests"}]}},{"snippet":"The decision was made to make dev-tools networking options be per-tab, as opposed to global.","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 08:04:30 -0700 (PDT)"},{"name":"From","value":"\"'Matthew Menke' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jww@chromium.org, rsleevi@chromium.org, dcheng@chromium.org, mek@chromium.org, net-dev@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"}]}},{"snippet":"Can this be done as a SimTest? That would have many fewer layers than a BrowserTest, run faster and","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 02:19:19 +0000"},{"name":"Subject","value":"Re: [blink-dev] Simulating offline in LayoutTests"},{"name":"To","value":"Matthew Menke <mmenke@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jww@chromium.org, rsleevi@chromium.org, dcheng@chromium.org, mek@chromium.org, net-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails ricea@chromium.org, kenjibaheux@chromium.org Spec https://w3c.github.io/resource-","payload":{"headers":[{"name":"From","value":"\"'Kenji Baheux' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 02:28:44 +0000"},{"name":"Subject","value":"[blink-dev] Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"ricea@google.com\" <ricea@google.com>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"non-API-owner LGTM!!!11 \\o/ Glad to see this implemented. I'll be happy to help with reviews if","payload":{"headers":[{"name":"From","value":"Yoav Weiss <yoav@yoav.ws>"},{"name":"Date","value":"Tue, 7 Jun 2016 15:33:47 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"Kenji Baheux <kenjibaheux@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"ricea@google.com\" <ricea@google.com>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"On Mon, Jun 6, 2016 at 7:28 PM, Kenji Baheux <kenjibaheux@google.com> wrote: Compatibility risk","payload":{"headers":[{"name":"From","value":"\"'Ilya Grigorik' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 08:59:00 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"Kenji Baheux <kenjibaheux@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"ricea@google.com\" <ricea@google.com>"}]}},{"snippet":"LGTM1. On Tue, Jun 7, 2016 at 11:28 AM, 'Kenji Baheux' via blink-dev <blink-dev@chromium.","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 09:38:38 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"Kenji Baheux <kenjibaheux@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"ricea@google.com\" <ricea@google.com>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"LGTM2 On Tue, Jun 7, 2016 at 5:38 PM TAMURA, Kent <tkent@chromium.org> wrote: LGTM1. On Tue,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 05:49:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Kenji Baheux <kenjibaheux@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"ricea@google.com\" <ricea@google.com>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"lgtm3 Chris Harrelson <chrishtr@chromium.org> schrieb am Mi., 8. Juni 2016, 07:49: LGTM2 On Tue","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 06:00:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: size related attributes for Resource Timing API"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, Kenji Baheux <kenjibaheux@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"ricea@google.com\" <ricea@google.com>, Ilya Grigorik <igrigorik@google.com>"}]}}]},{"messages":[{"snippet":"Having trouble viewing or submitting this form? FILL OUT IN GOOGLE FORMS I've invited you to fill","payload":{"headers":[{"name":"Date","value":"Tue, 07 Jun 2016 01:16:13 +0000"},{"name":"Subject","value":"[blink-dev] Web Platform Tests contribution survey"},{"name":"From","value":"tkent@chromium.org"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Thank you for answering the survey. Here is the result. * 15 responses. * Contribution experience -","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 16:26:34 +0900"},{"name":"Subject","value":"Re: [blink-dev] Web Platform Tests contribution survey"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails chrishtr@chromium.org, trchen@chromium.org Spec Editor's draft (includes desired","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 00:41:19 +0000"},{"name":"Subject","value":"Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 6, 2016 at 8:41 PM, Chris Harrelson <chrishtr@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 21:08:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 6, 2016 at 6:08 PM Rick Byers <rbyers@chromium.org> wrote: On Mon, Jun 6, 2016 at 8","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 18:00:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 2:00 PM, Chris Harrelson <chrishtr@chromium.org> wrote: On Mon, Jun 6,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 15:30:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 7, 2016 at 12:30 PM Rick Byers <rbyers@chromium.org> wrote: On Tue, Jun 7, 2016 at","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 18:08:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"On Wed, Jun 8, 2016 at 11:08 AM, Chris Harrelson <chrishtr@chromium.org> wrote: On Tue, Jun 7,","payload":{"headers":[{"name":"From","value":"\"'Alex Russell' via paint-dev\" <paint-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 12:23:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, \"paint-dev@chromium.org\" <paint-dev@chromium.org>"}]}},{"snippet":"LGTM! On Wed, Jun 8, 2016 at 11:08 AM, Chris Harrelson <chrishtr@chromium.org> wrote: On Tue,","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 13:11:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Hongchan <hongchan@chromium.org>"}]}},{"snippet":"One more needed... On Wed, Jun 8, 2016 at 1:11 PM Dimitri Glazkov <dglazkov@chromium.org> wrote","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 21:55:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Hongchan <hongchan@chromium.org>"}]}},{"snippet":"LGTM On Thu, Jun 9, 2016 at 6:55 AM, Chris Harrelson <chrishtr@chromium.org> wrote: One more","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 08:28:36 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: forcing flattening for elements with opacity < 1"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Hongchan <hongchan@chromium.org>"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 14:13:07 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (circa 2016-05-31)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 880 (↓2%) Number of untriaged/","payload":{"headers":[{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 13:33:36 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data taken from bit.ly/blinkintents. Date","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 12:44:01 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-05","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 12:23:56 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of May 30"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-05-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 12:32:24 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of May 30"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-06-06 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 10:57:26 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-06-06"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"суббота, 4 июня 2016 г., 11:22:59 UTC+4 пользователь jayrich...@gmail.com написал: > Hi ppl","payload":{"headers":[{"name":"Date","value":"Sun, 5 Jun 2016 11:14:11 -0700 (PDT)"},{"name":"From","value":"alekseevdima395@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jayrichards8984@gmail.com"},{"name":"Subject","value":"[blink-dev] Re: https://www.1doc3.com/articulos/210/5-verdades-del-sexo-oral"}]}}]},{"messages":[{"snippet":"tl;dr You will not be able to create or modify bugs on bugs.chromium.org for two hours, starting at","payload":{"headers":[{"name":"From","value":"\"'Sean McCullough' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 16:16:12 -0700"},{"name":"Subject","value":"[blink-dev] PSA: bugs.chromium.org will be read-only for 2 hours on 6/10"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org, chromium-os-dev@chromium.org"}]}},{"snippet":"tl;dr You will not be able to create or modify bugs on bugs.chromium.org for two hours, starting at","payload":{"headers":[{"name":"From","value":"\"'Sean McCullough' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 17:10:37 -0700"},{"name":"Subject","value":"[chromium-dev] Fwd: PSA: bugs.chromium.org will be read-only for 2 hours on 6/10"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, chromium-os-dev@chromium.org"}]}}]},{"messages":[{"snippet":"I found this an interesting read, but have no idea whether blink would benefit from a similar change","payload":{"headers":[{"name":"From","value":"Andrew Grieve <agrieve@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 15:00:20 -0400"},{"name":"Subject","value":"[blink-dev] Webkit's Blog Post About Better Locks"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"+jschuh I discussed this with jschuh@ in the past, he might have some opinions. In general blink","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 01:15:37 -0400"},{"name":"Subject","value":"Re: [blink-dev] Webkit's Blog Post About Better Locks"},{"name":"To","value":"Andrew Grieve <agrieve@chromium.org>, Justin Schuh <jschuh@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 11:03:16 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document","payload":{"headers":[{"name":"Date","value":"Thu, 2 Jun 2016 10:03:20 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"From","value":"Shivani Sharma <shivanisha@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is really exciting! Thanks for the great analysis of the risks from the field trial etc! You","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 10:34:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Shivani Sharma <shivanisha@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"Thanks for the feedback. Responses inline. On Thu, Jun 2, 2016 at 10:34 AM, Rick Byers <rbyers@","payload":{"headers":[{"name":"From","value":"\"'Shivani Sharma' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 13:43:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"Perfect, thank you! On Thu, Jun 2, 2016 at 1:43 PM, Shivani Sharma <shivanisha@google.com>","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 16:36:43 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Shivani Sharma <shivanisha@google.com>"},{"name":"Cc","value":"Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"Obviously you've got a great focus on measurement. What about reporting - what's the workflow","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 00:33:17 +0000"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@google.com>"},{"name":"Cc","value":"Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"I'm more than happy to see progress in this area! (I've wanted to remove synchronous document","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 09:58:26 +0900"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@google.com>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"Making the behavior depend on the contents of the cache and reloading sounds like it will make this","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 08:16:18 +0000"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@google.com>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 3, 2016 at 4:16 AM, Philip Jägenstedt <foolip@chromium.org> wrote: Making the","payload":{"headers":[{"name":"From","value":"\"'Shivani Sharma' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 13:36:34 -0400"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 3, 2016 at 7:36 PM Shivani Sharma <shivanisha@google.com> wrote: On Fri, Jun 3,","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 20:29:59 +0000"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"Shivani Sharma <shivanisha@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"In parallel to this work, for users on reasonably fast connection, we are assessing an optimization","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Sun, 05 Jun 2016 23:28:48 +0000"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Shivani Sharma <shivanisha@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 3, 2016 at 4:29 PM, Philip Jägenstedt <foolip@chromium.org> wrote: On Fri, Jun 3,","payload":{"headers":[{"name":"From","value":"\"'Shivani Sharma' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 10:32:30 -0400"},{"name":"Subject","value":"Re: [intervention-dev] Re: [blink-dev] Intent to Implement: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write in the main frame"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>, Rick Byers <rbyers@chromium.org>, Shivani Sharma <shivanisha@chromium.org>, blink-dev <blink-dev@chromium.org>, intervention-dev <intervention-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello , Hope! You are doing well. Let me take this opportunity to introduce our services. We focus on","payload":{"headers":[{"name":"From","value":"Nikhil Shrivastava <vijaywebtech9@outlook.com>"},{"name":"Subject","value":"[blink-dev] Digital Marketing Services at Low Cost"},{"name":"Date","value":"Thu, 2 Jun 2016 12:15:28 +0000"}]}}]},{"messages":[{"snippet":"Hello! linux_android_rel_ng, your friendly Android trybot, will soon be faster! (If all goes well","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 02:39:42 +0000"},{"name":"Subject","value":"[blink-dev] PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"(of course, this is pending the current Swarming outage being fixed in time) On Wed, Jun 1, 2016 at 7","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 02:50:22 +0000"},{"name":"Subject","value":"[blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Woooo! Thanks for all the hard work, Stip! On Wed, Jun 1, 2016 at 7:50 PM Mike Stipicevic <stip@","payload":{"headers":[{"name":"From","value":"\"'Daniel Murphy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 17:04:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Woooo! Thanks for all the hard work, Stip! On Wed, Jun 1, 2016 at 7:50 PM Mike Stipicevic <stip@","payload":{"headers":[{"name":"From","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 17:05:16 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Reminder: this is happening in a little over an hour. On Thu, Jun 2, 2016 at 10:05 AM Daniel Murphy","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 23:43:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Daniel Murphy <dmurph@chromium.org>, Mike Stipicevic <stip@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The transition has completed. We are watching the first builds to make sure everything is working","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 01:35:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>, Daniel Murphy <dmurph@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The transition has gone smoothly, although we're tracking elevated failures in","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 02:20:29 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>, Daniel Murphy <dmurph@chromium.org>, chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Seeing failures: https://build.chromium.org/p/tryserver.chromium.android/builders/","payload":{"headers":[{"name":"Date","value":"Thu, 2 Jun 2016 23:53:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Daniel Murphy <dmurph@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The android_webview_test_apk failures look like real flakes, especially because content_browsertests","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 04:45:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Mike Stipicevic <stip@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Daniel Murphy <dmurph@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I filed a bug for the android_webview_test_apk flakiness here: https://bugs.chromium.org/p/chromium/","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 04:50:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Daniel Murphy <dmurph@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Looks like we've survived one day of full load. We'll monitor it throughout next week, but I","payload":{"headers":[{"name":"From","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Date","value":"Sat, 04 Jun 2016 01:37:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Daniel Murphy <dmurph@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Great work Mike and everybody! Having Swarming available for Android is a huge step forward. On Fri,","payload":{"headers":[{"name":"From","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 19:54:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"To","value":"Mike Stipicevic <stip@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, Daniel Murphy <dmurph@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Super impressive results, great work pushing this through! On Jun 3, 2016 7:55 PM, "Kenneth","payload":{"headers":[{"name":"Date","value":"Sun, 5 Jun 2016 14:32:00 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: PSA: Enabling full swarming on linux_android_rel_ng tomorrow night"},{"name":"From","value":"\"'Julie Parent' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"Cc","value":"Daniel Murphy <dmurph@chromium.org>, Mike Stipicevic <stip@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, June 1: Recent updates: We're continuing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 15:42:03 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, June 1, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(forking thread) Ooh. I don't think I've ever gone straight to crrev.com without a CL id, so","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 21:46:46 +0000"},{"name":"Subject","value":"[blink-dev] crrev.com pointing to My Issues [was: bugs.chromium.org now allows a default query]"},{"name":"To","value":"Joe Mason <joenotcharles@chromium.org>, Jason Robbins <jrobbins@google.com>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm! On Wed, Jun 1, 2016 at 5:46 PM, Aaron Gable <agable@chromium.org> wrote: (forking thread)","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 10:20:23 -0400"},{"name":"Subject","value":"[blink-dev] Re: crrev.com pointing to My Issues [was: bugs.chromium.org now allows a default query]"},{"name":"To","value":"Aaron Gable <agable@chromium.org>"},{"name":"Cc","value":"Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"tl;dr: You may start seeing a list of issues assigned to you as the default query. If you don't","payload":{"headers":[{"name":"From","value":"\"'Jason Robbins' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 13:11:09 -0700"},{"name":"Subject","value":"[blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"That's great! Can't wait for this change. That reminds me - it's kind of annoying that","payload":{"headers":[{"name":"From","value":"Joe Mason <joenotcharles@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 17:34:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"Jason Robbins <jrobbins@google.com>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"Big thank you Jason! Excellent work. Owner:me is now the default search query for project members on","payload":{"headers":[{"name":"From","value":"\"'Anthony LaForge' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 20:07:14 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"joenotcharles@chromium.org"},{"name":"Cc","value":"Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"Now URLs like http://crbug.com/?q=Component:Blink%3EAnimation don't work. It always show owner:me","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 11:13:05 +0900"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"Anthony LaForge <laforge@google.com>"},{"name":"Cc","value":"joenotcharles@chromium.org, Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"I'd recommend updating the link to "https://bugs.chromium.org/p/chromium/issues/list?q=","payload":{"headers":[{"name":"From","value":"\"'Anthony LaForge' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 08:16:49 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"joenotcharles@chromium.org, Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"(re-posting using my @chromium.org account so the e-mail won't bounce) I'd recommend updating","payload":{"headers":[{"name":"From","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 08:24:22 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"joenotcharles@chromium.org, Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"Too many historical links to update. It would be great if you could just fix the regression. :( ☆","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 6 Jun 2016 18:29:18 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"Anthony LaForge <laforge@google.com>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Joe Mason <joenotcharles@chromium.org>, Jason Robbins <jrobbins@google.com>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}},{"snippet":"I'm tracking it here. I expect it will be resolved soon. https://bugs.chromium.org/p/monorail/","payload":{"headers":[{"name":"From","value":"Jason Robbins <jrobbins@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 09:34:30 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: [blink-dev] PSA bugs.chromium.org will allow project owners to set a default query"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Anthony LaForge <laforge@google.com>, \"TAMURA, Kent\" <tkent@chromium.org>, Joe Mason <joenotcharles@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, infra-announce@chromium.org"}]}}]},{"messages":[{"snippet":"Hi, I'm a programming language researcher, and we are working on a new visual programming","payload":{"headers":[{"name":"Date","value":"Wed, 1 Jun 2016 07:45:30 -0700 (PDT)"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Blink render tree"}]}},{"snippet":"Could you provide more context so we can help you best? In particular: 1) Are you creating a","payload":{"headers":[{"name":"From","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 11:42:03 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'd advise against this strategy. In particular, Blink (especially Source/core/) is not intended","payload":{"headers":[{"name":"Date","value":"Wed, 1 Jun 2016 12:06:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Stephen, Yes, this will be a stand alone, compiled application. As this is part of a compiler, one","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 1 Jun 2016 12:07:05 -0400"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"Stephen Chenney <schenney@chromium.org>"}]}},{"snippet":"On Wed, Jun 1, 2016 at 12:07 PM, Andy Somogyi <andy.somogyi@gmail.com> wrote: Hi Stephen, Yes,","payload":{"headers":[{"name":"From","value":"Stephen Chenney <schenney@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 13:09:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}},{"snippet":"This sounds like an interesting project, and I can see why you might want to integrate directly into","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 17:12:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, blink-dev <blink-dev@chromium.org>, ikilpatrick@chromium.org"}]}},{"snippet":"On Jun 1, 2016, at 1:09 PM, Stephen Chenney <schenney@chromium.org> wrote: I still have 2","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Wed, 1 Jun 2016 14:05:51 -0400"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Stephen Chenney <schenney@chromium.org>"}]}},{"snippet":"On Wed, Jun 1, 2016 at 11:05 AM Andy Somogyi <andy.somogyi@gmail.com> wrote: On Jun 1, 2016, at","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 18:22:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Stephen Chenney <schenney@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}},{"snippet":"Is it possible to add native C++ objects wrapped with a V8 binding on the content layer side, and","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Thu, 2 Jun 2016 01:23:14 -0400"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"}]}},{"snippet":"On Wed, Jun 1, 2016 at 10:23 PM Andy Somogyi <andy.somogyi@gmail.com> wrote: Is it possible to","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 20:16:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}},{"snippet":"Thanks, Got a few questions about this approach. Just to make sure we're on the same page with","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Fri, 3 Jun 2016 16:27:00 -0400"},{"name":"Cc","value":"Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"}]}},{"snippet":"V8 bindings and stuff live in the render process. NSWindows and the like live in the browser process.","payload":{"headers":[{"name":"From","value":"Avi Drissman <avi@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 16:35:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}},{"snippet":"Also, your email shows a misunderstanding that I'd like to clarify. On Fri, Jun 3, 2016 at 4:27","payload":{"headers":[{"name":"From","value":"Avi Drissman <avi@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 16:42:48 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}},{"snippet":"Thanks, I'm finding the overall architecture a bit difficult to grasp. I did find the content","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"From","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Date","value":"Mon, 6 Jun 2016 11:14:37 -0400"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Avi Drissman <avi@chromium.org>"}]}},{"snippet":"On Mon, Jun 6, 2016 at 11:14 AM, Andy Somogyi <andy.somogyi@gmail.com> wrote: Is there any","payload":{"headers":[{"name":"From","value":"Avi Drissman <avi@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 13:03:39 -0400"},{"name":"Subject","value":"Re: [blink-dev] Blink render tree"},{"name":"To","value":"Andy Somogyi <andy.somogyi@gmail.com>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Stephen Chenney <schenney@chromium.org>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails dongseong.hwang@intel.com, ningxin.hu@intel.com, robert.bradford@intel.com, harry.pan@","payload":{"headers":[{"name":"Date","value":"Wed, 1 Jun 2016 07:08:44 -0700 (PDT)"},{"name":"From","value":"Dongseong Hwang <dongseong.hwang@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Media Capture Depth Stream Extensions"}]}},{"snippet":"Happy to see this added. The WebRTC team will help out with code and design review for extending the","payload":{"headers":[{"name":"From","value":"Niklas Enbom <niklase@chromium.org>"},{"name":"Date","value":"Thu, 2 Jun 2016 09:07:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Media Capture Depth Stream Extensions"},{"name":"To","value":"Dongseong Hwang <dongseong.hwang@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm glad to hear positive feedback from the WebRTC team. I hope Web API owners be happy with this","payload":{"headers":[{"name":"Date","value":"Thu, 2 Jun 2016 10:02:38 -0700 (PDT)"},{"name":"From","value":"Dongseong Hwang <dongseong.hwang@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dongseong.hwang@intel.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Media Capture Depth Stream Extensions"}]}},{"snippet":"This sounds exciting to me! Certainly sounds reasonable to implement (maybe even a good fit for an","payload":{"headers":[{"name":"Date","value":"Thu, 16 Jun 2016 18:57:04 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Media Capture Depth Stream Extensions"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Dongseong Hwang <dongseong.hwang@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>"}]}}]},{"messages":[{"snippet":"Can we have makeGarbageCollected<T>(Args&&... args) to avoid bare new operator like","payload":{"headers":[{"name":"Date","value":"Tue, 31 May 2016 23:53:35 -0700 (PDT)"},{"name":"From","value":"Yoshifumi Inoue <yosin@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"}]}},{"snippet":"If people want to add it, I'm okay with adding it. That said, personally I'm not a big fan of","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 15:59:13 +0900"},{"name":"Subject","value":"Re: [blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"},{"name":"To","value":"Yoshifumi Inoue <yosin@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm also not a fan of this because it hides the allocation. With create() methods code search can","payload":{"headers":[{"name":"Date","value":"Fri, 3 Jun 2016 16:37:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"yosin@chromium.org, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 3, 2016 at 1:37 PM, Elliott Sprehn <esprehn@chromium.org> wrote: I'm also not a","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 13:57:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yoshifumi Inoue <yosin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Jun 3, 2016 at 4:57 PM, Dana Jansens <danakj@chromium.org> wrote: On Fri, Jun 3, 2016","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 17:51:03 -0400"},{"name":"Subject","value":"Re: [blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yoshifumi Inoue <yosin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"While we can make codesearch understand imputed constructor calls for any new helpers we add, I think","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Sat, 04 Jun 2016 03:35:16 +0000"},{"name":"Subject","value":"Re: [blink-dev] I would like to have makeGarbageCollected<T>(Args&&... args)"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yoshifumi Inoue <yosin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Note: The component:Blink>LayoutTests has now been deleted and label Test=Layout has been added","payload":{"headers":[{"name":"Date","value":"Tue, 31 May 2016 13:35:03 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 10:27:29 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Note: we deprecated FileError in 2013 prior to the "Intent" process, so there's no","payload":{"headers":[{"name":"From","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 10:00:37 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Remove: FileError interface"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 Checked the internal use counter data - 0.0001%. I agree the risk should be very low, thanks","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 13:44:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: FileError interface"},{"name":"To","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 M52 is estimated to reach stable on July 26, what do you think about adding a date to the","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 19:30:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: FileError interface"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Joshua Bell <jsbell@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, May 31, 2016 at 12:30 PM Philip Jägenstedt <foolip@chromium.org> wrote: LGTM2 M52","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 15:06:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Remove: FileError interface"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Joshua Bell <jsbell@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"As previously announced, depot_tools will be switching its source of truth from SVN to Git on Monday,","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 16:24:37 +0000"},{"name":"Subject","value":"[blink-dev] ACTION (possibly) REQUIRED: get a new depot_tools checkout"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, \"infra-announce@chromium.org\" <infra-announce@chromium.org>"}]}},{"snippet":"Ad 1) on *nix: you may need echo -e ${PATH//:/\\\\n} | grep depot_tools unless you have interpretation","payload":{"headers":[{"name":"From","value":"\"'Jan Krčál' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 06:04:49 +0000"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] ACTION (possibly) REQUIRED: get a new depot_tools checkout"},{"name":"To","value":"agable@chromium.org, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, \"infra-announce@chromium.org\" <infra-announce@chromium.org>"}]}},{"snippet":"Ad 1) on *nix: you may need echo -e ${PATH//:/\\\\n} | grep depot_tools unless you have interpretation","payload":{"headers":[{"name":"From","value":"\"Jan Krčál\" <jkrcal@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 06:05:57 +0000"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] ACTION (possibly) REQUIRED: get a new depot_tools checkout"},{"name":"To","value":"agable@chromium.org, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, \"infra-announce@chromium.org\" <infra-announce@chromium.org>"}]}},{"snippet":"Thanks, Jan! Reminder: this is happening today. Please make sure you have completed these steps","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 16:12:13 +0000"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] ACTION (possibly) REQUIRED: get a new depot_tools checkout"},{"name":"To","value":"\"Jan Krčál\" <jkrcal@chromium.org>, agable@chromium.org, Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, \"infra-announce@chromium.org\" <infra-announce@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 12:32:13 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (May 13 - May 27)"},{"name":"To","value":"Chromium Loading Performance <loading-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-05","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 10:24:40 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of May 23"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-05-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 10:45:45 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of May 23"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello I was analysing your website and it seems that your website rankings have dropped on Google. It","payload":{"headers":[{"name":"Date","value":"Mon, 30 May 2016 01:30:20 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Amelia Piper | Dominics WebNetworks Pty Ltd\" <ameliakerr107@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Hi Highlights: - Finalized the design of Memory Coordinator! - Visualized renderer's memory in a","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 10:22:04 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-05-30 Note: - We removed Blink>RTL and Blink>PageZoom. - We moved","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 08:19:19 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-05-30"},{"name":"To","value":"blink-dev+status@chromium.org"}]}},{"snippet":"> - We removed Blink>RTL and Blink>PageZoom. What happened to the bugs that used to be in","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 18:54:03 -0300"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-30"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}},{"snippet":"2016-06-07 6:54 GMT+09:00 Christian Biesinger <cbiesinger@chromium.org>: > - We removed","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 08:59:16 +0900"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-30"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Makes sense, thanks! -Christian On Jun 6, 2016 18:59, "TAMURA, Kent" <tkent@chromium.org","payload":{"headers":[{"name":"Date","value":"Mon, 6 Jun 2016 19:00:49 -0500"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-30"},{"name":"From","value":"\"'Christian Biesinger' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Kent TAMURA <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Bug with span using columns in chrome.","payload":{"headers":[{"name":"Date","value":"Sat, 28 May 2016 04:53:45 -0700 (PDT)"},{"name":"From","value":"contacto@elsate.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Bug with span using columns in chrome"}]}},{"snippet":"You can search crbug.com for an existing issue and star it. If you cannot find one, file a new issue","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 28 May 2016 14:58:42 +0300"},{"name":"Subject","value":"Re: [blink-dev] Bug with span using columns in chrome"},{"name":"To","value":"contacto@elsate.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"\"'Bugs Nash' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 17:50:01 +1000"},{"name":"Subject","value":"[blink-dev] Last week in style"},{"name":"To","value":"style-dev@chromium.org"}]}}]},{"messages":[{"snippet":"From: Rick Byers [mailto:rbyers@chromium.org] > The entry also says it's been shipped in Opera","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"CC","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Chrome status Opera shipping entries (was RE: [blink-dev] Intent to ship: Alternative Services)"},{"name":"Date","value":"Thu, 26 May 2016 19:15:47 +0000"}]}},{"snippet":"Oh, right - thanks for the reminder. Bigger picture, I'm trying to find someone to work on","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 15:26:59 -0400"},{"name":"Subject","value":"Re: Chrome status Opera shipping entries (was RE: [blink-dev] Intent to ship: Alternative Services)"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"== Contact emails == "Bence Béky" <bnc@chromium.org> "Ryan Hamilton" <","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:08:47 -0400"},{"name":"Subject","value":"[blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 2:08 PM, Bence Béky <bnc@chromium.org> wrote: == Contact emails ==","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:20:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This seems like it has the same risks as service worker for allowing an attacker who MiTM's your","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 11:20:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 8:08 PM, Bence Béky <bnc@chromium.org> wrote: > == Interoperability","payload":{"headers":[{"name":"Date","value":"Fri, 27 May 2016 09:52:34 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":">potentially compromising the same-origin policy The Alt-svc is effectively a more secure DNS","payload":{"headers":[{"name":"Date","value":"Fri, 27 May 2016 11:19:03 -0700 (PDT)"},{"name":"From","value":"Samir Jafferali <public@samir.ca>"},{"name":"To","value":"net-dev <net-dev@chromium.org>"},{"name":"Cc","value":"bnc@chromium.org, blink-dev@chromium.org, annevk@annevk.nl"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"}]}},{"snippet":"Hi Rick, Thank you for your questions. Responses inline below. On Thu, May 26, 2016 at 2:20 PM, Rick","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 15:03:16 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for the responses Bence! On Fri, May 27, 2016 at 3:03 PM, Bence Béky <bnc@chromium.org>","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 15:55:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, May 27, 2016 at 8:19 PM, Samir Jafferali <public@samir.ca> wrote: >>potentially","payload":{"headers":[{"name":"Date","value":"Sat, 28 May 2016 06:53:08 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Samir Jafferali <public@samir.ca>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, \"Bence Béky\" <bnc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, May 27, 2016 at 3:52 AM, Anne van Kesteren <annevk@annevk.nl> wrote: > > Having","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 12:14:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 2:20 PM, Elliott Sprehn <esprehn@chromium.org> wrote: > > This","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 12:28:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 31, 2016 at 6:14 PM, Bence Béky <bnc@chromium.org> wrote: > There is a cross-","payload":{"headers":[{"name":"Date","value":"Tue, 31 May 2016 18:44:39 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":">The fact that they share a certificate doesn't mean you should be able to bypass CORS. Today,","payload":{"headers":[{"name":"Date","value":"Tue, 31 May 2016 10:35:36 -0700 (PDT)"},{"name":"From","value":"Samir Jafferali <public@samir.ca>"},{"name":"To","value":"net-dev <net-dev@chromium.org>"},{"name":"Cc","value":"bnc@chromium.org, blink-dev@chromium.org, annevk@annevk.nl"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"}]}},{"snippet":"On Tue, May 31, 2016 at 1:35 PM, Samir Jafferali <public@samir.ca> wrote: > > [...] >","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 13:43:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Samir Jafferali <public@samir.ca>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"}]}},{"snippet":"On Tue, May 31, 2016 at 7:35 PM, Samir Jafferali <public@samir.ca> wrote: > Today, can't","payload":{"headers":[{"name":"Date","value":"Wed, 1 Jun 2016 13:00:02 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Samir Jafferali <public@samir.ca>"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, \"Bence Béky\" <bnc@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi, First, to tie off Elliott's question about restricting Alt-Svc to secure origins, just a","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 09:25:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Are we implementing the spec quite right yet? I recall there was an issue due to our original","payload":{"headers":[{"name":"From","value":"David Benjamin <davidben@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 21:40:28 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi David, Excellent question. Indeed https://crbug.com/615413 is still open, and because of this, TCP","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 09:00:28 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"David Benjamin <davidben@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Jun 6, 2016 at 9:25 AM, Bence Béky <bnc@chromium.org> wrote: Hi, First, to tie off","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 22:09:48 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This seems to have stalled. Are there unanswered questions, or is this waiting for Blink API owners","payload":{"headers":[{"name":"From","value":"Chris Bentzel <cbentzel@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 13:27:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, \"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Chris (Bentzel), I was waiting for a resolution to the question from David Benjamin a few messages","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 10:53:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Chris Bentzel <cbentzel@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, \"Bence Béky\" <bnc@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 21, 2016 at 1:53 PM, Chris Harrelson <chrishtr@chromium.org> wrote: Hi Chris (","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 13:57:15 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Chris Bentzel <cbentzel@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, \"Bence Béky\" <bnc@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi, I am sorry that I sent out this Intent to ship late in the shipping process. Yes, I can confirm","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 15:29:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Chris Bentzel <cbentzel@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ok. LGTM2 then. On Tue, Jun 21, 2016 at 12:29 PM, Bence Béky <bnc@chromium.org> wrote: Hi, I am","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 13:05:10 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Bentzel <cbentzel@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, Jun 21, 2016 at 10:05 PM Chris Harrelson <chrishtr@chromium.org> wrote: Ok. LGTM2","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 13:48:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, \"Bence Béky\" <bnc@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Bentzel <cbentzel@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you all. Please feel free to let me know if any further questions arise. Bence On Wed, Jun 22,","payload":{"headers":[{"name":"From","value":"\"Bence Béky\" <bnc@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 09:55:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to ship: Alternative Services"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Chris Bentzel <cbentzel@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Samir Jafferali <public@samir.ca>, net-dev <net-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails pmeenan@chromium.org Spec None Summary External stylesheets in the body of the","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 13:45:29 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Have you considered issuing a console warning for at least one release that this behavior will change","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 17:57:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Console warning is easy enough to implement since the code to track if a sheet would be impacted by","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:05:40 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 11:05 AM, 'Patrick Meenan' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 11:08:27 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is there at least an issue filed in some W3C or WHATWG GitHub for the fact that the spec doesn't","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:10:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Reliably at runtime I can detect when a script-blocking stylesheet is activated after the body has","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:14:43 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Implementation is a necessary first step. The Edge behavior of blocking the parser still requires","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:21:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 2:14 PM, Patrick Meenan <pmeenan@google.com> wrote: Reliably at runtime","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:28:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As far as specs go, any recommendations where I should poke for specs about painting behavior? There","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:50:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is this change in any way observable to web content? Blocking the parser would be like Edge does","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 14:14:03 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>, Ian Hickson <ian@hixie.ch>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think this is one of those quality-of-implementation issues. I doubt any spec talks about it. On","payload":{"headers":[{"name":"From","value":"Ian Hickson <ian@hixie.ch>"},{"name":"Date","value":"Fri, 27 May 2016 17:29:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It should be completely transparent to scripts and unlikely to be observable from code. I'm not","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 13:39:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Ian Hickson <ian@hixie.ch>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Edge (and I'm pretty sure IE) actually block the parser. This is observable by running a","payload":{"headers":[{"name":"Date","value":"Fri, 27 May 2016 20:42:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Patrick, have you had a discussion with the relevant people for other engines to figure out what","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 13:15:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't know the relevant people to chat with about it for the other engines. I'll file an","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 15:51:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Parser issue opened: https://github.com/whatwg/html/issues/1349 On Mon, May 30, 2016 at 3:51 PM,","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 16:00:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't think we should worry too much about the current html imports. The only reason they need","payload":{"headers":[{"name":"Date","value":"Mon, 30 May 2016 14:15:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Patrick Meenan <pmeenan@google.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Discussing it on the whatwg github issue but as Boris points out, the Edge behavior is against the","payload":{"headers":[{"name":"From","value":"\"'Patrick Meenan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 09:46:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Ian Hickson <ian@hixie.ch>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 5/30/16 9:15 AM, Philip Jägenstedt wrote: > but are there worthwhile things that could be >","payload":{"headers":[{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 10:17:59 -0400"}]}},{"snippet":"On Tue, May 31, 2016 at 7:17 AM, Boris Zbarsky <bzbarsky@mit.edu> wrote: On 5/30/16 9:15 AM,","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 12:38:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 5/31/16 3:38 PM, Elliott Sprehn wrote: > @import is loaded by the preload scanner Last I","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 31 May 2016 15:46:52 -0400"}]}},{"snippet":"On Tue, May 31, 2016 at 12:46 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote: On 5/31/16 3:38 PM,","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 13:20:32 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 5/31/16 4:20 PM, Elliott Sprehn wrote: > There's no free parallelism, we pretend the","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 31 May 2016 21:49:27 -0400"}]}},{"snippet":"Patrick, so what do you want to do with this intent? Do you want to move forward with this as planned","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 13:49:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>, pmeenan@chromium.org"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Jun 21, 2016 at 7:49 PM, Rick Byers <rbyers@chromium.org> wrote: Patrick, so what do","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 20:03:02 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, Patrick Meenan <pmeenan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 6/21/16 2:03 PM, Elliott Sprehn wrote: > Gecko: > - block painting on sheets in head,","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Patrick Meenan <pmeenan@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 21 Jun 2016 14:35:47 -0400"}]}},{"snippet":"On Jun 21, 2016 8:35 PM, "Boris Zbarsky" <bzbarsky@mit.edu> wrote: > > On 6/21/","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 20:57:37 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Thanks for all the research / discussion Elliott! Sounds like a reasonable next step to me. We'll","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 16:25:48 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"LGTM2. The suggested behavior sounds like it'll be easier to reason about, but it's quite","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 15:41:06 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"lgtm3 Philip Jägenstedt <foolip@chromium.org> schrieb am Mi., 22. Juni 2016, 17:41: LGTM2. The","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 15:54:19 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"Sorry about the delay, just getting back from Velocity. Just a quick check on the LGTM's, those","payload":{"headers":[{"name":"From","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 08:53:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>, Patrick Meenan <pmeenan@chromium.org>"}]}},{"snippet":"Hi Patrick, I'm a little unsure what the exact new plan is, in terms of differences from","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 24 Jun 2016 09:11:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, I can directly implement the long-term plan. The current code behind a flag was necessary to be","payload":{"headers":[{"name":"Date","value":"Fri, 24 Jun 2016 09:24:45 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"From","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Patrick Meenan <pmeenan@chromium.org>, Jochen Eisinger <jochen@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ok. LGTM from me to implement and experiment, but I'm concerned about a lack of spec w/ consensus","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 27 Jun 2016 10:38:17 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Stylesheets activated after the body is started do not block paint"},{"name":"To","value":"Patrick Meenan <pmeenan@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Blink devs, Yes, yes, you probably remember my name already... This time I'm going to rename","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 17:00:43 +0900"},{"name":"Subject","value":"[blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 26, 2016 at 1:00 AM, Yuta Kitamura <yutak@chromium.org> wrote: Hi Blink devs, Yes,","payload":{"headers":[{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 10:47:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, May 27, 2016 at 2:47 AM, Pavel Feldman <pfeldman@chromium.org> wrote: Should we do","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 14:08:25 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I recommend blocking the removal of OwnPtr on making it a typedef of std::unique_ptr (you'll need","payload":{"headers":[{"name":"From","value":"Alan Cutter <alancutter@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 05:44:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, Pavel Feldman <pfeldman@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 30, 2016 at 2:44 PM, Alan Cutter <alancutter@chromium.org> wrote: I recommend","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 16:20:39 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Alan Cutter <alancutter@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 30, 2016 at 12:21 AM Yuta Kitamura <yutak@chromium.org> wrote: On Mon, May 30, 2016","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 19:35:43 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, Alan Cutter <alancutter@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 31, 2016 at 4:35 AM, Daniel Cheng <dcheng@chromium.org> wrote: On Mon, May 30, 2016","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 12:31:18 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: OwnPtr::clear() will be renamed to reset()"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Alan Cutter <alancutter@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"HTML/DOM team biweekly snippet (May 9 - May 22) Shadow DOM (hayato@, kochi@) Working on implementing/","payload":{"headers":[{"name":"From","value":"\"'Dominic Cooney' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 15:47:33 +0900"},{"name":"Subject","value":"[blink-dev] HTML/DOM team biweekly snippet (May 9 - May 22)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dom-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Hi everyone, I'm trying to figure out how to map each node of a DOM tree to it's location on","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 17:54:02 -0700 (PDT)"},{"name":"From","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Finding position of DOM node on screen"}]}},{"snippet":"What are you trying to do? On May 25, 2016 5:54 PM, "Roberto Perdisci" <roberto.perdisci","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 20:17:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is for an academic research project focused on "reasoning" about web page content.","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 22:23:22 -0700 (PDT)"},{"name":"From","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"roberto.perdisci@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"}]}},{"snippet":"Seems like this is something you could do in javascript with document.elementFromPoint() to scan the","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 05:38:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"},{"name":"To","value":"Roberto Perdisci <roberto.perdisci@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think you could also do this in C++ by using a rect based hit test with the HitTestRequest::","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 22:54:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Roberto Perdisci <roberto.perdisci@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you Elliot and Stefan for the pointers to elementFromPoint the and hit test. The problem with","payload":{"headers":[{"name":"Date","value":"Thu, 26 May 2016 10:02:47 -0700 (PDT)"},{"name":"From","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org, roberto.perdisci@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"}]}},{"snippet":"The following advice uses JavaScript, not C++ - There is element.getClientRects() which gives you the","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 26 May 2016 20:23:28 +0300"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"},{"name":"To","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, szager@chromium.org"}]}},{"snippet":"Thank you so much. These are great pointers. From these, I should be able to map them back to the","payload":{"headers":[{"name":"Date","value":"Thu, 26 May 2016 10:52:36 -0700 (PDT)"},{"name":"From","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"roberto.perdisci@gmail.com, szager@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"}]}},{"snippet":"Another avenue is to use the inspector code that draws the highlight when you hover over a node. On","payload":{"headers":[{"name":"From","value":"Philip Rogers <pdr@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:40:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Finding position of DOM node on screen"},{"name":"To","value":"Roberto Perdisci <roberto.perdisci@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Stefan Zager <szager@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, May 25: Recent updates: We're continuing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 16:08:53 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, May 25, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Howdy people, My regular debugging flow is to launch content_shell with --renderer-startup-dialog,","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 18:27:24 +0000"},{"name":"Subject","value":"[blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"https://bugs.chromium.org/p/chromium/issues/detail?id=612844 On Wed, May 25, 2016 at 2:27 PM, Stefan","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 16:30:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Whoops, sent too early. On Wed, May 25, 2016 at 4:30 PM, Jeremy Roman <jbroman@chromium.org>","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 16:32:56 -0400"},{"name":"Subject","value":"Re: [blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"I've also had good luck with using the --single-process flag to run the renderer in the same","payload":{"headers":[{"name":"From","value":"Robert Flack <flackr@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 21:05:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"I've been burned too many times by --single-process flag; enough so that I long ago added a","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 21:30:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"To","value":"Robert Flack <flackr@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"I know Whoops, sent too early. On Wed, May 25, 2016 at 4:30 PM, Jeremy Roman <jbroman@chromium.org","payload":{"headers":[{"name":"Subject","value":"Re: [chromium-dev] [blink-dev] debugging blink process with --renderer-startup-dialog broken?"},{"name":"From","value":"neil scanlan <nsscanlan@gmail.com>"},{"name":"Date","value":"Sun, 29 May 2016 06:25:56 -0600"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"}]}}]},{"messages":[{"snippet":"¿ El correo electrónico no se visualiza correctamente ? Pulse aquí ¡Únete a nuestro club filatélico!","payload":{"headers":[{"name":"Date","value":"Wed, 25 May 2016 14:43:14 +0000"},{"name":"From","value":"\"info@clubfilatelico.es\" <mail@eosrv.net>"},{"name":"Subject","value":"[blink-dev] Únete al club filatélico"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-05","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 17:55:28 -0700"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of May 16"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-05-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 17:59:16 -0700"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of May 16"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, As of #395525, all of the Blink bots are using GN for builds (Mac/Win/Linux/Android). If you","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 15:41:28 -0700"},{"name":"Subject","value":"[blink-dev] PSA: chromium.webkit / tryserver.blink is all-GN now"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, sshruthi@chromium.org"}]}},{"snippet":"This is awesome! Great work Dirk and everyone else! -Ken On Tue, May 24, 2016 at 3:41 PM, Dirk Pranke","payload":{"headers":[{"name":"From","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 15:48:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: chromium.webkit / tryserver.blink is all-GN now"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Brett Wilson <brettw@chromium.org>, sshruthi@chromium.org"}]}}]},{"messages":[{"snippet":"If you are not a Blink developer or, at times, a Chromium sheriff faced with resolving Blink","payload":{"headers":[{"name":"Date","value":"Tue, 24 May 2016 15:30:01 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Quinten Yearsley <qyearsley@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] PSA: Blink auto-rebaseline bot status and tryjob-based alternate approach"}]}},{"snippet":"+infra-dev On Tue, May 24, 2016 at 3:30 PM, Walter <wkorman@chromium.org> wrote: If you are not","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 16:25:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Blink auto-rebaseline bot status and tryjob-based alternate approach"},{"name":"To","value":"Walter <wkorman@chromium.org>, \"infra-dev@chromium.org\" <infra-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Quinten Yearsley <qyearsley@chromium.org>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Brief update -- wangxianzhu@ has recently made some notable bug fixes that should address root cause","payload":{"headers":[{"name":"Date","value":"Thu, 30 Jun 2016 13:20:35 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"qyearsley@chromium.org, chromium-dev@chromium.org, infra-dev <infra-dev@chromium.org>, Xianzhu Wang <wangxianzhu@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: PSA: Blink auto-rebaseline bot status and tryjob-based alternate approach"}]}}]},{"messages":[{"snippet":"Hi All, I have a clean build with no local code changes and most layout test are failing. Looking at","payload":{"headers":[{"name":"From","value":"\"'Justin Novosad' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 17:23:13 -0400"},{"name":"Subject","value":"[blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for posting! I saw this too starting a couple hours ago and was very confused by it - was","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 17:32:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Justin Novosad <junov@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have been experiencing this since last Friday. So I am pretty sure by now that it is an issue that","payload":{"headers":[{"name":"Date","value":"Tue, 24 May 2016 17:47:48 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"From","value":"\"'Justin Novosad' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have this problem. But only on linux; mac appears to be fine. On Tue, May 24, 2016 at 2:47 PM,","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 08:28:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Justin Novosad <junov@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I am experiencing this on linux too. My backup plan is to abuse the try bots. On Wed, May 25, 2016 at","payload":{"headers":[{"name":"From","value":"\"'Justin Novosad' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 11:40:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I've realized this happens whenever giving content_shell a file to run that's inside a","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 15:05:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Justin Novosad <junov@google.com>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We found paths starting with "/media/" caused the problem. I'm making a fix. On Thu,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 13:10:49 +0900"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Justin Novosad <junov@google.com>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks so much for fixing this. run-webkit-tests works again for me. (And for the record, I had the","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 14:22:36 -0700"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Justin Novosad <junov@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, same here. Thanks! On Thu, May 26, 2016 at 5:22 PM, Raymond Toy <rtoy@google.com> wrote:","payload":{"headers":[{"name":"From","value":"\"'Justin Novosad' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 17:48:16 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have a lot fewer tests failing than I used to, but I'm still seeing certain directories (eg,","payload":{"headers":[{"name":"From","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 15:42:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Justin Novosad <junov@google.com>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, \"TAMURA, Kent\" <tkent@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, we still have the issue for inspector tests, which access local files outside of LayoutTests/.","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 08:16:58 +0900"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"Justin Novosad <junov@google.com>, Raymond Toy <rtoy@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"any update on this? On Fri, May 27, 2016 at 1:17 AM TAMURA, Kent <tkent@chromium.org> wrote:","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 08:27:46 +0000"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Nate Chapin <japhet@chromium.org>"},{"name":"Cc","value":"Justin Novosad <junov@google.com>, Raymond Toy <rtoy@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yep, it's all fixed. See the bug: https://bugs.chromium.org/p/chromium/issues/detail?id=614778 On","payload":{"headers":[{"name":"Date","value":"Wed, 29 Jun 2016 07:08:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Raymond Toy <rtoy@google.com>, Nate Chapin <japhet@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@google.com>"}]}},{"snippet":"hum, so at least inspector/ still times out for me (while running content_shell --run-layout-tests","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 11:12:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Raymond Toy <rtoy@google.com>, Nate Chapin <japhet@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@google.com>"}]}},{"snippet":"That's probably something unrelated (are you sure it's a problem only with /media?). I've","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 29 Jun 2016 11:34:09 -0400"},{"name":"Subject","value":"Re: [blink-dev] TestRunner interface broken, causing layout test failures in local build."},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Raymond Toy <rtoy@google.com>, Nate Chapin <japhet@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@google.com>"}]}}]},{"messages":[{"snippet":"WARNING! rs=AGLTcCOY16l643mYnEFY8uRifN1-BjIIOw:1169 Using this console may allow attackers to","payload":{"headers":[{"name":"Date","value":"Tue, 24 May 2016 11:17:47 -0700 (PDT)"},{"name":"From","value":"kostaj831@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] WARNING! rs=AGLTcCOY16l643mYnEFY8uRifN1-BjIIOw:1169 Using this console may allow attackers to impersonate you and steal your information using an attack called Self-XSS. Do not enter or paste code that you do not understand. rs=AGyH-FuKe6Jil4tmbUsXyx"}]}},{"snippet":"Yep, so? ☆PhistucK On Tue, May 24, 2016 at 9:17 PM, <kostaj831@gmail.com> wrote: WARNING! rs=","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 24 May 2016 21:18:26 +0300"},{"name":"Subject","value":"Re: [blink-dev] WARNING! rs=AGLTcCOY16l643mYnEFY8uRifN1-BjIIOw:1169 Using this console may allow attackers to impersonate you and steal your information using an attack called Self-XSS. Do not enter or paste code that you do not understand. rs=AGyH-FuKe6Jil4tmbUsXyx"},{"name":"To","value":"kostaj831@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev@chromium A group of us works part-time on improving the infrastructure instead of","payload":{"headers":[{"name":"From","value":"\"'Ojan Vafai' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 23:57:46 +0000"},{"name":"Subject","value":"[blink-dev] blink infra monthly meeting notes"},{"name":"To","value":"\"blink-infra@chromium.org\" <blink-infra@chromium.org>"}]}}]},{"messages":[{"snippet":"Two weeks from today, on Monday June 6th, the source-of-truth for depot_tools will move from","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 22:22:11 +0000"},{"name":"Subject","value":"[blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is super awesome. It's really important for us to kill subversion repositories to help us","payload":{"headers":[{"name":"From","value":"Marc-Antoine Ruel <maruel@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 15:32:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Aaron Gable <agable@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Reminder: this is happening this Monday, June 6th, at 1:30pm Pacific. On Tue, May 24, 2016 at 12:32","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Thu, 02 Jun 2016 22:17:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Marc-Antoine Ruel <maruel@chromium.org>, Aaron Gable <agable@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This has been slightly delayed (just for developer comfort) and is happening at 4pm today. Thanks,","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 20:28:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Aaron Gable <agable@chromium.org>, Marc-Antoine Ruel <maruel@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is starting now. You can follow updates on the bug, and I will post to this thread again when","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 23:04:28 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Aaron Gable <agable@chromium.org>, Marc-Antoine Ruel <maruel@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is now complete! If you see any problems related to depot_tools, either in your own checkout or","payload":{"headers":[{"name":"From","value":"Aaron Gable <agable@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 23:32:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Aaron Gable <agable@chromium.org>, Marc-Antoine Ruel <maruel@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hooray! Thanks Aaron and Ben and everyone else who was involved. On Tue, Jun 7, 2016 at 1:33 AM Aaron","payload":{"headers":[{"name":"From","value":"Sergiy Byelozyorov <sergiyb@chromium.org>"},{"name":"Date","value":"Tue, 07 Jun 2016 09:49:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Migrating depot_tools to Git on 2016/06/06"},{"name":"To","value":"Aaron Gable <agable@chromium.org>, Marc-Antoine Ruel <maruel@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 14:38:45 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails tkent@chromium.org Spec https://html.spec.whatwg.org/multipage/forms.html#form-","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 00:34:57 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Drop LABEL element from form-associated elements"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Mon, May 23, 2016 at 8:35 AM TAMURA, Kent <tkent@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 15:07:45 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Drop LABEL element from form-associated elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Mon, May 23, 2016 at 8:34 AM, TAMURA, Kent <tkent@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 08:09:40 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Drop LABEL element from form-associated elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, May 23, 2016 at 11:34 AM, TAMURA, Kent <tkent@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 20:58:13 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Drop LABEL element from form-associated elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails tkent@chromium.org Spec https://html.spec.whatwg.org/multipage/forms.html#the-pattern-","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 00:11:19 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"From: tkent@google.com [mailto:tkent@google.com] On Behalf Of TAMURA, Kent > Compatibility risk","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"Date","value":"Mon, 23 May 2016 15:15:59 +0000"}]}},{"snippet":"On Mon, May 23, 2016 at 6:15 PM, Domenic Denicola <d@domenic.me> wrote: or if the user had","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 23 May 2016 19:02:32 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Mon, May 23, 2016 at 12:02 PM, PhistucK <phistuck@gmail.com> wrote: On Mon, May 23,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 23:12:48 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Domenic Denicola <d@domenic.me>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Wed, May 25, 2016 at 8:13 PM Rick Byers <rbyers@chromium.org> wrote: LGTM1 On Mon, May","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 17:16:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Domenic Denicola <d@domenic.me>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Thu, May 26, 2016 at 7:16 PM Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 01 Jun 2016 13:21:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Apply Unicode flag to `pattern' attribute of INPUT element"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Domenic Denicola <d@domenic.me>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"This intent is based on the intent submitted by Krzysztof Olczyk (https://groups.google.com/a/","payload":{"headers":[{"name":"From","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"Date","value":"Mon, 23 May 2016 12:47:15 +0000"}]}},{"snippet":"Hi Anton, Firstly a few questions: 1) You mention that WebKit based TV browsers support these","payload":{"headers":[{"name":"From","value":"Ian Kilpatrick <ikilpatrick@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 09:44:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Hi Ian, To answer your questions: 1) Yes, it is not implemented in WebKit trunk however originally a","payload":{"headers":[{"name":"From","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"To","value":"\"'Ian Kilpatrick'\" <ikilpatrick@chromium.org>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"Date","value":"Tue, 24 May 2016 11:40:19 +0100"}]}},{"snippet":"Hi Anton, Thanks for taking the time to reply, it always helps having more insight. Other vendors -","payload":{"headers":[{"name":"From","value":"\"'Ian Kilpatrick' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 11:58:36 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The use case here (enabling customization of spatial navigation behavior) does seem valuable to me,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 19:55:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"To","value":"Ian Kilpatrick <ikilpatrick@google.com>"},{"name":"Cc","value":"Anton Obzhirov <a.obzhirov@samsung.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Anton, This is a question in general about the spec itself, not for your intent to implement, but","payload":{"headers":[{"name":"From","value":"Takayoshi Kochi <kochi@chromium.org>"},{"name":"Date","value":"Thu, 26 May 2016 11:31:54 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Hi Rick, Thanks for the search – but I guess your search didn't include TV broadcast applications","payload":{"headers":[{"name":"From","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"To","value":"\"'Rick Byers'\" <rbyers@chromium.org>"},{"name":"Cc","value":"\"'blink-dev'\" <blink-dev@chromium.org>, Simon Waller <simon.waller@samsung.com>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"Date","value":"Fri, 27 May 2016 14:53:39 +0100"}]}},{"snippet":"A few of us chatted about this at BlinkOn. If I recall the general conclusions were: 1) The TV","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 14:29:56 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS3 nav-up/down/left/right properties"},{"name":"To","value":"Anton Obzhirov <a.obzhirov@samsung.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Simon Waller <simon.waller@samsung.com>, ikilpatrick@chromium.org, Elliott Sprehn <esprehn@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-05-23 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 08:34:48 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-05-23"},{"name":"To","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Something is a bit off... Uncategorized grew by almost 400. LayoutTests was indeed removed from the","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 23 May 2016 08:52:28 +0300"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-23"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}},{"snippet":"My guess is that about 300 Blink>LayoutTests issues also had another component label on them. On","payload":{"headers":[{"name":"From","value":"Suzy Howlett <suzyh@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 07:19:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-23"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev+status@chromium.org"}]}},{"snippet":"Yes, that makes sense. ☆PhistucK On Mon, May 23, 2016 at 10:19 AM, Suzy Howlett <suzyh@chromium.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 23 May 2016 10:53:00 +0300"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-23"},{"name":"To","value":"Suzy Howlett <suzyh@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev+status@chromium.org"}]}},{"snippet":"That is correct. Only the issues that didn't have another component were merged into component:","payload":{"headers":[{"name":"From","value":"\"'Shruthi Sreekanta' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 25 May 2016 10:39:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Blink bug status as of 2016-05-23"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Suzy Howlett <suzyh@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Now that we've shipped the minimal/urgent thing (blocking user gestures from cross origin iframes","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 16:20:32 -0400"},{"name":"Subject","value":"[blink-dev] Intent to deprecate: User gestures during any touch scroll (intervention)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails ajuma@chromium.org Summary Ignore clicks on cross-origin iframes when the location of","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 19:28:17 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Intervention -- Ignore clicks on recently moved cross-origin iframes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"tl;dr IntersectionObserver will now support the "thresholds" attribute, as dictated by the","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 18:25:51 +0000"},{"name":"Subject","value":"[blink-dev] PSA: Adding IntersectionObserver.thresholds attribute"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Cool. I think this PSA suffices, since the Intent to Ship would have been approved for the whole","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 18:29:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding IntersectionObserver.thresholds attribute"},{"name":"To","value":"Stefan Zager <szager@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+1. Thanks for the PSA though! On Thu, May 19, 2016 at 2:29 PM, Chris Harrelson <chrishtr@chromium","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 15:41:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Adding IntersectionObserver.thresholds attribute"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, May 19: Recent updates: We're continuing","payload":{"headers":[{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 11:23:04 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, May 19, 2016"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I am not really sure about how to test it, but I guess you know more about it. Browsers support the","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 19 May 2016 21:03:09 +0300"},{"name":"Subject","value":"[blink-dev] Passive Error Event"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, v8-users <v8-users@googlegroups.com>"}]}},{"snippet":"Throwing errors typically are not and should not be on the critical path of any Javascript program.","payload":{"headers":[{"name":"Date","value":"Tue, 24 May 2016 03:46:03 -0700 (PDT)"},{"name":"From","value":"Yang Guo <yangguo@chromium.org>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Passive Error Event"}]}},{"snippet":"Not throwing errors, but whether adding an event listener to the "error" influences","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 24 May 2016 13:54:22 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"To","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That doesnt sound like something in V8. The onerror listener is implemented by blink. Yang On Tue,","payload":{"headers":[{"name":"From","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 15:19:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Of course listening to the event is implemented in Blink, but it uses V8 APIs in order to break at","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 27 May 2016 18:30:43 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"To","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Still not entirely sure what particular scenario you have in mind. I don't think there is a","payload":{"headers":[{"name":"From","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 15:39:38 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It's an interesting idea but I wouldn't expect a big win. The primary benefit of passive","payload":{"headers":[{"name":"Date","value":"Fri, 27 May 2016 12:59:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"[resending from correct address to be able to post to v8-users] It's an interesting idea but I","payload":{"headers":[{"name":"Date","value":"Fri, 27 May 2016 13:09:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Passive Error Event"},{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"To","value":"Yang Guo <yangguo@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mfoltz@chromium.org mlamouri@chromium.org Spec https://w3c.github.io/presentation-api/","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"Date","value":"Thu, 19 May 2016 12:03:36 +0100"}]}},{"snippet":"LGTM1 On Thu, May 19, 2016 at 4:03 AM Mounir Lamouri <mounir@lamouri.fr> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 15:21:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev@chromium.org"}]}},{"snippet":"LGTM2. We should probably get some guidance written up about when to rely on permission delegation vs","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 12:20:47 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, Mike West <mkwst@chromium.org>, Raymes Khoury <raymes@chromium.org>"}]}},{"snippet":"On Thu, 19 May 2016, at 17:20, Rick Byers wrote: > LGTM2. > > We should probably get some","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Mike West <mkwst@chromium.org>, Raymes Khoury <raymes@chromium.org>, felt@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"Date","value":"Thu, 19 May 2016 17:23:49 +0100"}]}},{"snippet":"I personally would prefer to have everything be done with permission delegation, but I also don't","payload":{"headers":[{"name":"From","value":"Adrienne Porter Felt <felt@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 09:28:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Mike West <mkwst@chromium.org>, Raymes Khoury <raymes@chromium.org>"}]}},{"snippet":"From: Rick Byers [mailto:rbyers@chromium.org] > We should probably get some guidance written up","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"CC","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>, Mike West <mkwst@chromium.org>, Raymes Khoury <raymes@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"Date","value":"Thu, 19 May 2016 17:50:17 +0000"}]}},{"snippet":"I agree with Adrienne; longer term, some combination of delegation and feature policy (+Ilya) are","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 11:02:06 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Adrienne Porter Felt <felt@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Raymes Khoury <raymes@chromium.org>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"On Thu, 19 May 2016, at 19:02, Mike West wrote: > I agree with Adrienne; longer term, some","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Mike West <mkwst@chromium.org>, Adrienne Porter Felt <felt@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Raymes Khoury <raymes@chromium.org>, Ilya Grigorik <igrigorik@google.com>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"Date","value":"Fri, 20 May 2016 13:14:31 +0100"}]}},{"snippet":"On Fri, 20 May 2016, at 13:14, Mounir Lamouri wrote: > On Thu, 19 May 2016, at 19:02, Mike West","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Mike West <mkwst@chromium.org>, Adrienne Porter Felt <felt@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Raymes Khoury <raymes@chromium.org>, Ilya Grigorik <igrigorik@google.com>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"Date","value":"Fri, 20 May 2016 13:14:52 +0100"}]}},{"snippet":"From reading the intent, it's not clear to me if the flag is an opt-in (ie Frames cannot go to","payload":{"headers":[{"name":"Date","value":"Mon, 23 May 2016 07:58:18 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"From","value":"Yoav Weiss <yoav@yoav.ws>"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, Adrienne Porter Felt <felt@chromium.org>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Raymes Khoury <raymes@chromium.org>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"Same as any other sandboxed feature - opt out (by your definition). (Though I would argue that it is","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 23 May 2016 10:56:19 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Yoav Weiss <yoav@yoav.ws>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Mike West <mkwst@chromium.org>, Adrienne Porter Felt <felt@chromium.org>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Raymes Khoury <raymes@chromium.org>, Ilya Grigorik <igrigorik@google.com>"}]}},{"snippet":"LGTM3. On Thu, May 19, 2016 at 4:03 AM, Mounir Lamouri <mounir@lamouri.fr> wrote: Contact","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 14:43:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: 'allow-presentation' sandboxing flag"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails atotic@chromium.org Spec Draft spec: https://wicg.github.io/ResizeObserver/ Summary An","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 15:39:13 -0700 (PDT)"},{"name":"From","value":"\"'Aleks Totic' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement: ResizeObserver"}]}},{"snippet":"On Wed, May 18, 2016 at 3:39 PM 'Aleks Totic' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Adam Barth <abarth@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 23:15:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: ResizeObserver"},{"name":"To","value":"Aleks Totic <atotic@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For interest from web developers, this is something that Facebook would be interested in. One general","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 16:47:17 -0700 (PDT)"},{"name":"From","value":"ben.maurer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: ResizeObserver"}]}},{"snippet":"Careless use of the API can certainly cause bad user experience. Proper use will enable better user","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 17:03:21 -0700 (PDT)"},{"name":"From","value":"\"'Aleks Totic' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"atotic@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: ResizeObserver"}]}},{"snippet":"On Wed, May 18, 2016 at 8:03 PM, 'Aleks Totic' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 20:16:40 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: ResizeObserver"},{"name":"To","value":"Aleks Totic <atotic@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, ikilpatrick@chromium.org"}]}},{"snippet":"On Wed, May 18, 2016 at 5:03 PM 'Aleks Totic' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Adam Barth <abarth@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 00:32:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: ResizeObserver"},{"name":"To","value":"Aleks Totic <atotic@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 18, 2016 at 5:16 PM, Rick Byers <rbyers@chromium.org> wrote: On Wed, May 18, 2016","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 17:39:46 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: ResizeObserver"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Aleks Totic <atotic@google.com>, blink-dev <blink-dev@chromium.org>, Ian Kilpatrick <ikilpatrick@chromium.org>"}]}},{"snippet":"We are building visualisation components using SVG and D3, and ResizeObserver would be very useful","payload":{"headers":[{"name":"Date","value":"Mon, 23 May 2016 04:08:50 -0700 (PDT)"},{"name":"From","value":"Jon Rimmer <jon.rimmer@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: ResizeObserver"}]}}]},{"messages":[{"snippet":"Contact emails raymes@chromium.org palmer@chromium.org Spec Draft spec: https://noncombatant.github.","payload":{"headers":[{"name":"From","value":"Raymes Khoury <raymes@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 21:30:25 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Permission Delegation for Iframes"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Chris Palmer <palmer@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"This is exciting, I'm glad to hear you're experimenting with an implementation! One thing to","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 20:12:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Permission Delegation for Iframes"},{"name":"To","value":"Raymes Khoury <raymes@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chris Palmer <palmer@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"FWIW, we (most importantly, Chris and Raymes) met with Apple, Firefox, and Microsoft earlier this","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 17:20:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Permission Delegation for Iframes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Raymes Khoury <raymes@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chris Palmer <palmer@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"When discussing the same problem in the WebRTC WG, the WG landed on the same conclusion (that iframes","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 23:37:17 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Permission Delegation for Iframes"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Raymes Khoury <raymes@chromium.org>, blink-dev <blink-dev@chromium.org>, Chris Palmer <palmer@chromium.org>, Ben Wells <benwells@chromium.org>"}]}},{"snippet":"On Thu, May 19, 2016 at 2:37 PM, Harald Alvestrand <hta@google.com> wrote: When discussing the","payload":{"headers":[{"name":"From","value":"Chris Palmer <palmer@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 15:43:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Permission Delegation for Iframes"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Joel Weinberger <jww@chromium.org>, Rick Byers <rbyers@chromium.org>, Raymes Khoury <raymes@chromium.org>, blink-dev <blink-dev@chromium.org>, Ben Wells <benwells@chromium.org>"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 11:52:51 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-05-17)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, my two intents to implement and ship for font-variant-caps (https://www.chromestatus.com/feature/","payload":{"headers":[{"name":"From","value":"\"Dominik Röttsches\" <drott@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 17:00:34 +0300"},{"name":"Subject","value":"[blink-dev] PSA: Font-variant-caps and font-variant-numeric implemented and enabled in M52"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi blink devs, Yes, it's me again. This time I would like to announce the retirement of OwnPtr::","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 16:39:56 +0900"},{"name":"Subject","value":"[blink-dev] PSA: OwnPtr::release() will be removed soon!"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails yhirano@chromium.org, tyoshino@chromium.org, domenic@chromium.org, kenjibaheux@","payload":{"headers":[{"name":"From","value":"Yutaka Hirano <yhirano@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 12:57:21 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Takeshi Yoshino <tyoshino@chromium.org>, domenic@chromium.org, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"This all sounds great (definitely an important use case). Just one concern: On Tue, May 17, 2016 at","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 17:25:12 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"To","value":"Yutaka Hirano <yhirano@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takeshi Yoshino <tyoshino@chromium.org>, domenic@chromium.org, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"From: Rick Byers [mailto:rbyers@chromium.org] > "You've been warned" is","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Yutaka Hirano <yhirano@chromium.org>"},{"name":"CC","value":"blink-dev <blink-dev@chromium.org>, Takeshi Yoshino <tyoshino@chromium.org>, \"domenic@chromium.org\" <domenic@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"Date","value":"Wed, 18 May 2016 21:39:28 +0000"}]}},{"snippet":"On Wed, May 18, 2016 at 5:39 PM, Domenic Denicola <d@domenic.me> wrote: From: Rick Byers [","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 19:00:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Yutaka Hirano <yhirano@chromium.org>, blink-dev <blink-dev@chromium.org>, Takeshi Yoshino <tyoshino@chromium.org>, \"domenic@chromium.org\" <domenic@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"LGTM2 On Wed, May 18, 2016 at 4:00 PM Rick Byers <rbyers@chromium.org> wrote: On Wed, May 18,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 23:46:49 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Yutaka Hirano <yhirano@chromium.org>, blink-dev <blink-dev@chromium.org>, Takeshi Yoshino <tyoshino@chromium.org>, \"domenic@chromium.org\" <domenic@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}},{"snippet":"LGTM3. On Thu, May 19, 2016 at 8:46 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 20 May 2016 14:33:06 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Response construction with ReadableStream"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Domenic Denicola <d@domenic.me>, Yutaka Hirano <yhirano@chromium.org>, blink-dev <blink-dev@chromium.org>, Takeshi Yoshino <tyoshino@chromium.org>, \"domenic@chromium.org\" <domenic@chromium.org>, Kenji Baheux <kenjibaheux@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 1080 (↓.2%) Number of untriaged","payload":{"headers":[{"name":"Date","value":"Tue, 17 May 2016 11:17:46 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. 5/9/2016 Fredrik","payload":{"headers":[{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 10:18:20 -0700"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"blink-dev+announce@chromium.org"}]}}]},{"messages":[{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-05-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 07:44:55 -0700"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of May 9"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-05","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 07:44:09 -0700"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of May 9"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Naina Raisinghani <nainar@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 07:19:34 +0000"},{"name":"Subject","value":"[blink-dev] Last Week in Style"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 14:07:12 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - May 16, 2016"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails johnme@chromium,org, sh919.park@samsung.com (did the work) peter@chromium.org (flag","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 14:41:10 +0100"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Notification `actions` and `vibrate` attributes"},{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"John Mellor <johnme@chromium.org>, Sanghyun Park <sh919.park@samsung.com>"}]}},{"snippet":"LGTM1 On Mon, May 16, 2016 at 6:41 AM Peter Beverloo <peter@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 16:51:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Notification `actions` and `vibrate` attributes"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"John Mellor <johnme@chromium.org>, Sanghyun Park <sh919.park@samsung.com>"}]}},{"snippet":"LGTM2 On Wed, May 18, 2016 at 12:51 PM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 On","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 14:56:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Notification `actions` and `vibrate` attributes"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, John Mellor <johnme@chromium.org>, Sanghyun Park <sh919.park@samsung.com>"}]}},{"snippet":"LGTM3. On Mon, May 16, 2016 at 6:41 AM, Peter Beverloo <peter@chromium.org> wrote: Contact","payload":{"headers":[{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Date","value":"Mon, 23 May 2016 14:42:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Notification `actions` and `vibrate` attributes"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, John Mellor <johnme@chromium.org>, Sanghyun Park <sh919.park@samsung.com>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 18:51:21 +0900"},{"name":"Subject","value":"[blink-dev] Loading team status updates (Apr 23 - May 13)"},{"name":"To","value":"Chromium Loading Performance <loading-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry, one more cool update I missed to include... (well there could be more, but anyways) pmeenan@","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 12:22:14 +0900"},{"name":"Subject","value":"[blink-dev] Re: Loading team status updates (Apr 23 - May 13)"},{"name":"To","value":"Chromium Loading Performance <loading-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Great progress on V8 binding projects. Oilpan: (keishi) Landing the final (and the hardest) bit of","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 14:15:50 +0900"},{"name":"Subject","value":"[blink-dev] Platform Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-05-16 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 09:53:06 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-05-16"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Hello, I hope you are well. I represent an experienced Video Production & Animation company","payload":{"headers":[{"name":"Date","value":"Sun, 15 May 2016 21:36:30 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Nickey | CECV DIGITAL ADTECH PTY LTD\" <nickeyjohannsen246@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"There's a feature in the layout tests results page to allow one to re-run layout from the "","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sun, 15 May 2016 10:06:41 -0700"},{"name":"Subject","value":"[blink-dev] Does anyone use `webkit-patch layout-test-server` to re-run layout tests?"},{"name":"To","value":"blink-infra@chromium.org"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Whoops, didn't send this out on Tuesday... Storage team (SFO/MTV) weekly updates. The Storage","payload":{"headers":[{"name":"Date","value":"Fri, 13 May 2016 13:56:33 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-05-10)"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Would anybody object to renaming "LayoutTests/imported/web-platform-tests" to","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 13:03:13 -0700"},{"name":"Subject","value":"[blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"It would still be in LayoutTests/imported for now, right? On Fri, May 13, 2016 at 1:03 PM, '","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 13:20:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Right -- moving it somewhere else like chromium/src/blink/wpt (as in http://crbug.com/611768) will","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 13:30:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, moving it outside of LayoutTests/ would require more changes (but it should be straightforward;","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 14:09:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The renaming sounds good! Will you move checked-in tests in LayoutTests/imported/web-platform-tests,","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 08:32:02 +0900"},{"name":"Subject","value":"Re: [blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"Quinten Yearsley <qyearsley@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Good point, all paths in those files must be updated as well. Now uploading a CL which moves the web-","payload":{"headers":[{"name":"From","value":"\"'Quinten Yearsley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 11:49:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] Moving LayoutTests/imported/web-platform-tests -> LayoutTests/imported/wpt"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I know we allow serving from localhost() (considering it "secure"). But ... today I went to","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 16:29:18 +0200"},{"name":"Subject","value":"[blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"+jww I think developers expect the console to behave the same as JS executing within the context of","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 11:52:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks, I didn't think of that! On Fri, May 13, 2016 at 8:52 PM, Rick Byers <rbyers@chromium.","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sat, 14 May 2016 00:14:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Joel Weinberger <jww@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, as Rick says. I consider it a feature that it acts the same, so that way a developer will see","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Sat, 14 May 2016 14:58:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Could you clarify if you were serving from the localhost when you saw the insecure message? As you","payload":{"headers":[{"name":"Date","value":"Sat, 14 May 2016 08:06:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Note that recently, the console was changed to always signal a user gesture when executing the","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 14 May 2016 20:17:45 +0300"},{"name":"Subject","value":"Re: [blink-dev] Secure origins: Why is the developer console insecure?"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails mikhail.pozdnyakov@intel.com Spec http://webaudio.github.io/web-audio-api/#","payload":{"headers":[{"name":"Date","value":"Fri, 13 May 2016 07:03:39 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"}]}},{"snippet":"LGTM1 On Fri, May 13, 2016 at 4:03 PM Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> wrote:","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 15:05:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Just want to note that this depends on the audio latency hint intent (which hasn't yet been","payload":{"headers":[{"name":"Date","value":"Fri, 13 May 2016 11:38:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So should we revisit the debate in that intent before proceeding with this one? On Fri, May 13, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 13 May 2016 17:25:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I've also pointed it out the issue tracker and the PR. We have confusing variables in two","payload":{"headers":[{"name":"From","value":"Hongchan Choi <hongchan@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 16:28:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, May 13, 2016 at 5:25 PM, Rick Byers <rbyers@chromium.org> wrote: So should we revisit","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 13:00:05 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We discussed this with Raymond on IRC yesterday and came to conclusion that the intended","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 07:26:25 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"rbyers@chromium.org, mikhail.pozdnyakov@intel.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"}]}},{"snippet":"On Wed, May 18, 2016 at 7:26 AM, Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> wrote: We","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 08:46:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"On Wednesday, May 18, 2016 at 6:46:19 PM UTC+3, Raymond Toy wrote: On Wed, May 18, 2016 at 7:26 AM,","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 09:24:09 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mikhail.pozdnyakov@intel.com, rbyers@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"}]}},{"snippet":"On Wed, May 18, 2016 at 9:24 AM, Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> wrote: On","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 10:17:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"LGTM2 On Wed, May 18, 2016 at 1:17 PM, Raymond Toy <rtoy@google.com> wrote: On Wed, May 18,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 15:27:47 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 16, 2016 at 9:28 AM, Hongchan Choi <hongchan@chromium.org> wrote: I've also","payload":{"headers":[{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 13:03:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Hongchan Choi <hongchan@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry, I thought Mikhail was saying you guys had reached a consensus on this. Is there a GitHub issue","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 17:08:45 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Hongchan Choi <hongchan@chromium.org>, Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"WG reached the conclusion: https://github.com/WebAudio/web-audio-api/issues/817 Rick, the change is","payload":{"headers":[{"name":"From","value":"Hongchan Choi <hongchan@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 20:18:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The issue https://github.com/WebAudio/web-audio-api/issues/817 is closed now and the specification is","payload":{"headers":[{"name":"Date","value":"Thu, 26 May 2016 11:43:15 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"rbyers@chromium.org, rtoy@google.com, mikhail.pozdnyakov@intel.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"}]}},{"snippet":"I took a look and filed two new issues: https://github.com/WebAudio/web-audio-api/issues/829 https://","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Fri, 27 May 2016 13:58:22 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"},{"name":"To","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, rbyers@chromium.org, rtoy@google.com"}]}},{"snippet":"Yeah, I could start implementing it behind a flag, and ship after all the spec issues are solved (","payload":{"headers":[{"name":"Date","value":"Mon, 30 May 2016 11:59:01 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mikhail.pozdnyakov@intel.com, rbyers@chromium.org, rtoy@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: 'AudioDestinationNode.outputTimeStamp' and 'AudioDestinationNode.outputLatency' attributes"}]}}]},{"messages":[{"snippet":"Join us next week. View this email in your browser ICMC is Growing Again This Year... May 18-20,","payload":{"headers":[{"name":"Date","value":"Thu, 12 May 2016 09:48:51 -0400 (EDT)"},{"name":"From","value":"\"Bill Rutledge, ICMC\" <bill.rutledge@icmconference.org>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Next Week: 300+ Colleagues, 72 Presentations at the Most Comprehensive Crypto Event of the Year"}]}}]},{"messages":[{"snippet":"bcc: blink-dev+status, chromium-dev+status Context: A User Agent Intervention is when a Browser (","payload":{"headers":[{"name":"From","value":"Kenji Baheux <kenjibaheux@chromium.org>"},{"name":"Date","value":"Thu, 12 May 2016 06:08:20 +0000"},{"name":"Subject","value":"[blink-dev] Chrome Interventions Quarterly newsletter: 2016 Q1"},{"name":"To","value":"intervention-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Hi. I'm assigned sheriff on July 20th but I and another sheriff Hayato live in APAC time zone. It","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Thu, 12 May 2016 05:40:06 +0000"},{"name":"Subject","value":"[blink-dev] Overlapped sheriff time"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Cc","value":"hayato@chromium.org"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, May 11: Recent updates: We're continuing","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 15:58:45 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, May 11, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng email littledan@chromium.org Summary Remove most of V8's additional methods and","payload":{"headers":[{"name":"From","value":"Daniel Ehrenberg <littledan@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 10:55:16 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: Custom Intl methods and properties"},{"name":"To","value":"v8-users@googlegroups.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Michael Schidlowsky <mschidlowsky@google.com>, \"Nebojša Ćirić\" <cira@google.com>, Jungshik Shin <jungshik@google.com>"}]}},{"snippet":"lgtm1 Daniel Ehrenberg <littledan@chromium.org> schrieb am Mi., 11. Mai 2016, 19:55: Primary","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 17:58:29 +0000"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Deprecate and Remove: Custom Intl methods and properties"},{"name":"To","value":"v8-users@googlegroups.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Michael Schidlowsky <mschidlowsky@google.com>, \"Nebojša Ćirić\" <cira@google.com>, Jungshik Shin <jungshik@google.com>"}]}},{"snippet":"lgtm2 On Wed, May 11, 2016 at 10:58 AM, Jochen Eisinger <jochen@chromium.org> wrote: lgtm1","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 14:38:05 -0700"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Deprecate and Remove: Custom Intl methods and properties"},{"name":"From","value":"Adam Klein <adamk@chromium.org>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Michael Schidlowsky <mschidlowsky@google.com>, \"Nebojša Ćirić\" <cira@google.com>, Jungshik Shin <jungshik@google.com>"}]}},{"snippet":"lgtm3 сре, 11. мај 2016. у 14.38 Adam Klein <adamk@chromium.org> је написао/ла: lgtm2 On Wed,","payload":{"headers":[{"name":"From","value":"\"'Nebojša Ćirić' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 21:40:07 +0000"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Deprecate and Remove: Custom Intl methods and properties"},{"name":"To","value":"Adam Klein <adamk@chromium.org>, v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Michael Schidlowsky <mschidlowsky@google.com>, Jungshik Shin <jungshik@google.com>"}]}}]},{"messages":[{"snippet":"Contact emails dtapuska@chromium.org Spec https://www.w3.org/TR/uievents/#trusted-events Summary","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 17:18:45 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 2:18 PM, Dave Tapuska <dtapuska@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 15:03:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>"}]}},{"snippet":"I can certainly add a use counter. I'm not certain why we can't do this for all events. Am I","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 20:21:36 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>"}]}},{"snippet":"On Tue, May 10, 2016 at 5:21 PM, Dave Tapuska <dtapuska@google.com> wrote: I can certainly add","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 17:32:43 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>"}]}},{"snippet":"Probably adding code like "if this is not a click event and not a trusted event, UseCounter::","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 09:54:34 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@google.com>, blink-dev <blink-dev@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>"}]}},{"snippet":"Looking at the code I do see something problematic with https://code.google.com/p/chromium/codesearch","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 20:58:09 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>"}]}},{"snippet":"I think this breaks the undo support in the auto complete widget used by Rietveld. https://github.com","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 18:49:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"David Tapuska <dtapuska@google.com>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Is there a reason why you chose to dispatch a text input event vs calling execCommand directly?","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 12:06:46 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Perhaps undo should accommodate script-entered changes as well? There used to be an UndoManager (or","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 11 May 2016 19:11:08 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"David Tapuska <dtapuska@google.com>, Kent TAMURA <tkent@chromium.org>, Bogdan Brinza <bbrinza@microsoft.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Another case where you must dispatch events because there is no API is to invoke a download with the","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 18:46:15 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"Ashley Gullen <ashley@scirra.com>"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Why do you need to dispatch an event? I think element.click() should work. Besides, this intent will","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 11 May 2016 20:51:44 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Ashley Gullen <ashley@scirra.com>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Oh, I didn't know click() worked. Never mind then! On 11 May 2016 at 18:51, PhistucK <phistuck","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 18:53:59 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"Ashley Gullen <ashley@scirra.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"To me this looks more like an intent to deprecate & remove than an intent to ship? On Wed, May 11","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 20:39:05 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Can we treat it as an intent to deprecate based on the discussion? I will send out a separate intent","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 16:44:39 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"sgtm! On Wed, May 11, 2016 at 10:44 PM Dave Tapuska <dtapuska@google.com> wrote: Can we treat","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 20:47:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Can I have a consensus to move forward on this action or not? It has been changed to an Intent to","payload":{"headers":[{"name":"Date","value":"Tue, 17 May 2016 11:07:42 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Deprecation sounds good to me and doesn't require API owner approval. Let's discuss removal","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 11:37:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is there an update on shipping this? Could this possibly be just shipped without deprecation cycle","payload":{"headers":[{"name":"From","value":"\"'Malte Ubl' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 06:58:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How timely is your email.... I landed the change last night :-) https://chromium.googlesource.com/","payload":{"headers":[{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 23 Jun 2016 10:01:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Malte Ubl <malteubl@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Fwiw removing this did break the autocomplete in Chrome's codereview tool as I said: https://bugs.chromium.org/p/chromium/issues/detail?id=632932 and execCommand doesn't appear to work on input","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 22:41:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Wait, but Firefox does not fire the default action for non-click events, if I remember correctly. I guess the underlying issue (in your case) here is that Chrome does not add value changes triggered by","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 3 Aug 2016 18:48:49 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think this specific default action (adding to the undo stack) should just be whitelisted. Does anyone think that programmatically modifying the undo stack is harmful? And if so, why is it fine for","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 3 Aug 2016 19:03:19 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't think it's acceptable to stop running execCommand against input and textarea. That completely breaks inserting text with the undo stack and was explicitly given as the workaround and a","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 09:18:35 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, yosin@chromium.org, Ojan Vafai <ojan@chromium.org>"}]}},{"snippet":"Yep, I agree that input events (textInput or the standard input) should just trigger undo stack modification. ☆PhistucK On Wed, Aug 3, 2016 at 7:18 PM, Elliott Sprehn <esprehn@chromium.org> wrote","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 3 Aug 2016 19:22:11 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Yoshifumi Inoue <yosin@chromium.org>, Ojan Vafai <ojan@chromium.org>"}]}},{"snippet":"I agree that "execCommand" against input / textarea should be retained. We indeed needs "void open();" and "void close();" for <select> if untrusted mousedown events","payload":{"headers":[{"name":"Date","value":"Sun, 7 Aug 2016 03:13:47 -0700 (PDT)"},{"name":"From","value":"gongdh11@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dtapuska@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Do not perform default action on un-trusted events"}]}},{"snippet":"In terms of the open, close etc. It was discussed that because of the really low usage of executing the default action for untrusted events. If people wanted this they could build their own custom","payload":{"headers":[{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 11 Aug 2016 11:53:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Do not perform default action on un-trusted events"},{"name":"To","value":"gongdh11@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contacts Eng: groby@chromium.org, tommycli@chromium.org PM: laforge@chromium.org Target Q4 2016","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 15:34:26 -0700"},{"name":"Subject","value":"[chromium-dev] Intent to implement: HTML5 by Default"},{"name":"From","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"(Adding blink-dev) Why would YouTube need Flash? Oh, the video manager? Can you work with them in","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 10 May 2016 09:59:31 +0300"},{"name":"Subject","value":"[blink-dev] Re: [chromium-dev] Intent to implement: HTML5 by Default"},{"name":"To","value":"Anthony LaForge <laforge@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"On Tue, 10 May 2016 at 17:00 PhistucK <phistuck@gmail.com> wrote: (Adding blink-dev) Why would","payload":{"headers":[{"name":"From","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 07:04:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: [chromium-dev] Intent to implement: HTML5 by Default"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Anthony LaForge <laforge@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Sorry for not watching the slides - I am simply firewalled here, so I cannot access Google Drive","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 10 May 2016 10:07:51 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: [chromium-dev] Intent to implement: HTML5 by Default"},{"name":"To","value":"Matt Giuca <mgiuca@chromium.org>"},{"name":"Cc","value":"Anthony LaForge <laforge@chromium.org>, blink-dev <blink-dev@chromium.org>, Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"On Monday, May 9, 2016 at 5:35:28 PM UTC-5, Anthony LaForge wrote: Presentation HTML5 by Default","payload":{"headers":[{"name":"Date","value":"Fri, 13 May 2016 20:21:06 -0700 (PDT)"},{"name":"From","value":"B Galliart <bgallia@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"May I kindly ask what is the long term goal for the Chromium team? Will you be satisfied with this","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 00:54:02 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"While you may not get an official answer, it is obvious (to me, anyway) that the plan is to eliminate","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 16 May 2016 11:07:42 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"rewb0rn@googlemail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Thanks for your reply. I would like to avoid a Flash vs HTML5 discussion, but let me say this: Our","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 02:10:16 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Note that only the browser option will be impacted. You could still redirect your users to install","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 16 May 2016 12:58:35 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"rewb0rn@googlemail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"While I agree that the writing has been on the wall for a long time now, and this kind of move should","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 03:04:16 -0700 (PDT)"},{"name":"From","value":"Richard Davey <rdavey@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I would like to add two thoughts: 1) HTML5 is a great tool for building websites, but it is a not so","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 03:31:03 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I don't like this. On Tuesday, 10 May 2016 01:35:28 UTC+3, Anthony LaForge wrote: Contacts Eng:","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 04:28:25 -0700 (PDT)"},{"name":"From","value":"radu birsan <radu.flash@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"If you read any IT news in the last few years it has been pretty obvious that Flash is phasing out,","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 04:41:02 -0700 (PDT)"},{"name":"From","value":"Thaek <daniel.manser@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"If you Google 'top facebook games', and you browse to each one, you will find a majority of","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 06:33:31 -0700 (PDT)"},{"name":"From","value":"Arianit Uka <auka@bigvikinggames.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"If you read the proposal it doesn't advocate the removal of Flash Player at all. In fact it","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 14:47:46 +0100"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"Richard Davey <rdavey@gmail.com>"},{"name":"To","value":"auka@bigvikinggames.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, groby@chromium.org, tommycli@chromium.org"}]}},{"snippet":"step by step google moving to completely remove flash player from Chrome. IMHO On Monday, May 16,","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 07:04:20 -0700 (PDT)"},{"name":"From","value":"Vakhtangi Beridze <22round@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"auka@bigvikinggames.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Richard: Apart from the fact that adding another layer or approval will decrease user retention and","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 07:33:42 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"auka@bigvikinggames.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I agree 100%. But that isn't what _this_ proposal is about. Photon Storm Ltd. http://www.","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 15:35:20 +0100"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"Richard Davey <rdavey@gmail.com>"},{"name":"To","value":"22round@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, auka@bigvikinggames.com, groby@chromium.org, tommycli@chromium.org"}]}},{"snippet":"I don't believe the Facebook feed uses Flash, I'm pretty sure it's just their games. If","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 07:50:51 -0700 (PDT)"},{"name":"From","value":"James Welbes <james.welbes@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I'm not sure how much thoughts have been put in this "rough draft" proposal but here","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 08:02:05 -0700 (PDT)"},{"name":"From","value":"zwetan kjukov <zwetan@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"On Mon, May 16, 2016 at 6:02 PM, zwetan kjukov <zwetan@gmail.com> wrote: Highjacking a URL","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 16 May 2016 18:23:57 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"zwetan@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Will this post be the primary channel for updates to the propsal? If not, will this forum be the","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 08:33:49 -0700 (PDT)"},{"name":"From","value":"Dan Rumney <dancrumb@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I think the intent here is both obvious and good, but it stings a little bit for sites that still","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 08:40:59 -0700 (PDT)"},{"name":"From","value":"Jeremy Martin <jmar777@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Keep in mind that (as far as I know) most (if not all) of the Chrome users do not use Flash for","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 16 May 2016 19:20:05 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"jmar777@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Hey Chrome devs, What is the process for release process? Once you announce the intent to implement,","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 10:46:32 -0700 (PDT)"},{"name":"From","value":"axlmanu <manu.sharma@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"The writing is obviously on the wall, but we've yet to see a plan from Google (and other vendors)","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 10:49:41 -0700 (PDT)"},{"name":"From","value":"Kevin Feinberg <kevfein@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"So im not seeing the point of this. You say Flash has all these vulnerabilities yet your still going","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 12:22:54 -0700 (PDT)"},{"name":"From","value":"AdamAce UKCC <gt5ukcc@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"On Mon, May 9, 2016 at 3:34 PM, Anthony LaForge <laforge@chromium.org> wrote: Navigator.Plugins","payload":{"headers":[{"name":"From","value":"Matthew Dempsky <mdempsky@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 12:32:26 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Intent to implement: HTML5 by Default"},{"name":"To","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Does this mean that ads which measure viewability will be able to take advantage of","payload":{"headers":[{"name":"Date","value":"Mon, 16 May 2016 18:49:44 -0700 (PDT)"},{"name":"From","value":"Jeffrey Gilbert <jeffreytgilbert@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Looks like IntersectionObserver will be supported in the next major stable release, Chrome 51 - http:","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 17 May 2016 09:41:12 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"jeffreytgilbert@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"From http://www.cnet.com/news/google-to-block-flash-on-chrome-only-10-websites-exempt/ A spokesperson","payload":{"headers":[{"name":"Date","value":"Tue, 17 May 2016 05:22:43 -0700 (PDT)"},{"name":"From","value":"Richard Davey <rdavey@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"The blog coverage of Flash stuff is horrendous. Most of the authors are lazy, sensationalist, and/or","payload":{"headers":[{"name":"Date","value":"Tue, 17 May 2016 06:38:23 -0700 (PDT)"},{"name":"From","value":"Kevin Feinberg <kevfein@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"> The community is more than anxious to ditch Flash. ORLY ? which "community" are we","payload":{"headers":[{"name":"Date","value":"Tue, 17 May 2016 20:27:54 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"zwetan <zwetan@gmail.com>"},{"name":"To","value":"kevfein@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, rewb0rn@googlemail.com, groby@chromium.org, tommycli@chromium.org"}]}},{"snippet":"Howdy folks, Thanks to everyone who took the time to provide thoughtful feedback about this feature,","payload":{"headers":[{"name":"From","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 18:52:41 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Hi Anthony, thanks for your writing. You are asking for feedback from game developers. OK here goes,","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 00:33:36 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"beside gaming there is another issue, no real solutions for DRM, Camera and Microphone support in","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 03:08:16 -0700 (PDT)"},{"name":"From","value":"Vakhtangi Beridze <22round@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"add to that E4X which is standard but not-implemented and ignored by all major browser vendor","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 12:23:02 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"zwetan <zwetan@gmail.com>"},{"name":"To","value":"22round@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Great Answer. Vào 14:33:36 UTC+7 Thứ Tư, ngày 18 tháng 5 năm 2016, Ruben Gerlach đã viết: Hi Anthony,","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 04:14:55 -0700 (PDT)"},{"name":"From","value":"nguyen khuong <nhatkhuong86@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"> Ultimately we think that the Open Web is the right platform for developers I had to breed over","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 04:51:04 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"You say > Any future plans that we make will be based on [...] what's in the best interests of","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 04:55:58 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Hi, As I understand you want to disable flash for site that have a HTML5 fallback. Don't you","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 06:17:09 -0700 (PDT)"},{"name":"From","value":"benjamin BOUFFIER <benjamin.bouffier@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Bad idea! HTML5 is not ready for gaming, audio, rich media and mobile devices. Em segunda-feira, 9 de","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 06:35:45 -0700 (PDT)"},{"name":"From","value":"Renan Muniz <renanchavesmuniz@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Being a Flash game developer for the past 7 years this is unfortunate news. I think things like","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 07:00:03 -0700 (PDT)"},{"name":"From","value":"Robby Scherer <robscherer123@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":">> Try disabling Flash Player in chrome://plugins, we think that you'll be pleasantly","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 07:42:14 -0700 (PDT)"},{"name":"From","value":"Savka Anna <anka.rihanka@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I would say don't even wait for Google to implement this proposal do the tests yourself if you","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 16:48:23 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"zwetan <zwetan@gmail.com>"},{"name":"To","value":"robscherer123@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"On Wed, May 18, 2016 at 12:33 AM, 'Ruben Gerlach' via Chromium-dev <chromium-dev@chromium.","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 08:34:53 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"rewb0rn@googlemail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Hm... You seem to be misinformed. DRM - Encrypted Media Extensions (supported in all of the major","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 18 May 2016 19:05:05 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"22round@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Hi Jeffrey, sorry for the confusion. You can not export Flash games to target mobile web, instead you","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 09:09:53 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"rewb0rn@googlemail.com"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Just to re-cap the feature behavior, because it sounds like there is perhaps a bit of confusion.","payload":{"headers":[{"name":"From","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 09:12:29 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Please, do not rant. If you have concrete and specific complaints, file issues for them. If this is","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 18 May 2016 19:12:21 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"zwetan kjukov <zwetan@gmail.com>"},{"name":"Cc","value":"22round@gmail.com, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"If a meta tag is implemented, everyone will simply add it. That is not a solution... Regarding power","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 18 May 2016 19:16:44 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"benjamin.bouffier@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"if I publish a game with NaCi or PNaCi which unless I'm mistaken require the Native Client plugin","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 18:34:43 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"zwetan <zwetan@gmail.com>"},{"name":"To","value":"phistuck@gmail.com"},{"name":"Cc","value":"benjamin.bouffier@gmail.com, Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"1) Allowing a "top 10" to be superior than all the others is unfair, if this monopoly","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 10:13:39 -0700 (PDT)"},{"name":"From","value":"Gary Yang <flashflexpro@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"by the way HTML5 is so mature when I try to watch Google IO live stream https://www.youtube.com/watch","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 19:27:47 +0200"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"zwetan <zwetan@gmail.com>"},{"name":"To","value":"flashflexpro@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Friendly reminder: while we do appreciate feedback and are intentionally asking this stuff on a","payload":{"headers":[{"name":"From","value":"Peter Kasting <pkasting@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 11:53:41 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Hey Anthony - I appreciate you taking the time to address the concerns being raised here. Your team","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 11:56:51 -0700 (PDT)"},{"name":"From","value":"Jeremy Martin <jmar777@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I know it's really popular to hate Flash, but what exactly is this accomplishing? The market (","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 15:39:45 -0700 (PDT)"},{"name":"From","value":"Michael T <emailmichaelthao@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I don't understand what html5 is modern, javascript is 10 years behind as3 (no classes, it's","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 15:40:07 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"That's actually pretty amazing. Maybe someone can poke the webkit guys and get them to follow","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 16:55:38 -0700 (PDT)"},{"name":"From","value":"Jeffrey Gilbert <jeffreytgilbert@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"jeffreytgilbert@gmail.com, groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Hi Jeremy, I'm not a Chrome dev, but I also do web dev at a high level. I wanted to point out a","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 17:18:43 -0700 (PDT)"},{"name":"From","value":"Jeffrey Gilbert <jeffreytgilbert@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"The motivations for this change seem fairly muddy, and I'm a bit confused over what problem you","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 18:08:50 -0700 (PDT)"},{"name":"From","value":"Matt Neff <fliplinestudios@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Chrome is one of the greatest products! I use it all the time, except watching Youtube, you know, for","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 22:17:45 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"Gary Yang <flashflexpro@gmail.com>"},{"name":"To","value":"fliplinestudios@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, groby@chromium.org, tommycli@chromium.org"}]}},{"snippet":"Our intent is pretty straight-forward, we believe that the web platform is at a point where it","payload":{"headers":[{"name":"From","value":"Anthony LaForge <laforge@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 21:07:46 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"If this proposal passes, at least you can give more time to developers who think that their business","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 22:12:59 -0700 (PDT)"},{"name":"From","value":"Tekin Tatar <tekintatar@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Right now, our primary objective is to get Flash Player usage down to a minimal set of sites (ie","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 22:28:40 -0700 (PDT)"},{"name":"From","value":"benjamin BOUFFIER <benjamin.bouffier@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I don't understand what html5 is modern, javascript is 10 years behind as3 (no classes, it's","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 22:50:25 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I don't understand what html5 is modern, javascript is 10 years behind as3 (no classes, it's","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 22:52:37 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I don't understand what html5 is modern, javascript is 10 years behind as3 (no classes, it's","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 23:57:27 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Hey Jeremy, thanks for the insights. Do you have a source that supports the decline of market share","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 00:58:08 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Jeffrey, sorry. Am Donnerstag, 19. Mai 2016 09:58:08 UTC+2 schrieb Ruben Gerlach: Hey Jeremy, thanks","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 02:35:43 -0700 (PDT)"},{"name":"From","value":"\"'Ruben Gerlach' via Chromium-dev\" <chromium-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Are you using Chromium? That might explain it. I have Flash Player disabled for more than a year","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 19 May 2016 13:16:53 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"zwetan kjukov <zwetan@gmail.com>"},{"name":"Cc","value":"flashflexpro@gmail.com, Chromium-dev <chromium-dev@chromium.org>, Rachel Blum <groby@chromium.org>, Tommy Li <tommycli@chromium.org>"}]}},{"snippet":"Anthony, Many organisations that use Chrome and have to access full webpage Flash Apps would benefit","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 06:30:24 -0700 (PDT)"},{"name":"From","value":"Ian Wilkinson <null@sgtwilko.f9.co.uk>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"This is obvious a political game, nothing is perfect, nothing is free, and there is no "all win","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 11:14:10 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"Gary Yang <flashflexpro@gmail.com>"},{"name":"To","value":"benjamin.bouffier@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"There is a policy to block plugins on certain domains, so that should probably apply. ☆PhistucK On","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 19 May 2016 20:29:03 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"null@sgtwilko.f9.co.uk"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"As measured by sampling 100+ million page views daily over the US audience over the last 3 years. On","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 12:01:06 -0700 (PDT)"},{"name":"From","value":"Jeffrey Gilbert <jeffreytgilbert@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I should also add that this was done over many thousands of sites, not one site. On Thursday, May 19,","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 12:02:11 -0700 (PDT)"},{"name":"From","value":"Jeffrey Gilbert <jeffreytgilbert@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I appreciate the clarification on this, but could you touch on how you determined that Ads and Media","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 12:22:42 -0700 (PDT)"},{"name":"From","value":"Matt Neff <fliplinestudios@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I am a game developer using AS3 to target both the flash player in desktop browsers and AIR on mobile","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 13:34:42 -0700 (PDT)"},{"name":"From","value":"Andrew Pellerano <yayitsandrew@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"On Thu, May 19, 2016 at 8:14 AM, Gary Yang <flashflexpro@gmail.com> wrote: This is obvious a","payload":{"headers":[{"name":"From","value":"Peter Kasting <pkasting@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 13:53:48 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"flashflexpro@gmail.com"},{"name":"Cc","value":"benjamin.bouffier@gmail.com, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Can you outline the current plan for how enterprise administrators can adjust the policy? We deploy","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 14:03:33 -0700 (PDT)"},{"name":"From","value":"Ryan Diehl <rdiehl@docfinity.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I call Microsoft a bully because of the infamous IE6, I call Apple a bully because Apple tried ban","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 17:57:37 -0400"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"From","value":"Gary Yang <flashflexpro@gmail.com>"},{"name":"To","value":"Peter Kasting <pkasting@chromium.org>"},{"name":"Cc","value":"benjamin BOUFFIER <benjamin.bouffier@gmail.com>, Chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"*.swf seems dead, but *.fla seems to be still alive. If any of you need to develop Flash games,","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 18:37:38 -0700 (PDT)"},{"name":"From","value":"Wing-chung Leung <lwchkg@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"daniel.manser@gmail.com"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Unfortunately Adobe Animate is just Flash Professional with a new name and a few more features,","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 19:10:35 -0700 (PDT)"},{"name":"From","value":"Matt Neff <fliplinestudios@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"daniel.manser@gmail.com"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player, if Flash is removed, I will return to the open","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:33:56 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:35:36 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:37:31 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:40:16 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"J'ai utilisé Chrome pour la mise à jour automatique de Flash Player comme beaucoup de gens, si","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:41:48 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:42:41 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:45:43 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 01:50:03 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Don't forget the e-learning industry. I worked on a project (financed by the EU) that involved","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 02:01:03 -0700 (PDT)"},{"name":"From","value":"radu birsan <radu.flash@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I used Chrome for the auto update of Flash Player like many people, if Flash is removed, I will","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 05:14:21 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"about Flash security, see this post http://trevorjim.com/flash-is-dying-from-c-c++/ only Flash ? -- -","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 08:49:57 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I'm also part of the e-learning industry and have worked on educational software for primary","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 10:52:18 -0700 (PDT)"},{"name":"From","value":"Tim <tdor841@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"On Thu, May 19, 2016 at 7:10 PM, Matt Neff <fliplinestudios@gmail.com> wrote: if HTML5 was","payload":{"headers":[{"name":"From","value":"Vincent Scheib <scheib@chromium.org>"},{"name":"Date","value":"Fri, 20 May 2016 12:35:41 -0700"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"fliplinestudios@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, daniel.manser@gmail.com"}]}},{"snippet":"Please bring up specific technical issues in the right forums I really don't want to sound","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 13:30:21 -0700 (PDT)"},{"name":"From","value":"Jeremy Martin <jmar777@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"fliplinestudios@gmail.com, daniel.manser@gmail.com"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"The main problem of HTML5 for me is : JavaScript hurts your software architecture The reason the","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 14:31:13 -0700 (PDT)"},{"name":"From","value":"polki paul <pol2095@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"groby@chromium.org, tommycli@chromium.org"},{"name":"Subject","value":"[chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"I am a game developer, and my primary platform of choice has been Flash. I make web games. My games","payload":{"headers":[{"name":"Date","value":"Fri, 20 May 2016 14:44:24 -0700 (PDT)"},{"name":"From","value":"Nathalie Lawhead <nathalie.lawhead@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"}]}},{"snippet":"Again, bring up specific things that block you. Most of the posters here just write, "you say it","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 21 May 2016 00:51:59 +0300"},{"name":"Subject","value":"Re: [chromium-dev] Re: Intent to implement: HTML5 by Default"},{"name":"To","value":"nathalie.lawhead@gmail.com"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 16:28:47 +1000"},{"name":"Subject","value":"[blink-dev] Last week(s) in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Our internal bug component -> triage owner mapping table doesn't have information about the","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 09:10:40 +0900"},{"name":"Subject","value":"[blink-dev] Bug components with unknown owners; Blink>CaptureStream, Blink>MediaCaptureFromElement, Blink>MediaStreamRecording, Blink>Payments, Blink>Text>Track, Blink>USB"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I will own Blink>USB. On Mon, May 9, 2016 at 5:11 PM TAMURA, Kent <tkent@chromium.org> wrote","payload":{"headers":[{"name":"From","value":"Reilly Grant <reillyg@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 17:58:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Bug components with unknown owners; Blink>CaptureStream, Blink>MediaCaptureFromElement, Blink>MediaStreamRecording, Blink>Payments, Blink>Text>Track, Blink>USB"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails littledan@chromium.org Spec https://tc39.github.io/ecmascript-asyncawait/ Summary","payload":{"headers":[{"name":"From","value":"\"'Daniel Ehrenberg' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 14:11:01 -0700"},{"name":"Subject","value":"[blink-dev] Intent to implement async/await functions"},{"name":"To","value":"v8-users@googlegroups.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Super excited for this to land in V8, and then get integrated into NodeJS! Any timeline on when this","payload":{"headers":[{"name":"Date","value":"Thu, 12 May 2016 08:34:04 -0700 (PDT)"},{"name":"From","value":"jrapodaca@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"v8-users@googlegroups.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to implement async/await functions"}]}},{"snippet":"I love this. By the way, why are there two ChromeStatus entries? https://www.chromestatus.com/feature","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 28 May 2016 10:06:45 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement async/await functions"},{"name":"To","value":"jrapodaca@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, v8-users <v8-users@googlegroups.com>"}]}},{"snippet":"LGTM1 (just kidding) Sorry for not getting the launch process ball rolling myself months ago, that","payload":{"headers":[{"name":"Date","value":"Mon, 30 May 2016 15:29:20 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Intent to implement async/await functions"}]}},{"snippet":"So which one should be removed? Can you merge their content in a reasonable way and remove one of","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 31 May 2016 08:58:13 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement async/await functions"},{"name":"To","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for pointing this out, PhistucK. Now there's only one entry at https://www.chromestatus.","payload":{"headers":[{"name":"From","value":"\"'Daniel Ehrenberg' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 15:24:57 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement async/await functions"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Caitlin Potter <caitpotter88@gmail.com>, v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails hbos@chromium.org, hta@chromium.org Spec http://w3c.github.io/webrtc-pc/#","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 12:11:42 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Storing RTCCertificate in IndexedDB"}]}},{"snippet":"On Mon, May 9, 2016 at 3:11 PM, Henrik Boström <hbos@chromium.org> wrote: Contact emails hbos@","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 21:37:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Storing RTCCertificate in IndexedDB"},{"name":"To","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Interoperability and Compatibility Risk No identified risk. The risk of interest here is that we'","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 23:57:49 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"hbos@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Storing RTCCertificate in IndexedDB"}]}},{"snippet":"On Tue, May 10, 2016 at 2:57 AM, Henrik Boström <hbos@chromium.org> wrote: Interoperability and","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 13:53:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Storing RTCCertificate in IndexedDB"},{"name":"To","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Deprecate DHE-based ciphers Security Last year, we raised the minimum TLS Diffie-Hellman group size","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 11:24:13 -0700 (PDT)"},{"name":"From","value":"patti012320@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] when I switch between gmails it keeps telling me somethings not right- I dont understand computer jargon so im lost."}]}}]},{"messages":[{"snippet":"Looking at http://platformstatustracker.azurewebsites.net/, I noticed that people accidentally update","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 9 May 2016 21:01:00 +0300"},{"name":"Subject","value":"[blink-dev] ChromeStatus iOS Statuses"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 1096 (↓.2%) Number of untriaged","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 10:56:05 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails fs@opera.com Spec https://html.spec.whatwg.org/multipage/embedded-content.html#attr-","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 14:38:20 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Invalid <track kind> values behave like \"metadata\", not \"subtitles\""},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Normally I think we'd want a UseCounter before making a breaking change like this (eg. in case","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 20:04:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Invalid <track kind> values behave like \"metadata\", not \"subtitles\""},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 2:04 AM, Rick Byers <rbyers@chromium.org> wrote: Normally I think we","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 11:46:11 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Invalid <track kind> values behave like \"metadata\", not \"subtitles\""},{"name":"From","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for the additional research! dglazkov@ jochen@ slightlyoff@ and I discussed this in the API","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 13:50:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Invalid <track kind> values behave like \"metadata\", not \"subtitles\""},{"name":"To","value":"\"Fredrik Söderquist\" <fs@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-05","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 10:18:08 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of May 2"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-05-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 10:35:53 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of May 2"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-05-09 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 08:02:51 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-05-09"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Hi, My name is Skye Stevens I represent a-Digital-Marketing-Company. We are US based company having a","payload":{"headers":[{"name":"Date","value":"Sun, 08 May 2016 16:18:39 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Skye Stevens | RAPIDNET LLC\" <skyestevens173@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Hi, My name is Skye Stevens I represent a-Digital-Marketing-Company. We are US based company having a","payload":{"headers":[{"name":"Date","value":"Sun, 08 May 2016 23:18:38 +0000"},{"name":"Subject","value":"www.chromium.org"},{"name":"From","value":"\"Skye Stevens | RAPIDNET LLC\" <skyestevens173@gmail.com>"},{"name":"To","value":"jbroman@chromium.org"}]}}]},{"messages":[{"snippet":"Contact emails panicker@chromium.org, igrigorik@chromium.org, nduca@chromium.org Spec http://w3c.","payload":{"headers":[{"name":"Date","value":"Fri, 6 May 2016 13:17:27 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Performance Observer API"},{"name":"From","value":"\"'Shubhie Panicker' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"Ilya Grigorik <igrigorik@google.com>, Nat Duca <nduca@google.com>"}]}},{"snippet":"\\o/ This is a much needed improvement that helps both the existing and the new perf API use cases:","payload":{"headers":[{"name":"From","value":"Ilya Grigorik <igrigorik@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 13:40:24 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Performance Observer API"},{"name":"To","value":"Shubhie Panicker <panicker@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"}]}},{"snippet":"Does the Web Perf WG have other browser vendor members? On Sat, May 7, 2016 at 5:17 AM, 'Shubhie","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 16:40:05 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"Shubhie Panicker <panicker@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Ilya Grigorik <igrigorik@google.com>, Nat Duca <nduca@google.com>"}]}},{"snippet":"On Mon, May 9, 2016 at 1:43 AM, Michael[tm] Smith <mike@w3.org> wrote: "TAMURA, Kent"","payload":{"headers":[{"name":"From","value":"Ilya Grigorik <igrigorik@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 14:49:23 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"\"Michael[tm] Smith\" <mike@w3.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"}]}},{"snippet":"On 05/10/2016 12:49 AM, Ilya Grigorik wrote: > On Mon, May 9, 2016 at 1:43 AM, Michael[tm] Smith","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"Ilya Grigorik <igrigorik@chromium.org>, \"Michael [tm] Smith\" <mike@w3.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Tue, 10 May 2016 00:56:01 +0300"}]}},{"snippet":"LGTM1 to ship On Mon, May 9, 2016 at 2:56 PM smaug <smaug@welho.com> wrote: On 05/10/2016 12:49","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 22:30:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"smaug <smaug@welho.com>, Ilya Grigorik <igrigorik@chromium.org>, \"Michael [tm] Smith\" <mike@w3.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"}]}},{"snippet":"LGTM2. :DG< On Mon, May 9, 2016 at 3:30 PM, Chris Harrelson <chrishtr@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 15:30:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"smaug <smaug@welho.com>, Ilya Grigorik <igrigorik@chromium.org>, \"Michael [tm] Smith\" <mike@w3.org>, \"TAMURA, Kent\" <tkent@chromium.org>, Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"}]}},{"snippet":"On Mon, May 9, 2016 at 2:56 PM, smaug <smaug@welho.com> wrote: +1 to all of the above. Except..","payload":{"headers":[{"name":"From","value":"\"'Ilya Grigorik' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 16:05:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"smaug <smaug@welho.com>"},{"name":"Cc","value":"\"Michael [tm] Smith\" <mike@w3.org>, \"TAMURA, Kent\" <tkent@chromium.org>, Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>, Nat Duca <nduca@google.com>"}]}},{"snippet":"Thank you for the additional information. LGTM3. On Tue, May 10, 2016 at 7:30 AM, Dimitri Glazkov","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 08:08:43 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Performance Observer API"},{"name":"To","value":"Shubhie Panicker <panicker@google.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Ilya Grigorik <igrigorik@chromium.org>, \"Michael [tm] Smith\" <mike@w3.org>, Nat Duca <nduca@google.com>"}]}}]},{"messages":[{"snippet":"Contact emails dmurph@chromium.org, palakj@chromium.org Spec https://github.com/dmurph/indexed-db-","payload":{"headers":[{"name":"From","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 19:29:30 +0000"},{"name":"Subject","value":"[blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Palak Jain <palakj@google.com>, Joshua Bell <jsbell@chromium.org>"}]}},{"snippet":"Sounds exciting! I didn't see anything in the explainer about the thread performance implications","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 21:58:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>, Joshua Bell <jsbell@chromium.org>"}]}},{"snippet":"I have a couple comments on this proposal: - This doesn't follow the observer pattern of","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 21:51:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>"}]}},{"snippet":"Rick: IndexedDB is asynchronous, so there is never any blocking of the UI thread. Observers don't","payload":{"headers":[{"name":"From","value":"\"'Daniel Murphy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 18:40:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>"}]}},{"snippet":"Based on feedback about the observer creation, I created the following proposal: https://github.com/","payload":{"headers":[{"name":"From","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 19:13:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>"}]}},{"snippet":"Hello! I've updated the IDB Observers Explainer. Major changes: It now lives in the WICG, as we","payload":{"headers":[{"name":"From","value":"\"'Daniel Murphy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 18:23:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>"}]}},{"snippet":"Hello! I've updated the IDB Observers Explainer. Major changes: It now lives in the WICG, as we","payload":{"headers":[{"name":"From","value":"Daniel Murphy <dmurph@chromium.org>"},{"name":"Date","value":"Thu, 09 Jun 2016 18:24:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, blink-dev <blink-dev@chromium.org>, Palak Jain <palakj@google.com>"}]}},{"snippet":"Amazing! On Jun 9, 2016 11:24 AM, "Daniel Murphy" <dmurph@google.com> wrote: Hello! I","payload":{"headers":[{"name":"Date","value":"Thu, 9 Jun 2016 14:27:44 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent To Implement: IndexedDB Observers"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Daniel Murphy <dmurph@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@chromium.org>, Palak Jain <palakj@google.com>"}]}}]},{"messages":[{"snippet":"Contact emails noel@chromium.org, tabatkins@chromium.com Spec https://drafts.csswg.org/css-color/#hex","payload":{"headers":[{"name":"Date","value":"Fri, 6 May 2016 07:36:09 -0700 (PDT)"},{"name":"From","value":"Noel Gordon <noel@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Tab Atkins <tabatkins@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"}]}},{"snippet":"LGTM1 On Fri, May 6, 2016 at 10:36 AM, Noel Gordon <noel@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 11:00:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Noel Gordon <noel@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"lgtm2 Rick Byers <rbyers@chromium.org> schrieb am Fr., 6. Mai 2016, 17:01: LGTM1 On Fri, May 6,","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 15:09:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Noel Gordon <noel@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"LGTM3 On Fri, May 6, 2016 at 8:09 AM, Jochen Eisinger <jochen@chromium.org> wrote: lgtm2 Rick","payload":{"headers":[{"name":"Date","value":"Fri, 6 May 2016 08:41:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"On 5/6/16 9:36 AM, Noel Gordon wrote: > *Public support* > /Firefox/ > Mixed https://","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Noel Gordon <noel@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Mike Taylor <miket@mozilla.com>"},{"name":"Date","value":"Mon, 9 May 2016 10:42:50 -0500"}]}},{"snippet":"Hello, Some concerns here. This change has caused problems with both Gmail and Inbox Android","payload":{"headers":[{"name":"Date","value":"Thu, 2 Jun 2016 18:39:22 -0700 (PDT)"},{"name":"From","value":"Selim Gurun <sgurun@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"}]}},{"snippet":"One more thing to note about this: Android resources already have 8-value hex colours, but they are #","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 10:27:28 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Selim Gurun <sgurun@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"}]}},{"snippet":"On Fri, Jun 3, 2016 at 6:27 AM, Torne (Richard Coles) <torne@chromium.org> wrote: One more","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 09:56:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Cc","value":"Selim Gurun <sgurun@chromium.org>, blink-dev <blink-dev@chromium.org>, noel@chromium.org"}]}},{"snippet":"On 6/3/16 9:56 AM, Ian Clelland wrote: > See the rules for parsing a legacy colour value here:","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Fri, 3 Jun 2016 10:18:10 -0400"}]}},{"snippet":"Oh. So that sounds like it would actually have interpreted #AARRGGBB before as being #RRRGGGBBB by","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 14:18:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"Selim Gurun <sgurun@chromium.org>, blink-dev <blink-dev@chromium.org>, noel@chromium.org"}]}},{"snippet":"On Fri, 03 Jun 2016 03:39:22 +0200, Selim Gurun <sgurun@chromium.org> wrote: > Hello, >","payload":{"headers":[{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"Date","value":"Wed, 08 Jun 2016 10:10:58 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"They were using it in CSS. On Wed, 8 Jun 2016 at 09:11 Simon Pieters <simonp@opera.com> wrote:","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 09:04:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"}]}},{"snippet":"On Wed, 08 Jun 2016 11:04:13 +0200, Torne (Richard Coles) <torne@chromium.org> wrote: > They","payload":{"headers":[{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, \"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"Date","value":"Wed, 08 Jun 2016 12:02:51 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"The CSS in question here is embedded inside an Android app that uses WebView and isn't going to","payload":{"headers":[{"name":"From","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 10:23:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>"},{"name":"Cc","value":"noel@chromium.org"}]}},{"snippet":"Thanks for bringing this up. For the purposes of this "intent to ship" (and the CSS spec) I","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 16:56:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"\"Torne (Richard Coles)\" <torne@chromium.org>"},{"name":"Cc","value":"Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, Noel Gordon <noel@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"On Wed, Jun 8, 2016 at 1:56 PM, Rick Byers <rbyers@chromium.org> wrote: Thanks for bringing","payload":{"headers":[{"name":"From","value":"\"'Selim Gurun' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 14:21:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Noel Gordon <noel@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"Guys, I was playing around with alpha channels. I noticed that though these don't work in Chrome","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 14:25:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Noel Gordon <noel@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"rgba() has been around forever AFAIK, MDN says Chrome has supported it since 1.0. On Wed, Jun 8, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 18:04:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"On Wed, Jun 8, 2016 at 1:56 PM, Rick Byers <rbyers@chromium.org> wrote: One option is to add a","payload":{"headers":[{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 15:30:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, Noel Gordon <noel@chromium.org>"}]}},{"snippet":"Yes, I think this is the right approach. On Wed, Jun 8, 2016 at 3:30 PM, Alexandre Elias <aelias@","payload":{"headers":[{"name":"From","value":"\"'Selim Gurun' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 15:32:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"Torne (Richard Coles)\" <torne@chromium.org>, Simon Pieters <simonp@opera.com>, blink-dev <blink-dev@chromium.org>, Noel Gordon <noel@chromium.org>"}]}},{"snippet":"Yeah, that's a way-old CSS2.1 function. (Or maybe even CSS1? Dunno, and too lazy to verify.) On","payload":{"headers":[{"name":"From","value":"\"'Tab Atkins' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 16:05:41 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"Noel's on leave and will be for a while. Would it be appropriate to revert the shipping patch (to","payload":{"headers":[{"name":"From","value":"\"'Shane Stephens' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 23:50:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Tab Atkins <tabatkins@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"Yeah having the quirk is release-blocking for clank, so if there's no-one prepared to jump on it","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 19:53:24 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Shane Stephens <shans@google.com>"},{"name":"Cc","value":"Tab Atkins <tabatkins@google.com>, Joe Medley <jmedley@google.com>, Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"sgtm. Thanks Rick for jumping on this and disabling it (https://bugs.chromium.org/p/chromium/issues/","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 22:38:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Shane Stephens <shans@google.com>, Tab Atkins <tabatkins@google.com>, Joe Medley <jmedley@google.com>, Noel Gordon <noel@chromium.org>, blink-dev <blink-dev@chromium.org>, Tab Atkins <tabatkins@chromium.org>"}]}},{"snippet":"On Wed, 08 Jun 2016 22:56:49 +0200, Rick Byers <rbyers@chromium.org> wrote: > Thanks for","payload":{"headers":[{"name":"To","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, Noel Gordon <noel@chromium.org>, Alexandre Elias <aelias@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"Date","value":"Thu, 09 Jun 2016 10:07:49 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"On Thu, Jun 9, 2016 at 4:07 AM, Simon Pieters <simonp@opera.com> wrote: On Wed, 08 Jun 2016 22:","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 07:04:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Torne (Richard Coles)\" <torne@chromium.org>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, Noel Gordon <noel@chromium.org>, Alexandre Elias <aelias@chromium.org>, samli@chromium.org"}]}},{"snippet":"On 6/9/16 3:07 AM, Simon Pieters wrote: > Based on this I think it is probably OK to ship as far","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Accept 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, Selim Gurun <sgurun@chromium.org>, Noel Gordon <noel@chromium.org>, Alexandre Elias <aelias@chromium.org>"},{"name":"From","value":"Mike Taylor <miket@mozilla.com>"},{"name":"Date","value":"Thu, 9 Jun 2016 09:27:15 -0500"}]}}]},{"messages":[{"snippet":"Contact emails drott@chromium.org Spec https://drafts.csswg.org/css-fonts/#font-variant-numeric-prop","payload":{"headers":[{"name":"From","value":"\"Dominik Röttsches\" <drott@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 15:00:32 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement And Ship: font-variant-numeric"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 It sounds very low risk. On Fri, May 6, 2016 at 10:00 PM, Dominik Röttsches <drott@chromium.","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 16:37:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: font-variant-numeric"},{"name":"To","value":"\"Dominik Röttsches\" <drott@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Mon, May 9, 2016 at 12:37 AM, TAMURA, Kent <tkent@chromium.org> wrote: LGTM1 It sounds","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 08:26:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: font-variant-numeric"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"\"Dominik Röttsches\" <drott@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Mon, May 9, 2016 at 8:26 AM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 17:36:12 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement And Ship: font-variant-numeric"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"\"Dominik Röttsches\" <drott@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(Note this feature was previously approved in an Intent to Ship but we have decided to run an origin","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 19:21:02 -0700 (PDT)"},{"name":"From","value":"Owen <owencm@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Experiment: Durable Storage"}]}},{"snippet":"cc jsbell, slightlyoff, dmurph On Thursday, May 5, 2016 at 7:21:03 PM UTC-7, Owen wrote: (Note this","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 19:21:44 -0700 (PDT)"},{"name":"From","value":"Owen <owencm@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@chromium.org>, Alex Russell <slightlyoff@chromium.org>, Daniel Murphy <dmurph@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Experiment: Durable Storage"}]}}]},{"messages":[{"snippet":"need advice...all of my and my bfs google accounts are hijacked and being used in terrible ways","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 17:53:36 -0700 (PDT)"},{"name":"From","value":"teowens1972@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] help"}]}},{"snippet":"This is not the place. A simple Google search for "google account hijack" has this top","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 6 May 2016 10:48:05 +0300"},{"name":"Subject","value":"Re: [blink-dev] help"},{"name":"To","value":"teowens1972@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails dbeam@chromium.org, zkoch@chromium.org Summary We want to deprecate and","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 00:34:18 +0000"},{"name":"Subject","value":"[blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"dbeam@chromium.org"}]}},{"snippet":"LGTM1. The usage looks very very low, and other browsers don't support the feature. I think","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 12:37:22 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, dbeam@chromium.org"}]}},{"snippet":"Doesn't mozilla work on this feature for a while now? Any feedback from them? On Fri, May 6, 2016","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 09:58:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, dbeam@chromium.org"}]}},{"snippet":"On 05/06/2016 12:58 PM, Jochen Eisinger wrote: > Doesn't mozilla work on this feature for a","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, dbeam@chromium.org"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Fri, 6 May 2016 17:24:34 +0300"}]}},{"snippet":"Wow, I'm shocked at how low the usage is given the improvement in checkout user experience (I","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 11:07:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"smaug <smaug@welho.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, Zach Koch <zkoch@google.com>, blink-dev <blink-dev@chromium.org>, Dan Beam <dbeam@chromium.org>"}]}},{"snippet":"lgtm3 Rick Byers <rbyers@chromium.org> schrieb am Fr., 6. Mai 2016, 17:07: Wow, I'm shocked","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 15:09:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, smaug <smaug@welho.com>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Zach Koch <zkoch@google.com>, blink-dev <blink-dev@chromium.org>, Dan Beam <dbeam@chromium.org>"}]}},{"snippet":"So, just clarify the current state of this thread: tkent is cool with removal without deprecation","payload":{"headers":[{"name":"From","value":"Dan Beam <dbeam@chromium.org>"},{"name":"Date","value":"Sun, 8 May 2016 20:30:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, smaug <smaug@welho.com>, \"TAMURA, Kent\" <tkent@chromium.org>, Zach Koch <zkoch@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is also being pulled out of GMSCore soon (which powers the Android implementation), so I would","payload":{"headers":[{"name":"From","value":"\"'Zach Koch' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 03:43:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Dan Beam <dbeam@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, smaug <smaug@welho.com>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Sun, May 8, 2016 at 8:43 PM, 'Zach Koch' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"Date","value":"Sun, 8 May 2016 22:33:51 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"Dan Beam <dbeam@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Rick Byers <rbyers@chromium.org>, smaug <smaug@welho.com>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm fine with removing right away On Mon, May 9, 2016 at 7:33 AM Brett Wilson <brettw@chromium","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 06:46:37 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>, Zach Koch <zkoch@google.com>"},{"name":"Cc","value":"Dan Beam <dbeam@chromium.org>, Rick Byers <rbyers@chromium.org>, smaug <smaug@welho.com>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry, I originally missed that tkent@ proposed direct removal. I was thinking of the odd scenario","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 14:18:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: requestAutocomplete"},{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Zach Koch <zkoch@google.com>, Dan Beam <dbeam@chromium.org>, smaug <smaug@welho.com>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails Eng: meacer@chromium.org Summary We intend to block web pages from","payload":{"headers":[{"name":"From","value":"Mustafa Emre Acer <meacer@chromium.org>"},{"name":"Date","value":"Thu, 5 May 2016 14:56:06 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>"}]}},{"snippet":"LGTM1. On Fri, May 6, 2016 at 6:56 AM, Mustafa Emre Acer <meacer@chromium.org> wrote: Primary","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 12:39:32 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Mustafa Emre Acer <meacer@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"I think that's a pretty new UseCounter so the data might be kind of low, I support this change","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 20:51:32 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Mustafa Emre Acer <meacer@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"non-OWNER, but I strongly support this proposal. On Fri, May 6, 2016 at 12:51 PM, Elliott Sprehn <","payload":{"headers":[{"name":"From","value":"\"'Kouhei Ueno' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 12:53:48 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Mustafa Emre Acer <meacer@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"The UseCounter is only present on dev and canary so far (crrev.com/388723 is available from 52.0.","payload":{"headers":[{"name":"From","value":"Timothy Loh <timloh@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 14:35:31 +1000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Kouhei Ueno <kouhei@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Mustafa Emre Acer <meacer@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, May 6, 2016 at 6:35 AM Timothy Loh <timloh@chromium.org> wrote: The UseCounter is","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 06:33:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Timothy Loh <timloh@chromium.org>, Kouhei Ueno <kouhei@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Mustafa Emre Acer <meacer@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"LGTM3 On Thu, May 5, 2016 at 11:33 PM Jochen Eisinger <jochen@chromium.org> wrote: LGTM2 On Fri","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Sat, 07 May 2016 04:38:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Timothy Loh <timloh@chromium.org>, Kouhei Ueno <kouhei@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Mustafa Emre Acer <meacer@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"Thanks everyone, I'll proceed with the removal. (also thanks for pointing out that the use","payload":{"headers":[{"name":"From","value":"Mustafa Emre Acer <meacer@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 11:58:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Timothy Loh <timloh@chromium.org>, Kouhei Ueno <kouhei@google.com>, Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}},{"snippet":"On Mon, May 9, 2016 at 2:58 PM, Mustafa Emre Acer <meacer@chromium.org> wrote: Thanks everyone,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 21:40:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Content initiated navigations to view-source URLs"},{"name":"To","value":"Mustafa Emre Acer <meacer@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Timothy Loh <timloh@chromium.org>, Kouhei Ueno <kouhei@google.com>, Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>, Charlie Reis <creis@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails lfg@chromium.org Spec The spec isn't clear on this issue (https://www.w3.org/TR/","payload":{"headers":[{"name":"From","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Date","value":"Thu, 05 May 2016 19:50:08 +0000"},{"name":"Subject","value":"[blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"I think it's worth clarifying Chrome's current behavior here, since I think only in-page","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 13:28:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"From: Lucas Gadani [mailto:lfg@chromium.org] > The spec isn't clear on this issue (https://www","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"CC","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"Date","value":"Thu, 5 May 2016 20:31:20 +0000"}]}},{"snippet":"Are we sure what Firefox's behavior is here? It looks like they prevented navigations during","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 14:12:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"Lucas Gadani <lfg@chromium.org>, blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"LGTM1. On Fri, May 6, 2016 at 4:50 AM, Lucas Gadani <lfg@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 12:38:19 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"On Thu, May 5, 2016 at 4:28 PM Charlie Reis <creis@chromium.org> wrote: I think it's worth","payload":{"headers":[{"name":"From","value":"\"'Lucas Gadani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 20:01:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"Thanks for the correction, I'm still not convinced that's what the spec says (and the","payload":{"headers":[{"name":"From","value":"\"'Lucas Gadani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 20:02:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"Thanks for pointing this out, I've noticed that Firefox actually behaves differently if the","payload":{"headers":[{"name":"From","value":"\"'Lucas Gadani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 20:10:06 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Charlie Reis <creis@chromium.org>, Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"One clarification regarding same vs cross origin: there's actually 3 URLs involved: the current","payload":{"headers":[{"name":"Date","value":"Fri, 6 May 2016 13:52:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"Lucas Gadani <lfg@google.com>"},{"name":"Cc","value":"Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"Thanks for the detailed discussion. Sounds low risk to me, but to help quantify it (and mitigate the","payload":{"headers":[{"name":"Date","value":"Sat, 7 May 2016 09:43:21 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, Lucas Gadani <lfg@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That sounds reasonable, I'll work on a patch to add a counter and a message. On Sat, May 7, 2016","payload":{"headers":[{"name":"From","value":"\"'Lucas Gadani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 19:41:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Rick Byers <rbyers@google.com>, Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Now that this has been in beta for a few weeks, chromestatus is showing usage to be <=0.0001%, I'd like to go ahead and ask approval to ship this on M54. I'll keep monitoring the usage as it","payload":{"headers":[{"name":"From","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Date","value":"Tue, 02 Aug 2016 18:38:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Rick Byers <rbyers@google.com>, Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I double checked the internal M53-specific use counter values for UnloadHandler_Navigation and they're at 0.00001% of M53 PageVisits. Note that since Android Beta is still M52, we don't really","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 14:49:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, Aug 2, 2016 at 11:49 AM, 'Rick Byers' via blink-dev <blink-dev@chromium.org> wrote: I double checked the internal M53-specific use counter values for","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 12:00:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Rick Byers <rbyers@google.com>"},{"name":"Cc","value":"Lucas Gadani <lfg@chromium.org>, Charlie Reis <creis@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Lucas, Can you please create a status entry now. Joe Medley | Technical Writer, Chrome DevRel | jmedley@google.com | 816-678-7195 If an API's not documented it doesn't exist. On Tue, Aug 2,","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 3 Aug 2016 08:19:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow navigations in the unload handler"},{"name":"To","value":"Lucas Gadani <lfg@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@google.com>, Chris Harrelson <chrishtr@chromium.org>, Charlie Reis <creis@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Domenic Denicola <d@domenic.me>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi there, i'm using the RecognizerIntent for the Speech to Text, but I need to save the input","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 10:57:49 -0700 (PDT)"},{"name":"From","value":"fraint8@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Save audio input file from an RecognizerIntent"}]}},{"snippet":"I am not sure how RecognizerIntent is related to Blink. It seems like an Android class, which is out","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 5 May 2016 21:27:09 +0300"},{"name":"Subject","value":"Re: [blink-dev] Save audio input file from an RecognizerIntent"},{"name":"To","value":"fraint8@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"We have a number of lifecycle related observers: PageLifecycleObserver LocalFrameLifecycleObserver","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 18:45:45 +0100"},{"name":"Subject","value":"[blink-dev] lifecycle observers"},{"name":"From","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 5, 2016 at 10:45 AM Michael van Ouwerkerk <mvanouwerkerk@chromium.org> wrote: We","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Thu, 05 May 2016 20:25:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That is awesome, thanks Daniel :-) I initially considered adding documentation to the various classes","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 21:57:55 +0100"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"From","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 5, 2016 at 1:57 PM Michael van Ouwerkerk <mvanouwerkerk@chromium.org> wrote: That","payload":{"headers":[{"name":"From","value":"\"'Giovanni Ortuño' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 05 May 2016 21:23:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 5, 2016 at 2:24 PM Giovanni Ortuño <ortuno@google.com> wrote: On Thu, May 5, 2016","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Thu, 05 May 2016 21:32:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"\"Giovanni Ortuño\" <ortuno@google.com>, Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, we do need to clean up the lifecycle observers. Other problems I'm aware of are: -","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 10:08:13 +0900"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"\"Giovanni Ortuño\" <ortuno@google.com>, Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"-blink-dev I tried to write a document to identify problems of the existing lifecycle observers and","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 6 May 2016 19:06:51 +0900"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>, platform-architecture-dev <platform-architecture-dev@chromium.org>"}]}},{"snippet":"I wrote a design doc to clean up a bunch of lifecycle observers. A tracking bug is here. On Fri, May","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 17 May 2016 08:45:18 +0900"},{"name":"Subject","value":"Re: [blink-dev] lifecycle observers"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"\"Giovanni Ortuño\" <ortuno@google.com>, Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I am the developer of two web apps that both use geolocation. (BTW, they both use watchPosition).","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 05:43:15 -0700 (PDT)"},{"name":"From","value":"Joseph Elfelt <josephelfelt@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Developer’s lament - Cost of HTTPS for multiple domains"}]}},{"snippet":"I do not think this group should endorse any hosting company (any recommendation can be seen as an","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 5 May 2016 15:48:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Developer’s lament - Cost of HTTPS for multiple domains"},{"name":"To","value":"Joseph Elfelt <josephelfelt@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It is also not true that you need a dedicated IP address for TLS. You can use SNI instead: https://en","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Thu, 5 May 2016 09:32:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Developer’s lament - Cost of HTTPS for multiple domains"},{"name":"To","value":"Joseph Elfelt <josephelfelt@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"security@chromium.org (CC'd) might be a better place for this discussion. True, we are not going","payload":{"headers":[{"name":"Date","value":"Fri, 6 May 2016 14:55:31 -0700 (PDT)"},{"name":"From","value":"\"'Chris Palmer' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"josephelfelt@gmail.com, ChromeSecurity <security@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Developer’s lament - Cost of HTTPS for multiple domains"}]}}]},{"messages":[{"snippet":"Now that we have decent UseCounter data from beta, I'd like to upgrade the below "intent to","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 18:21:10 -0400"},{"name":"Subject","value":"[blink-dev] Intent to remove: touch drag as a user gesture in cross-origin iframes (intervention)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Thu, May 5, 2016 at 12:21 AM Rick Byers <rbyers@chromium.org> wrote: Now that we have","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 17:08:38 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: touch drag as a user gesture in cross-origin iframes (intervention)"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, May 10, 2016 at 10:08 AM, Jochen Eisinger <jochen@chromium.org> wrote: LGTM1 On","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 10:12:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: touch drag as a user gesture in cross-origin iframes (intervention)"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, May 10, 2016 at 10:12 AM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 17:57:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: touch drag as a user gesture in cross-origin iframes (intervention)"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As promised, I re-checked the UseCounters for this intent now that 51 has hit stable, and they are","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 09:40:19 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: touch drag as a user gesture in cross-origin iframes (intervention)"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, May 4: Recent updates: We're continuing our","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 15:10:16 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, May 4, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 11:13:57 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-05-03)"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails Eng: guidou@chromium.org, hta@chromium.org, PM: blum@chromium.org Summary","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 06:19:27 -0700 (PDT)"},{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"}]}},{"snippet":"LGTM1 to deprecate in M52 and remove in M53 (even though you weren't requesting approval to","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 04 May 2016 18:48:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Wed, May 4, 2016 at 11:48 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 to","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 11:49:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As part of deprecation, I assume we'll get UseCounter coverage for the addEventListener case,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 15:22:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Since we started to count usage with addEventListener, the UseCounter jumped to 0.0022% (0.0027% on","payload":{"headers":[{"name":"Date","value":"Mon, 30 May 2016 06:47:38 -0700 (PDT)"},{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dglazkov@chromium.org, chrishtr@chromium.org, guidou@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"}]}},{"snippet":"Ugh, that's tougher to evaluate. It probably depends how we expect those sites to break in","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 30 May 2016 14:33:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"}]}},{"snippet":"Hangouts is using this event. An internal bug has been filed to migrate to the inactive event. On","payload":{"headers":[{"name":"Date","value":"Wed, 8 Jun 2016 04:49:13 -0700 (PDT)"},{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"guidou@chromium.org, dglazkov@chromium.org, chrishtr@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"}]}},{"snippet":"Thanks! Hopefully they will remove usage soon. If not, we can discuss options. In other cases we'","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 9 Jun 2016 11:42:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"}]}},{"snippet":"The active/inactive events were removed form the spec in December. See the Change Log under '","payload":{"headers":[{"name":"Date","value":"Thu, 9 Jun 2016 15:12:51 -0700 (PDT)"},{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"}]}},{"snippet":"Great catch Joe, thanks! Here's the discussion/commit, +adam-be who drove that. The advice is","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 10 Jun 2016 12:09:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Joe Medley <jmedley@google.com>, Guido Urdaneta <guidou@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, adam.bergkvist@ericsson.com"}]}},{"snippet":"+hta@ I think we should proceed with our plan to remove the ended event, and start tracking usage of","payload":{"headers":[{"name":"From","value":"\"'Guido Urdaneta' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sat, 11 Jun 2016 09:31:35 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, blink-dev <blink-dev@chromium.org>, adam.bergkvist@ericsson.com, Harald Alvestrand <hta@chromium.org>"}]}},{"snippet":"Discussion was that applications serious about watching for events would watch the tracks not the","payload":{"headers":[{"name":"Date","value":"Sun, 12 Jun 2016 10:27:23 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Guido Urdaneta <guidou@google.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, adam.bergkvist@ericsson.com"}]}},{"snippet":"Given that 3/4 browser engines supports the active/inactive events, would the WG consider putting","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 13:04:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Guido Urdaneta <guidou@google.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>, adam.bergkvist@ericsson.com"}]}},{"snippet":"What do you think about removing the recommendation to migrate to the inactive event from the","payload":{"headers":[{"name":"Date","value":"Tue, 21 Jun 2016 06:07:54 -0700 (PDT)"},{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"hta@chromium.org, jmedley@google.com, rbyers@chromium.org, adam.bergkvist@ericsson.com"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"}]}},{"snippet":"Deferring the removal and changing the deprecation message seems good. On Tue, Jun 21, 2016 at 3:07","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 15:16:37 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, Adam Bergkvist <adam.bergkvist@ericsson.com>"}]}},{"snippet":"Did anyone (Harald?) raise this issue with the WG? Removing the active/inactive events seems not so","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 13:30:50 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, Adam Bergkvist <adam.bergkvist@ericsson.com>"}]}},{"snippet":"I've filed https://github.com/w3c/mediacapture-main/issues/370 On Wed, Jun 22, 2016 at 3:30 PM","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 22 Jun 2016 14:19:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, Adam Bergkvist <adam.bergkvist@ericsson.com>"}]}},{"snippet":"https://github.com/w3c/mediacapture-main/issues/370 was closed but it's not at all clear to me","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Thu, 07 Jul 2016 09:23:42 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, Adam Bergkvist <adam.bergkvist@ericsson.com>"}]}},{"snippet":"Erik closed as "no consensus to change further" (that is, no consensus to remove the active attribute). The active attribute is clearly defined in terms of the track states, and is rreadonly,","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 2 Aug 2016 09:01:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Deprecate: MediaStream ended event and onended attribute"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>, Harald Alvestrand <hta@chromium.org>, Joe Medley <jmedley@google.com>, Rick Byers <rbyers@chromium.org>, Adam Bergkvist <adam.bergkvist@ericsson.com>"}]}}]},{"messages":[{"snippet":"Hey blink gurus, I've added a javascript function that I only want to be exposed for testing to","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 03:44:51 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Trying to use window.internals in WebRtcBrowserTest, getting internals is undefined"}]}},{"snippet":"that's a content shell switch, so you'd either have to use a content_browsertest, or port the","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 04 May 2016 10:50:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Trying to use window.internals in WebRtcBrowserTest, getting internals is undefined"},{"name":"To","value":"\"Henrik Boström\" <hbos@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Oh. Hmm. WebRtcBrowserTest (being InProcessBrowserTest) is a content::BrowserTestBase (of","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 04:50:10 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"hbos@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Trying to use window.internals in WebRtcBrowserTest, getting internals is undefined"}]}}]},{"messages":[{"snippet":"I have a css class I use for an html input field in a scancard program that is set to 0px. I set it","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 22:48:19 -0700 (PDT)"},{"name":"From","value":"debnusbaum@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] 0px CSS on input class stopped working with latest Chrome Release"}]}},{"snippet":"I still cannot reproduce. Even without color: white, this seems to work for me on Windows 7 and","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 4 May 2016 09:19:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] 0px CSS on input class stopped working with latest Chrome Release"},{"name":"To","value":"Deb Nusbaum <debnusbaum@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is not the appropriate forum for this (there are a lot of people on this list). Please file a","payload":{"headers":[{"name":"From","value":"Timothy Loh <timloh@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 16:56:27 +1000"},{"name":"Subject","value":"Re: [blink-dev] 0px CSS on input class stopped working with latest Chrome Release"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Deb Nusbaum <debnusbaum@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"+blink-dev","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 09:13:49 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"}]}},{"snippet":"The post itself seems to be missing. :( ☆PhistucK On Tue, May 3, 2016 at 7:13 PM, Caitlin Potter <","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 3 May 2016 19:18:35 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"},{"name":"To","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It's in v8-users, here's a copy :x Contact emails caitp@igalia.com Spec Stage 4 TC39 Proposal","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 09:21:58 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"caitpotter88@gmail.com, blink-dev@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"}]}},{"snippet":"Are the implementations interoperable? Does V8 pass all of the relevant test262 tests? (By the way, I","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 3 May 2016 19:32:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"},{"name":"To","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"V8 passes all of the relevant test262 tests included in the current test262 roll. Regarding interop,","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 09:45:52 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"caitpotter88@gmail.com, blink-dev@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"}]}},{"snippet":"Thank you. :) ☆PhistucK On Tue, May 3, 2016 at 7:45 PM, Caitlin Potter <caitpotter88@gmail.com>","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 3 May 2016 19:47:50 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"},{"name":"To","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I was mistaken, the FireFox bug was just a symptom of a well known Symbol not being present yet in","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 10:26:47 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"caitpotter88@gmail.com, blink-dev@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"}]}},{"snippet":"LGTM to ship, given the stage 4 state of the spec and our compat with the test262 tests. On Tue, May","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 11:53:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Ship: Object.values() and Object.entries()"},{"name":"From","value":"Adam Klein <adamk@chromium.org>"},{"name":"To","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"Cc","value":"v8-users <v8-users@googlegroups.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails jochen@chromium.org Spec I'd claim that the current spec is contradictionary here,","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 14:47:45 +0000"},{"name":"Subject","value":"[blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Debugger will still spin message loop within microtasks, for example when stepping through the","payload":{"headers":[{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 14:55:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think it's ok if the debugger behaves differently in this case. On Tue, May 3, 2016 at 4:56 PM","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 14:56:49 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Pavel Feldman <pfeldman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 5/3/16 10:47 AM, Jochen Eisinger wrote: > It's also unclear whether microtasks created","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Tue, 3 May 2016 11:18:29 -0400"}]}},{"snippet":"As long as we don't assume that "microtasks don't run nested loops" in our code and","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 08:22:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"s/and never dispatched/and dispatched later/ On Tue, May 3, 2016, 08:22 Pavel Feldman <pfeldman@","payload":{"headers":[{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 15:24:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sync XHRs will result in progress events being dispatched while the nested message loop runs. On Tue,","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 15:34:15 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Pavel Feldman <pfeldman@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think this is very high risk, it means using any library that contains an alert will fail when used","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 08:50:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm not sure I agree - I think the overlap you describe is quite rare. But anyways, adding a use","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 16:37:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Since fetch is the new good XMLHttpRequest, it makes sense that whatever people do with one, they","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 3 May 2016 19:43:28 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah we definitely need some compat data here before we can make a decision. The main question in my","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 15:09:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"First beta numbers are coming in, and they're virtually zero. Looking at the raw numbers,","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 19:47:09 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How easy is it to revert? I'm fine letting it go all the way to beta as long as it's a tiny","payload":{"headers":[{"name":"Date","value":"Mon, 6 Jun 2016 15:54:41 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"I could make it a RuntimeEnabledFlags flip only for now. On Mon, Jun 6, 2016 at 9:54 PM Elliott","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 20:27:06 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Now that we have numbers from beta, I'd like to go ahead and ship this. ---------- Forwarded","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 09:48:17 +0000"},{"name":"Subject","value":"[blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Looks like these are the counters: https://www.chromestatus.com/metrics/feature/timeline/popularity/","payload":{"headers":[{"name":"From","value":"\"Philip Jägenstedt\" <foolip@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:00:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah, syncXHR is the surprising outlier. I guess you can still work around this by moving the entire","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:18:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"And for syncXHR's we'll throw an exception, so hopefully the existing error handing kicks in","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 15:27:08 +0000"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2, but as noted we should be ready to revert. On Wed, Jun 8, 2016 at 8:27 AM, Jochen Eisinger","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 15 Jun 2016 21:52:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'm wondering whether we should wait for Avi's modal dialog thing to land. Then we wouldn","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 16 Jun 2016 05:11:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"After talking to Avi, I guess his project won't magically resolve my issues here. I'd then","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 16:44:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"API owners met and discussed this today. We agreed to extend the warning one milestone, and then (","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 21 Jun 2016 14:05:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Fwd: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <foolip@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"W dniu wtorek, 3 maja 2016 16:48:00 UTC+2 użytkownik Jochen Eisinger napisał: Contact emails joc...@chromium.org Spec I'd claim that the current spec is contradictionary here, see summary: Summary","payload":{"headers":[{"name":"Date","value":"Sat, 30 Jul 2016 23:06:35 -0700 (PDT)"},{"name":"From","value":"bartoszcymerman1981@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"}]}},{"snippet":"fyi, I rolled this back, as it appears to unnecessarily break sites :-/ On Sun, Jul 31, 2016 at 8:06 AM <bartoszcymerman1981@gmail.com> wrote: W dniu wtorek, 3 maja 2016 16:48:00 UTC+2 użytkownik","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 05 Aug 2016 11:19:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to implement and ship: disallow message loop spinning APIs during microtask execution"},{"name":"To","value":"bartoszcymerman1981@gmail.com, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"It's written inside PaintLayer.h that "We would like to remove this class in the future...","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 05:39:29 -0700 (PDT)"},{"name":"From","value":"curiousitationarionist <vn.haint@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Would PaintLayer be removed entirely?"}]}},{"snippet":"On Tue, May 3, 2016 at 8:39 AM, curiousitationarionist <vn.haint@gmail.com> wrote: It's","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 09:20:01 -0400"},{"name":"Subject","value":"Re: [blink-dev] Would PaintLayer be removed entirely?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"curiousitationarionist <vn.haint@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 1098 Number of untriaged/","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 15:00:41 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"We will be updating the Mac try servers to the latest version of OS X starting at 6pm today Pacific","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 12:24:24 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Chromium-dev <chromium-dev@chromium.org>, Elliott Friedman <friedman@chromium.org>"},{"name":"Subject","value":"[blink-dev] PSA: Mac try server update 6pm PST today"}]}},{"snippet":"Clarification -- the latest version of OS X 10.9.5., ie, applying all updates to 13F1712 here: https:","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 12:26:30 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chromium-dev@chromium.org, friedman@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: PSA: Mac try server update 6pm PST today"}]}},{"snippet":"This work was completed last night uneventfully. We are completing verification before re-enabling","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 13:17:49 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chromium-dev@chromium.org, friedman@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: PSA: Mac try server update 6pm PST today"}]}}]},{"messages":[{"snippet":"Hello, wise soothsayers of Blink. I need help with a very strange WebView/autofill bug which I've","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 10:32:35 -0700"},{"name":"Subject","value":"[blink-dev] traced strange Android TV autofill bug into Blink, need help"},{"name":"From","value":"\"'Paul Miller' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Never mind; this turned out to not to be a Blink bug. On Monday, May 2, 2016 at 10:32:39 AM UTC-7,","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 18:01:50 -0700 (PDT)"},{"name":"From","value":"paulmiller via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"paulmiller@google.com"},{"name":"Subject","value":"[blink-dev] Re: traced strange Android TV autofill bug into Blink, need help"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-04","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 12:34:44 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of April 25"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-04-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 12:35:34 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of April 25"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi IDL FrozenArray supported! TRIM members held a convergence in Munich and discussed a lot. Oilpan:","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 11:54:13 +0900"},{"name":"Subject","value":"[blink-dev] Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-05-02 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 08:19:26 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-05-02"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Seems intentional. See crbug.com/597500. Intents were posted for smaller changes than this, though,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 1 May 2016 14:17:16 +0300"},{"name":"Subject","value":"[blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"},{"name":"To","value":"zboron.lukas@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Chromium-discuss <chromium-discuss@chromium.org>"}]}},{"snippet":"Hi, I made that change. I didn't realize that an Intent would be required for a minor Interop","payload":{"headers":[{"name":"Date","value":"Sun, 1 May 2016 18:45:18 -0700 (PDT)"},{"name":"From","value":"\"'Naina Raisinghani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"zboron.lukas@gmail.com, chromium-discuss@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"}]}},{"snippet":"There are issues other than spec compliance. An intent would have been a cue for me to look into","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 07:43:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"},{"name":"To","value":"Naina Raisinghani <nainar@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, zboron.lukas@gmail.com, Chromium-discuss <chromium-discuss@chromium.org>"}]}},{"snippet":"By the way, I suggest that you subscribe to the following query - Hotlist=Interop status=Fixed,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 3 May 2016 19:12:12 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"Naina Raisinghani <nainar@google.com>, blink-dev <blink-dev@chromium.org>, \"Lukáš Zboroň\" <zboron.lukas@gmail.com>, Chromium-discuss <chromium-discuss@chromium.org>"}]}},{"snippet":"Also, this feed - https://commits.peter.sh/ ☆PhistucK On Tue, May 3, 2016 at 7:12 PM, PhistucK <","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 4 May 2016 20:56:15 +0300"},{"name":"Subject","value":"Re: [blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"Naina Raisinghani <nainar@google.com>, blink-dev <blink-dev@chromium.org>, \"Lukáš Zboroň\" <zboron.lukas@gmail.com>, Chromium-discuss <chromium-discuss@chromium.org>"}]}},{"snippet":"Hi, I have landed a revert for the patch that changed computed content values here: https://","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 19:48:55 -0700 (PDT)"},{"name":"From","value":"\"'Naina Raisinghani' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"zboron.lukas@gmail.com, chromium-discuss@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: [chromium-discuss] CSS content property changed value in chrome 51"}]}}]},{"messages":[{"snippet":"Hi, my name Diana, and I'm emailing you from a US based Agency that specializes in both SEO-(","payload":{"headers":[{"name":"Date","value":"Sat, 30 Apr 2016 15:00:21 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"DIANA | WEB ANALYTICS MEDIA Inc\" <diananash000@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"https://www.chromestatus.com/feature/6630329993396224 should show "No longer pursuing", I","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 30 Apr 2016 10:20:09 +0300"},{"name":"Subject","value":"[blink-dev] <iframe seamless> - Outdated Status?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The latest Chromium beta blog post as well as https://www.chromestatus.com/features/5753701012602880","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 29 Apr 2016 21:56:28 +0300"},{"name":"Subject","value":"[blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"From: blink-dev@chromium.org [mailto:blink-dev@chromium.org] On Behalf Of PhistucK > - The pipe","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"Date","value":"Fri, 29 Apr 2016 19:11:43 +0000"}]}},{"snippet":"While I agree it is much more accurate, developers are more familiar with xy rather than x.prototype.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 29 Apr 2016 22:31:14 +0300"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"Domenic Denicola <d@domenic.me>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"On Fri, Apr 29, 2016 at 2:57 PM PhistucK <phistuck@gmail.com> wrote: The latest Chromium beta","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 20:37:56 +0000"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"Oops, looks like the Chrome Status entry for @apply is also correct (I could have sworn I saw","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 30 Apr 2016 00:10:39 +0300"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"On Fri, 29 Apr 2016 at 14:11 PhistucK <phistuck@gmail.com> wrote: Oops, looks like the Chrome","payload":{"headers":[{"name":"From","value":"Samuel Li <samli@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 21:17:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Ali Juma <ajuma@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"Oops. Right. Then the blog post should just be fixed... ☆PhistucK On Sat, Apr 30, 2016 at 12:17 AM,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 30 Apr 2016 01:05:47 +0300"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"Samuel Li <samli@chromium.org>"},{"name":"Cc","value":"Ali Juma <ajuma@chromium.org>, blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}},{"snippet":"We've deleted the bullets around @apply and canvas filters, and removed the parentheses from","payload":{"headers":[{"name":"From","value":"Ryan Schoen <rschoen@chromium.org>"},{"name":"Date","value":"Mon, 02 May 2016 13:49:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Has @apply Shipped In Chrome 51?"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Samuel Li <samli@chromium.org>"},{"name":"Cc","value":"Ali Juma <ajuma@chromium.org>, blink-dev <blink-dev@chromium.org>, Dru Knox <dknox@chromium.org>, Timothy Loh <timloh@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails pozlen@google.com, costin@google.com (GCM); harkness@chromium.org, peter@chromium.org","payload":{"headers":[{"name":"Date","value":"Fri, 29 Apr 2016 15:16:41 +0100"},{"name":"Subject","value":"[blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"pozlen@google.com, costin@google.com, harkness@chromium.org"}]}},{"snippet":"LGTM1. This is great! Side note: though it is a critical part of the implementation of the end-to-end","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 04 May 2016 16:42:28 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"pozlen@google.com, costin@google.com, harkness@chromium.org"}]}},{"snippet":"LGTM2 :DG< On Wed, May 4, 2016 at 9:42 AM, Chris Harrelson <chrishtr@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 11:07:28 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, pozlen@google.com, Costin Manolache <costin@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"LGTM3 Thanks for the note about the push protocol - I was digging in try to better understand the","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 14:20:03 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, pozlen@google.com, Costin Manolache <costin@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"Gecko already implemented Web Push, as far as I know. Does Blink fully interoperate with Gecko? ☆","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 4 May 2016 22:28:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Peter Beverloo <peter@chromium.org>, blink-dev <blink-dev@chromium.org>, pozlen@google.com, Costin Manolache <costin@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 8:28 PM, PhistucK <phistuck@gmail.com> wrote: Gecko already implemented","payload":{"headers":[{"name":"Date","value":"Wed, 18 May 2016 18:43:20 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"From","value":"Peter Beverloo <peter@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Pinar Ozlen <pozlen@google.com>, Costin Manolache <costin@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"On Wed, May 18, 2016 at 1:43 PM, Peter Beverloo <peter@chromium.org> wrote: On Wed, May 4, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 14:38:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"To","value":"Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Pinar Ozlen <pozlen@google.com>, Costin Manolache <costin@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}},{"snippet":"I'm testing Firefox 46 - same code (slightly modified fork of GoogleChrome/push-encryption-go)","payload":{"headers":[{"name":"From","value":"\"'Costin Manolache' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 18 May 2016 19:05:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: The Web Push Protocol and subscription restrictions"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Peter Beverloo <peter@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Pinar Ozlen <pozlen@google.com>, Jennifer Harkness <harkness@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails msramek@chromium.org, mkwst@chromium.org Spec https://w3c.github.io/webappsec-clear-","payload":{"headers":[{"name":"From","value":"Martin Sramek <msramek@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 15:12:20 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"This sounds a bit dangerous. Are you planning to implement it only for secure connections? On Fri,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 15:13:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Martin Sramek <msramek@chromium.org>, blink-dev@chromium.org"}]}},{"snippet":"+1 to concern about abuse, and possibly limiting this to secure connections. A MITM on an HTTP page","payload":{"headers":[{"name":"Date","value":"Fri, 29 Apr 2016 09:04:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Will the reset also be able to apply to stored permissions (geolocation, cameras, microphones)? We","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 18:33:42 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Charlie Reis <creis@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for the feedback! On Fri, Apr 29, 2016 at 6:33 PM, Harald Alvestrand <hta@google.com>","payload":{"headers":[{"name":"From","value":"\"Martin Šrámek\" <msramek@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 11:44:32 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Mike West <mkwst@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Apr 29, 2016 at 6:33 PM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 11:51:47 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I misremembered, unfortunately - the spec says that persistent device IDs should be cleared when","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 12:32:00 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 2, 2016 at 12:32 PM, Harald Alvestrand <hta@google.com> wrote: > I misremembered","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 12:38:18 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Once you have a box we can point to, I'm sure we can provide the pointer :-) On Mon, May 2, 2016","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 13:11:23 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 2, 2016 at 1:11 PM, Harald Alvestrand <hta@google.com> wrote: > Once you have a","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 13:23:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"what's the political status of the storage spec? as you know we're trying to live with w3c","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 15:26:42 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 2, 2016 at 3:26 PM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 15:41:15 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Anne, then I don't understand your comment upthread ("That persistent device IDs (hopefully","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 16:52:53 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 2, 2016 at 4:52 PM, Harald Alvestrand <hta@google.com> wrote: > Anne, then I don","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 17:00:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Note Chrome currently persists permission rejections so that a site cannot keep asking once a user","payload":{"headers":[{"name":"From","value":"\"'Lucas Garron' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 02 May 2016 20:46:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>, Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, May 2, 2016 at 10:46 PM, Lucas Garron <lgarron@google.com> wrote: > Note Chrome","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 08:00:53 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Lucas Garron <lgarron@google.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Martin Sramek <msramek@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, Lucas is probably just addressing my initial excitement, quote "it does sound like a","payload":{"headers":[{"name":"From","value":"\"Martin Šrámek\" <msramek@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 10:35:25 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Lucas Garron <lgarron@google.com>, Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Indeed, all I wanted was to point out that clearing (blocked) permissions should not be seen as a","payload":{"headers":[{"name":"From","value":"\"'Lucas Garron' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 19:13:02 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"\"Martin Šrámek\" <msramek@chromium.org>, Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hello everyone! After a long silence on this thread I'm happy to announce that we have the first version ready behind the "Experimental web platform features" flag for M54. The Clear-Site","payload":{"headers":[{"name":"From","value":"\"Martin Šrámek\" <msramek@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 16:35:54 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>, Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Lucas Garron <lgarron@google.com>"}]}},{"snippet":"On Mon, Aug 22, 2016 at 5:35 PM, Martin Šrámek <msramek@chromium.org> wrote: password manager auto sign-in What is this? Google-specific on Android? ☆PhistucK","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 22 Aug 2016 20:07:27 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"\"Martin Šrámek\" <msramek@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Lucas Garron <lgarron@google.com>"}]}},{"snippet":"Sorry, when I said "password manager", I meant "credential manager". Specifically, it's this bit. It's grouped with cookies because it has similar semantics to sign-in","payload":{"headers":[{"name":"From","value":"\"Martin Šrámek\" <msramek@chromium.org>"},{"name":"Date","value":"Mon, 22 Aug 2016 19:54:33 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Clear-Site-Data header"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Harald Alvestrand <hta@google.com>, Charlie Reis <creis@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Lucas Garron <lgarron@google.com>"}]}}]},{"messages":[{"snippet":"https://www.chromestatus.com/features/5523910145605632 Status currently indicates no public signals","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 20:58:31 -0700 (PDT)"},{"name":"From","value":"wycats@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] \"High Resolution Time Stamp for Events\" needs updates"}]}},{"snippet":"+Majid Valipour On Thu, Apr 28, 2016 at 11:58 PM <wycats@gmail.com> wrote: https://www.","payload":{"headers":[{"name":"From","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 12:07:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] \"High Resolution Time Stamp for Events\" needs updates"},{"name":"To","value":"wycats@gmail.com, blink-dev <blink-dev@chromium.org>, majidvp@chromium.org"}]}},{"snippet":"Updated the dashboard entry with new information. Thanks! Majid On Fri, Apr 29, 2016 at 8:07 AM","payload":{"headers":[{"name":"From","value":"Majid Valipour <majidvp@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 14:13:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] \"High Resolution Time Stamp for Events\" needs updates"},{"name":"To","value":"Timothy Dresser <tdresser@chromium.org>, wycats@gmail.com, blink-dev <blink-dev@chromium.org>, majidvp@chromium.org"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails nzolghadr@chromium.org, dtapuska@chromium.org Summary Remove dispatching","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 15:29:15 +0000"},{"name":"Subject","value":"[blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dtapuska@chromium.org"}]}},{"snippet":"LGTM1 On Thu, Apr 28, 2016 at 8:29 AM Navid Zolghadr <nzolghadr@chromium.org> wrote: Primary","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 15:57:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dtapuska@chromium.org"}]}},{"snippet":"LGTM2 :DG< On Thu, Apr 28, 2016 at 8:57 AM, Chris Harrelson <chrishtr@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 08:58:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"}]}},{"snippet":"I opened up an issue to look at aligning Edge to this behavior as well: https://developer.microsoft.","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 10:50:11 -0700 (PDT)"},{"name":"From","value":"Jacob Rossi <jrossi@microsoft.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chrishtr@chromium.org, nzolghadr@chromium.org, dtapuska@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"}]}},{"snippet":"You forgot to mention that WebKit apparently behaves as old-Blink. Have you tried reaching out to","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Apr 2016 21:19:01 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>"}]}},{"snippet":"From: Navid Zolghadr [mailto:nzolghadr@chromium.org] > This action practically hides any action","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"CC","value":"\"dtapuska@chromium.org\" <dtapuska@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"Date","value":"Thu, 28 Apr 2016 18:23:33 +0000"}]}},{"snippet":"LGTM3 On Thu, Apr 28, 2016 at 2:19 PM, PhistucK <phistuck@gmail.com> wrote: You forgot to","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 14:58:46 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 11:58 AM, Rick Byers <rbyers@chromium.org> wrote: On Thu, Apr 28, 2016","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 12:16:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Navid Zolghadr <nzolghadr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 2:59 PM Rick Byers <rbyers@chromium.org> wrote: LGTM3 On Thu, Apr 28,","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 19:35:31 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"That WebKit bug has an interesting comment - "Just to complicate things, it seems that Gecko","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 29 Apr 2016 00:57:02 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"I haven't seen such a thing in the spec. At least it didn't catch my eyes. In the case of","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 02:29:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"Hey Olli, can you help us understand the motivation for Gecko's click event behavior on the","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 23:10:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, Olli Pettay <opettay@mozilla.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Motivation is historical. Documented in the relevant w3c bugs... trying to find it. https://www.w3.","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Fri, 29 Apr 2016 11:55:41 +0800"}]}},{"snippet":"Thanks Olli. Most of the concerns in that w3c thread don't seem to apply to at least blink's","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 15:21:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"smaug <smaug@welho.com>"},{"name":"Cc","value":"Navid Zolghadr <nzolghadr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tuesday, May 3, 2016 at 12:21:57 PM UTC-7, Rick Byers wrote: Thanks Olli. Most of the concerns in","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 11:09:22 -0700 (PDT)"},{"name":"From","value":"thecmpguru@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"smaug@welho.com, nzolghadr@chromium.org, chrishtr@chromium.org, dtapuska@chromium.org, dglazkov@chromium.org, Jacob.Rossi@microsoft.com, phistuck@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"}]}},{"snippet":"This is apparently breaking internal usages (middle click to close a tab within the Sources panel in","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sat, 7 May 2016 10:15:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"thecmpguru@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, smaug <smaug@welho.com>, Navid Zolghadr <nzolghadr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>"}]}},{"snippet":"Extensions are also affected and are easier to notify. Can you search the web store internally for","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 16 May 2016 09:09:12 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Antony Sargent <asargent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, smaug <smaug@welho.com>, Navid Zolghadr <nzolghadr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, Jacob Rossi <thecmpguru@gmail.com>"}]}},{"snippet":"As I mentioned it is not only about the event itself. It is also about removing the functionality of","payload":{"headers":[{"name":"From","value":"Navid Zolghadr <nzolghadr@chromium.org>"},{"name":"Date","value":"Mon, 16 May 2016 20:16:07 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Antony Sargent <asargent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, smaug <smaug@welho.com>, Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, Jacob Rossi <thecmpguru@gmail.com>"}]}},{"snippet":"On 05/16/2016 11:16 PM, Navid Zolghadr wrote: > As I mentioned it is not only about the event","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to remove: Non-primary button click event"},{"name":"To","value":"Navid Zolghadr <nzolghadr@chromium.org>, PhistucK <phistuck@gmail.com>, Antony Sargent <asargent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, Dave Tapuska <dtapuska@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Jacob Rossi <Jacob.Rossi@microsoft.com>, Jacob Rossi <thecmpguru@gmail.com>"},{"name":"From","value":"smaug <smaug@welho.com>"},{"name":"Date","value":"Tue, 17 May 2016 00:12:05 +0300"}]}}]},{"messages":[{"snippet":"I think this merits a public service announcement (if not an intent). The long standing issue, crbug.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Apr 2016 10:35:58 +0300"},{"name":"Subject","value":"[blink-dev] Middle Clicks No Longer Fire \"click\" Events"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>"}]}},{"snippet":"Yes it was our mistake. This was pointed out to us last night although we are changing behaviour to","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 07:56:45 -0400"},{"name":"Subject","value":"[blink-dev] Re: Middle Clicks No Longer Fire \"click\" Events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Does this only apply to links? Is it still possible to listen for middle clicks on arbitrary elements","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 04:58:40 -0700 (PDT)"},{"name":"From","value":"\"Benjamin Strauß\" <benmastra@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dtapuska@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Middle Clicks No Longer Fire \"click\" Events"}]}},{"snippet":"Look for the intent to remove discussion. On Apr 28, 2016 07:58, "Benjamin Strauß" <","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 08:04:28 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Middle Clicks No Longer Fire \"click\" Events"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"Benjamin Strauß\" <benmastra@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The Blink Worker team works on worker threads. News: New team member! Welcome shimazu. Tokyo will be","payload":{"headers":[{"name":"From","value":"Matt Falkenhagen <falken@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 15:40:14 +0900"},{"name":"Subject","value":"[blink-dev] Worker/ServiceWorker Status (April 28, 2016)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi folks. We're still moving towards removing AppCache on insecure origins. We've added stats","payload":{"headers":[{"name":"From","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 01:16:24 +0000"},{"name":"Subject","value":"[blink-dev] Intent to remove AppCache on insecure origins update"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is app cache more insecure over http than just rewriting the http responses with a malicious value","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 19:03:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove AppCache on insecure origins update"},{"name":"To","value":"Joel Weinberger <jww@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"AppCache can do this for an entire site, not just sub-resources. So yes, that's the attack, and","payload":{"headers":[{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 10:36:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to remove AppCache on insecure origins update"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joel Weinberger <jww@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Defining and implementing a new 'offline only' mode of operation is no small task. I'm","payload":{"headers":[{"name":"Date","value":"Mon, 13 Jun 2016 16:36:07 -0700 (PDT)"},{"name":"From","value":"michaeln@chromium.org"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to remove AppCache on insecure origins update"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 16:53:29 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-04-26)"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, April 27: Recent updates: We're continuing","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 16:40:40 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, April 27, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails dtapuska@chromium.org Summary Mark the field keyIdentifier on","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 19:19:49 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM! (although I'm not sure if my vote here has any weight) This attribute was briefly part of","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 18:04:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"\"'Gary Kačmarčík (Кошмарчик)' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I've love to see us get rid of this API, but given that the vast majority of usage likely comes","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 21:15:26 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"To","value":"\"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"From my understanding Chromium does not implement KeyboardEvent.char. So I'll be your hero and","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 21:15:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"Gary Kačmarčík\" <garykac@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"'key' and 'keyIdentifier' are not equivalent, so I'd be surprised if there's","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 18:21:05 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"Wez <wez@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Here is some analysis. From http archive 4676 resources were loaded that contain the keyword '","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 12:19:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"Wez <wez@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So I should have added a summary; I think based on this data I think it would be quite easy to remove","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 12:57:45 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"\"'Dave Tapuska' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Wez <wez@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So you're saying that based on this analysis you can't find a single site in the Alexa top","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 13:13:59 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"To","value":"Dave Tapuska <dtapuska@google.com>"},{"name":"Cc","value":"Wez <wez@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'd go with #1 for a single milestone. It's a shame that frameworks end up making it so hard","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 10:51:40 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"Wez <wez@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@google.com>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Note that the Developer Tools, the login bubble(?) and more may be using it, so eliminate in-house","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Apr 2016 20:52:06 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@google.com>, Wez <wez@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 10:52 AM, PhistucK <phistuck@gmail.com> wrote: Note that the Developer","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 11:04:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"\"'Gary Kačmarčík (Кошмарчик)' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@google.com>, Wez <wez@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I surely will not, since that browser does not have this API, nor will it ever be updated. :) But if","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Apr 2016 21:08:46 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"To","value":"\"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Dave Tapuska <dtapuska@google.com>, Wez <wez@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 to deprecate for one milestone then remove (#1) For some other attribute I researched I found","payload":{"headers":[{"name":"Date","value":"Fri, 29 Apr 2016 11:02:13 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@google.com>, Wez <wez@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Fri, Apr 29, 2016 at 2:02 AM Philip Jägenstedt <philipj@opera.com> wrote: LGTM2 to","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 15:11:24 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate: KeyboardEvent.keyIdentifier"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Dave Tapuska <dtapuska@google.com>, Wez <wez@chromium.org>, \"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Dear all, I have one question about the HTML5 media player full screen playback, For phone device,","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 06:19:08 +0800"},{"name":"Subject","value":"[blink-dev] Fake full screen mode of media playback"},{"name":"From","value":"William Xie <william.xie@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Frank Liberato <liberato@google.com>, Chris Watkins <watk@google.com>, Dale Curtis <dalecurtis@chromium.org>"}]}},{"snippet":"I think I can provide some context on the question: For fullscreen video on Android we decode to a","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 18:08:21 -0700 (PDT)"},{"name":"From","value":"Chris Watkins <watk@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"liberato@google.com, dalecurtis@chromium.org, william.xie@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Fake full screen mode of media playback"}]}},{"snippet":"On Wed, Apr 27, 2016 at 6:08 PM, Chris Watkins <watk@chromium.org> wrote: I think I can provide","payload":{"headers":[{"name":"From","value":"David Dorwin <ddorwin@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 19:15:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Fake full screen mode of media playback"},{"name":"To","value":"Chris Watkins <watk@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Frank Liberato <liberato@google.com>, Dale Curtis <dalecurtis@chromium.org>, william.xie@chromium.org"}]}},{"snippet":"I don't think we should mess with pages here, we need to just fix the implementation to correctly","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 22:09:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Fake full screen mode of media playback"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"David Dorwin <ddorwin@chromium.org>"},{"name":"Cc","value":"Dale Curtis <dalecurtis@chromium.org>, Christopher Watkins <watk@chromium.org>, Frank Liberato <liberato@google.com>, William Xie <william.xie@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Elliott, The problem is the customized player UI sends full screen event to a DIV not the","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 15:43:51 +0800"},{"name":"Subject","value":"Re: [blink-dev] Re: Fake full screen mode of media playback"},{"name":"From","value":"William Xie <william.xie@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"David Dorwin <ddorwin@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Christopher Watkins <watk@chromium.org>, Frank Liberato <liberato@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I don't think the video should go full screen, that would hide the custom player UI and all the","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 08:09:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Fake full screen mode of media playback"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"William Xie <william.xie@chromium.org>"},{"name":"Cc","value":"Dale Curtis <dalecurtis@chromium.org>, Frank Liberato <liberato@google.com>, Christopher Watkins <watk@chromium.org>, David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":""layer hoisting": i'm not very familiar with blink's compositing. The closest match","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 09:00:50 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Fake full screen mode of media playback"},{"name":"From","value":"\"'Frank Liberato' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"William Xie <william.xie@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Christopher Watkins <watk@chromium.org>, David Dorwin <ddorwin@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi blink-devs, It's now almost ready to land a change to lock down copying of PassOwnPtrs. Unless","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 19:38:02 +0900"},{"name":"Subject","value":"[blink-dev] PSA: PassOwnPtr will soon become move-only!"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}}]},{"messages":[{"snippet":"The CanIUse entry for background-attachment mentions a known Chrome issue - "Chrome has an issue","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 27 Apr 2016 08:30:05 +0300"},{"name":"Subject","value":"[blink-dev] An Issue With will-change And background-attachment: fixed"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"You might be talking about this bug: https://bugs.chromium.org/p/chromium/issues/detail?id=586513 aka","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 18:07:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] An Issue With will-change And background-attachment: fixed"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Since CanIUse specifically mentions will-change, I fear it is not the same issue and we might be","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 28 Apr 2016 10:22:30 +0300"},{"name":"Subject","value":"Re: [blink-dev] An Issue With will-change And background-attachment: fixed"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"It was recently discovered that WebAudio's lowpass and highpass filter cannot represent all","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 13:08:46 -0700"},{"name":"Subject","value":"[blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":""Trivial" changes (where "trivial" is left somewhat to the discretion of reviews","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 18:15:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That is a fantastic demo and visualization, Ray! The legend says that yellow and blue should be Orig","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 16:41:56 +0200"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Agreed. Obviously a lot of bug fixes can be "user visible" and occasionally even "","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 10:50:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"One thing to note is that the intents and the entries on chromestatus.com are how our developer","payload":{"headers":[{"name":"From","value":"Alex Komoroske <komoroske@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 07:59:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Jeremy Roman <jbroman@chromium.org>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 27, 2016 at 7:41 AM, Philip Jägenstedt <philipj@opera.com> wrote: That is a","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 08:38:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 27, 2016 at 7:50 AM, Rick Byers <rbyers@chromium.org> wrote: Agreed. Obviously a","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 08:45:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 27, 2016 at 11:38 AM, Raymond Toy <rtoy@google.com> wrote: On Wed, Apr 27, 2016 at","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 11:46:02 -0400"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 27, 2016 at 5:38 PM, Raymond Toy <rtoy@google.com> wrote: On Wed, Apr 27, 2016 at 7","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 12:17:06 +0200"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 27, 2016 at 8:46 AM, Jeremy Roman <jbroman@chromium.org> wrote: On Wed, Apr 27,","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 09:33:43 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 3:17 AM, Philip Jägenstedt <philipj@opera.com> wrote: On Wed, Apr 27,","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 09:37:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For the record: https://www.chromestatus.com/features/5687523284090880 is the feature entry. I'","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 11:45:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 12:33 PM, Raymond Toy <rtoy@google.com> wrote: On Wed, Apr 27, 2016 at","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 16:00:23 -0400"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 4:00 PM, Jeremy Roman <jbroman@chromium.org> wrote: On Thu, Apr 28,","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 16:04:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, \"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 1:04 PM, Rick Byers <rbyers@chromium.org> wrote: On Thu, Apr 28, 2016","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 13:08:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Jeremy Roman <jbroman@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 28, 2016 at 1:00 PM, Jeremy Roman <jbroman@chromium.org> wrote: On Thu, Apr 28,","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 13:11:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For the record, UMA stats for the Q value has landed. (No results yet). We won't try to get this","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 12:38:02 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Results are in and as somewhat expected Q=1 is the most common (83%) Q value for lowpass filters. The","payload":{"headers":[{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"Date","value":"Wed, 18 May 2016 12:28:35 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"FWIW, I'm going to land this change in today or tomorrow. FF is going to land these changes very","payload":{"headers":[{"name":"From","value":"Raymond Toy <rtoy@google.com>"},{"name":"Date","value":"Mon, 13 Jun 2016 08:52:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] Is intent to implement and ship needed for all user-visible changes?"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com Specs Generic Sensor API:","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 17:23:43 +0300"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"From","value":"\"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Tobie Langel <tobie@sensors.codespeaks.com>, Anssi Kostiainen <anssi.kostiainen@intel.com>"}]}},{"snippet":"[+cc folks who have indicated interest] Hi, Just in case someone is wondering what do MEMS (Micro","payload":{"headers":[{"name":"From","value":"\"Kostiainen, Anssi\" <anssi.kostiainen@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"CC","value":"\"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>, Tobie Langel <tobie@sensors.codespeaks.com>, Paul Bakaus <pbakaus@google.com>, Alex Russell <slightlyoff@google.com>, Paul Kinlan <paulkinlan@google.com>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"Date","value":"Thu, 28 Apr 2016 08:27:07 +0000"}]}},{"snippet":"Hey all, Your local TAG member here! We've taken a first read here: https://github.com/w3ctag/","payload":{"headers":[{"name":"From","value":"Alex Russell <slightlyoff@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 10:53:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"To","value":"\"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Tobie Langel <tobie@sensors.codespeaks.com>, Anssi Kostiainen <anssi.kostiainen@intel.com>"}]}},{"snippet":"Hi, Based on feedback we've received from initial review for the patches that Riju sent and","payload":{"headers":[{"name":"Date","value":"Fri, 3 Jun 2016 05:37:20 -0700 (PDT)"},{"name":"From","value":"Alexander <alexander.shalamov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com, anssi.kostiainen@intel.com, slightlyoff@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"}]}},{"snippet":"The abstraction looks good but I'm concerned that the use of shared memory here is a bit of","payload":{"headers":[{"name":"From","value":"Reilly Grant <reillyg@chromium.org>"},{"name":"Date","value":"Fri, 03 Jun 2016 18:28:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"To","value":"Alexander <alexander.shalamov@intel.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com, anssi.kostiainen@intel.com, slightlyoff@chromium.org"}]}},{"snippet":"Thank you for looking Reilly. We used shared memory to reduce IPC latency for sensors like Gyroscope,","payload":{"headers":[{"name":"Date","value":"Mon, 6 Jun 2016 03:04:04 -0700 (PDT)"},{"name":"From","value":"Alexander <alexander.shalamov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"alexander.shalamov@intel.com, rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com, anssi.kostiainen@intel.com, slightlyoff@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"}]}},{"snippet":"Seems strange that avoiding IPC would be necessary for eg. Gryroscope but not for touch events (both","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 11:22:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"To","value":"Alexander <alexander.shalamov@intel.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>, tobie@sensors.codespeaks.com, \"Kostiainen, Anssi\" <anssi.kostiainen@intel.com>, Alex Russell <slightlyoff@chromium.org>, Tim Dresser <tdresser@chromium.org>"}]}},{"snippet":"See also the Intent to implement and ship Device Motion API, where shared memory was introduced. /m","payload":{"headers":[{"name":"From","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"Date","value":"Mon, 6 Jun 2016 17:18:35 +0100"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Alexander <alexander.shalamov@intel.com>, blink-dev <blink-dev@chromium.org>, \"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>, tobie@sensors.codespeaks.com, \"Kostiainen, Anssi\" <anssi.kostiainen@intel.com>, Alex Russell <slightlyoff@chromium.org>, Tim Dresser <tdresser@chromium.org>, timvolodine@chromium.org"}]}},{"snippet":"I took a look at the mechanism used for device orientation, which is simply reading from the shared","payload":{"headers":[{"name":"From","value":"Reilly Grant <reillyg@chromium.org>"},{"name":"Date","value":"Mon, 06 Jun 2016 21:39:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"},{"name":"To","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Alexander <alexander.shalamov@intel.com>, blink-dev <blink-dev@chromium.org>, \"Bhaumik, Rijubrata\" <rijubrata.bhaumik@intel.com>, tobie@sensors.codespeaks.com, \"Kostiainen, Anssi\" <anssi.kostiainen@intel.com>, Alex Russell <slightlyoff@chromium.org>, Tim Dresser <tdresser@chromium.org>, timvolodine@chromium.org"}]}},{"snippet":"Hi Reilly, others, Our way of shared memory usage for streaming sensors is basically the same as the","payload":{"headers":[{"name":"Date","value":"Tue, 7 Jun 2016 04:18:26 -0700 (PDT)"},{"name":"From","value":"Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mvanouwerkerk@chromium.org, rbyers@chromium.org, alexander.shalamov@intel.com, rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com, anssi.kostiainen@intel.com, slightlyoff@chromium.org, tdresser@chromium.org, timvolodine@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"}]}},{"snippet":"Hi all, We are planning to start upstreaming Generic Sensor API enablers early next week, if anyone","payload":{"headers":[{"name":"Date","value":"Thu, 9 Jun 2016 04:50:53 -0700 (PDT)"},{"name":"From","value":"Alexander <alexander.shalamov@intel.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"mvanouwerkerk@chromium.org, rbyers@chromium.org, alexander.shalamov@intel.com, rijubrata.bhaumik@intel.com, tobie@sensors.codespeaks.com, anssi.kostiainen@intel.com, slightlyoff@chromium.org, tdresser@chromium.org, timvolodine@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Generic Sensor & Ambient Light Sensor APIs"}]}}]},{"messages":[{"snippet":"Contact emails dtapuska@chromium.org Spec https://dom.spec.whatwg.org/#dom-eventtarget-","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 09:24:32 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: addEventListener AddEventListenerOptions API"},{"name":"From","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Tue, Apr 26, 2016 at 3:24 PM, Dave Tapuska <dtapuska@chromium.org> wrote: Contact","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 16:13:56 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: addEventListener AddEventListenerOptions API"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Apr 26, 2016 at 7:13 AM Philip Jägenstedt <philipj@opera.com> wrote: LGTM1 On Tue","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 15:15:51 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: addEventListener AddEventListenerOptions API"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Dave Tapuska <dtapuska@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, Apr 26, 2016 at 8:15 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 09:48:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: addEventListener AddEventListenerOptions API"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Dave Tapuska <dtapuska@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 17:27:10 +0900"},{"name":"Subject","value":"[blink-dev] Layout Team Status - April 25, 2016"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"bcc: blink-dev The Blink Infra team manages blink-specific infra needs for making blink engineers","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 23:59:56 +0000"},{"name":"Subject","value":"[blink-dev] blink infra owners notes 4/25/16"},{"name":"To","value":"\"blink-infra@chromium.org\" <blink-infra@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails nharper@chromium.org, awhalley@chromium.org, vanupam@chromium.org Specs http://","payload":{"headers":[{"name":"From","value":"Nick Harper <nharper@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 14:36:41 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Token Binding"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}},{"snippet":"On Mon, Apr 25, 2016 at 2:36 PM, Nick Harper <nharper@chromium.org> wrote: Debuggability Token","payload":{"headers":[{"name":"From","value":"Ryan Sleevi <rsleevi@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 17:17:10 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Token Binding"},{"name":"To","value":"Nick Harper <nharper@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}},{"snippet":"On Mon, Apr 25, 2016 at 11:36 PM, Nick Harper <nharper@chromium.org> wrote: >","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 10:19:53 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Token Binding"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Nick Harper <nharper@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}},{"snippet":"On Mon, Apr 25, 2016 at 5:17 PM, Ryan Sleevi <rsleevi@chromium.org> wrote: - Because of this","payload":{"headers":[{"name":"From","value":"Nick Harper <nharper@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 09:44:07 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Ship: Token Binding"},{"name":"To","value":"Ryan Sleevi <rsleevi@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}},{"snippet":"On Tue, Apr 26, 2016 at 1:19 AM, Anne van Kesteren <annevk@annevk.nl> wrote: On Mon, Apr 25,","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 09:48:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Token Binding"},{"name":"From","value":"\"'Vinod Anupam' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Nick Harper <nharper@chromium.org>, blink-dev <blink-dev@chromium.org>, net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}},{"snippet":"I'm going to pause this Intent to Ship for now while we incubate this and work on resolving the","payload":{"headers":[{"name":"From","value":"Nick Harper <nharper@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 13:46:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Token Binding"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Vinod Anupam <vanupam@google.com>, Anne van Kesteren <annevk@annevk.nl>, net-dev <net-dev@chromium.org>, awhalley@chromium.org, vanupam@chromium.org"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 1098 Number of untriaged/","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 11:47:39 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-04","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 12:07:18 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of April 18"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-04-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 12:40:31 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of April 18"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 17:52:55 +0900"},{"name":"Subject","value":"[blink-dev] Loading team bi-weekly status updates (~Apr 22, 2016)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Chromium Loading Performance <loading-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails eae@chromium.org, leviw@chromium.org, ojan@chromium.org Spec https://drafts.csswg.org/","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 16:52:14 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Ship: CSS Containment"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry for the intent-to-implement kind of notes, but here we go. On Mon, Apr 25, 2016 at 10:52 AM,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 25 Apr 2016 11:11:12 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For web developers, I'll signal interest from Facebook here. This spec seems useful in helping to","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 11:01:39 -0700 (PDT)"},{"name":"From","value":"ben.maurer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"eae@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"}]}},{"snippet":"Thanks for this feedback and engagement, it is really useful! On Mon, Apr 25, 2016 at 11:01 AM <","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 18:20:46 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"ben.maurer@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"eae@google.com"}]}},{"snippet":"On Mon, Apr 25, 2016 at 11:20 AM, Chris Harrelson <chrishtr@chromium.org> wrote: This is an","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 11:38:28 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"From","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, eae@google.com"}]}},{"snippet":"On Mon, Apr 25, 2016 at 11:38 AM Ben Maurer <ben.maurer@gmail.com> wrote: On Mon, Apr 25, 2016","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 19:46:35 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Ben Maurer <ben.maurer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, eae@google.com"}]}},{"snippet":"> Since there are no public signals from any other browser (not even one), I > would say that","payload":{"headers":[{"name":"Date","value":"Sat, 30 Apr 2016 09:59:38 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Fri, Apr 29, 2016 at 5:59 PM 'Emil A Eklund' via blink-dev <blink-dev@chromium.","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 22:47:32 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Emil A Eklund <eae@google.com>, PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Saturday 2016-04-30 09:59 +0900, 'Emil A Eklund' via blink-dev wrote: > > Since","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 18:02:12 -0700"},{"name":"From","value":"\"L. David Baron\" <dbaron@dbaron.org>"},{"name":"To","value":"Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"}]}},{"snippet":"On Tuesday 2016-05-03 18:02 -0700, L. David Baron wrote: > On Saturday 2016-04-30 09:59 +0900,","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 18:07:03 -0700"},{"name":"From","value":"\"L. David Baron\" <dbaron@dbaron.org>"},{"name":"To","value":"Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"}]}},{"snippet":"On Wed, May 4, 2016 at 3:07 AM, L. David Baron <dbaron@dbaron.org> wrote: > On Tuesday 2016-","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 12:14:18 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"L. David Baron\" <dbaron@dbaron.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 6:14 AM, 'Emil A Eklund' via blink-dev <blink-dev@chromium.org>","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 15:14:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"\"L. David Baron\" <dbaron@dbaron.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 12:14 PM Rick Byers <rbyers@chromium.org> wrote: On Wed, May 4, 2016 at","payload":{"headers":[{"name":"From","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Date","value":"Fri, 06 May 2016 17:42:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Emil A Eklund <eae@google.com>"},{"name":"Cc","value":"\"L. David Baron\" <dbaron@dbaron.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2.","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 09:49:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Ojan Vafai <ojan@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Emil A Eklund <eae@google.com>, \"L. David Baron\" <dbaron@dbaron.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Tue, May 10, 2016 at 12:49 PM, Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2.","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 13:46:40 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: CSS Containment"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Ojan Vafai <ojan@chromium.org>, Emil A Eklund <eae@google.com>, \"L. David Baron\" <dbaron@dbaron.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello, I was looking for Google Alerts and found this area of the settings page. There is a warning","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 00:04:42 -0700 (PDT)"},{"name":"From","value":"37jmco@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Received a warning on this page"}]}},{"snippet":""this area", "a warning"... You are too vague for us to help you. I suspect you","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 25 Apr 2016 10:45:01 +0300"},{"name":"Subject","value":"Re: [blink-dev] Received a warning on this page"},{"name":"To","value":"37jmco@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-04-25 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 08:26:59 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-04-25"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"G-372508 is your Google verification code.","payload":{"headers":[{"name":"Date","value":"Sat, 23 Apr 2016 15:51:46 -0700 (PDT)"},{"name":"From","value":"BlackStarGr8 AutumnStarGr8 <realcloud86@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] G-372508 is your Google verification code."}]}},{"snippet":"On Sunday, 24 April 2016 01:51:46 UTC+3, BlackStarGr8 AutumnStarGr8 wrote: G-372508 is your Google","payload":{"headers":[{"name":"Date","value":"Sun, 24 Apr 2016 06:23:48 -0700 (PDT)"},{"name":"From","value":"tapio.hanninen43@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: G-372508 is your Google verification code."}]}},{"snippet":"On Sunday, 24 April 2016 01:51:46 UTC+3, BlackStarGr8 AutumnStarGr8 wrote: G-372508 is your Google","payload":{"headers":[{"name":"Date","value":"Sun, 24 Apr 2016 06:34:23 -0700 (PDT)"},{"name":"From","value":"tapio.hanninen43@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: G-372508 is your Google verification code."}]}},{"snippet":"On Sunday, 24 April 2016 01:51:46 UTC+3, BlackStarGr8 AutumnStarGr8 wrote: G-372508 is your Google","payload":{"headers":[{"name":"Date","value":"Sun, 24 Apr 2016 06:35:50 -0700 (PDT)"},{"name":"From","value":"tapio.hanninen43@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: G-372508 is your Google verification code."}]}}]},{"messages":[{"snippet":"First of all, it's actually already removed from trunk. I realised that an email to blink-dev","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Cc","value":"Dominick Ng <dominickn@chromium.org>, Marcos Caceres <mcaceres@mozilla.com>"},{"name":"Subject","value":"[blink-dev] Intent to Unship: Manifest.Icons.density"},{"name":"Date","value":"Fri, 22 Apr 2016 20:44:10 +0100"}]}},{"snippet":"How many manifests Chrome encounters? ☆PhistucK On Fri, Apr 22, 2016 at 10:44 PM, Mounir Lamouri <","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Sun, 24 Apr 2016 07:54:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Unship: Manifest.Icons.density"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dominick Ng <dominickn@chromium.org>, Marcos Caceres <mcaceres@mozilla.com>"}]}},{"snippet":"My reading of this is it should be safe for developers to completely drop any usage of device `","payload":{"headers":[{"name":"Date","value":"Sun, 24 Apr 2016 08:20:19 -0700 (PDT)"},{"name":"From","value":"Addy Osmani <addyo@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dominickn@chromium.org, mcaceres@mozilla.com"},{"name":"Subject","value":"[blink-dev] Re: Intent to Unship: Manifest.Icons.density"}]}},{"snippet":"On Sun, 24 Apr 2016, at 05:54, PhistucK wrote: > How many manifests Chrome encounters? Hmm, I'","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dominickn@chromium.org, mcaceres@mozilla.com"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Unship: Manifest.Icons.density"},{"name":"Date","value":"Mon, 25 Apr 2016 15:42:24 +0100"}]}},{"snippet":"Sorry for the delay (I think this didn't hit our http://bit.ly/blink-intents radar because the","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 15:16:34 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Unship: Manifest.Icons.density"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>, dominickn@chromium.org, mcaceres@mozilla.com"}]}},{"snippet":"LGTM2 On Wed, May 4, 2016 at 12:16 PM Rick Byers <rbyers@chromium.org> wrote: Sorry for the","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 04 May 2016 19:19:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Unship: Manifest.Icons.density"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>, dominickn@chromium.org, mcaceres@mozilla.com"}]}},{"snippet":"We've not mentioned density for a while now (at least in the examples), the only reference we","payload":{"headers":[{"name":"From","value":"\"'Paul Kinlan' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 04 May 2016 22:55:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Unship: Manifest.Icons.density"},{"name":"To","value":"Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"dominickn@chromium.org, mcaceres@mozilla.com"}]}},{"snippet":"LGTM3 On Wed, May 4, 2016 at 3:55 PM, 'Paul Kinlan' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 09:48:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Unship: Manifest.Icons.density"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Paul Kinlan <paulkinlan@google.com>"},{"name":"Cc","value":"Addy Osmani <addyo@chromium.org>, blink-dev <blink-dev@chromium.org>, dominickn@chromium.org, Marcos Caceres <mcaceres@mozilla.com>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails jsbell@chromium.org Summary Remove URL.createObjectURL, URL.","payload":{"headers":[{"name":"Date","value":"Fri, 22 Apr 2016 11:42:23 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Fri, Apr 22, 2016 at 11:42 AM 'Joshua Bell' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Fri, 22 Apr 2016 21:20:03 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Seems likely to be low risk, but in general I don't like relying on "hope" when it","payload":{"headers":[{"name":"Date","value":"Fri, 22 Apr 2016 20:06:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"Unfortunately use counters aren't supported yet in shared and service workers. So getting data","payload":{"headers":[{"name":"Date","value":"Fri, 22 Apr 2016 17:13:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@google.com>"},{"name":"Cc","value":"Chris harrelson <chrishtr@chromium.org>, Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Apr 22, 2016 at 5:14 PM Marijn Kruisselbrink <mek@chromium.org> wrote: Unfortunately","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Sat, 23 Apr 2016 00:36:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>, Rick Byers <rbyers@google.com>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I believe the worker team has it as one of their okr's this quarter. I'm sure they'll","payload":{"headers":[{"name":"Date","value":"Fri, 22 Apr 2016 17:38:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"To","value":"Chris harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"Yes, this is on our goals for Q2. The tracking bug is https://bugs.chromium.org/p/chromium/issues/","payload":{"headers":[{"name":"From","value":"Matt Falkenhagen <falken@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 13:51:59 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"Cc","value":"Chris harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"Thanks. I added a couple notes to the bug. I also did a little digging with httparchive to see if","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 14:38:51 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Matt Falkenhagen <falken@chromium.org>"},{"name":"Cc","value":"Marijn Kruisselbrink <mek@chromium.org>, Chris harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Joshua Bell <jsbell@google.com>"}]}},{"snippet":"Since no-one else has commented, I've gone ahead and created a CL to add a deprecation warning","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 14:05:56 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@google.com>, Shruthi Sreekanta <sshruthi@google.com>"},{"name":"Cc","value":"Matt Falkenhagen <falken@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Chris harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, but I also think getting UMA and UseCounters fixed for both fast shutdown and workers is the P0","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 14:10:13 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"Marijn Kruisselbrink <mek@chromium.org>, Matt Falkenhagen <falken@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Chris harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"They have been fixed for fast shutdown, no? https://bugs.chromium.org/p/chromium/issues/detail?id=","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Mon, 2 May 2016 17:12:25 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, Marijn Kruisselbrink <mek@chromium.org>, Matt Falkenhagen <falken@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Chris harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yay! Carry on then. :) On May 2, 2016 5:13 PM, "Christian Biesinger" <cbiesinger@","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 14:20:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Cc","value":"Marijn Kruisselbrink <mek@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Matt Falkenhagen <falken@chromium.org>, Joshua Bell <jsbell@google.com>, Chris harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That sounds good to me Josh. I don't see any better option than just going with a deprecation","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 14:33:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Matt Falkenhagen <falken@chromium.org>, Joshua Bell <jsbell@google.com>, Chris harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So, LGTM2 to deprecate and remove according to that plan. Chris, does your LGTM still stand after","payload":{"headers":[{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 14:34:15 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Matt Falkenhagen <falken@chromium.org>, Joshua Bell <jsbell@google.com>, Chris harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, still LGTM. On Tue, May 3, 2016 at 11:34 AM 'Rick Byers' via blink-dev <blink-dev@","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 03 May 2016 19:40:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"To","value":"Rick Byers <rbyers@google.com>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Christian Biesinger <cbiesinger@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Matt Falkenhagen <falken@chromium.org>, Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 :DG< On Tue, May 3, 2016 at 12:40 PM, Chris Harrelson <chrishtr@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Mon, 9 May 2016 11:23:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: Blob URLs created in Service Workers"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@google.com>, Elliott Sprehn <esprehn@chromium.org>, Christian Biesinger <cbiesinger@chromium.org>, Marijn Kruisselbrink <mek@chromium.org>, Shruthi Sreekanta <sshruthi@google.com>, Matt Falkenhagen <falken@chromium.org>, Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails kojii@chromium.org,drott@chromium.org,szager@chromium.org Spec https://drafts.csswg.","payload":{"headers":[{"name":"From","value":"Koji Ishii <kojii@chromium.org>"},{"name":"Date","value":"Fri, 22 Apr 2016 15:21:00 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement: CSS hyphens property"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"eae <eae@chromium.org>, \"Dominik Röttsches\" <drott@chromium.org>, szager@chromium.org"}]}},{"snippet":"Yay! As for other platforms, Linux in this case, I have several hyphen-related packages installed.","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 22 Apr 2016 16:25:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: CSS hyphens property"},{"name":"To","value":"Koji Ishii <kojii@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, eae <eae@chromium.org>, \"Dominik Röttsches\" <drott@chromium.org>, Stefan Zager <szager@chromium.org>"}]}},{"snippet":"LGTM On Friday, April 22, 2016 at 12:21:25 AM UTC-6, Koji Ishii wrote: Contact emails kojii@chromium.","payload":{"headers":[{"name":"Date","value":"Fri, 22 Apr 2016 13:54:18 -0700 (PDT)"},{"name":"From","value":"Glenn Adams <glenn@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: CSS hyphens property"}]}}]},{"messages":[{"snippet":"Please find the attached TT payment and confirm your bank account details. Behnam Azadi CNPCI(Iran) -","payload":{"headers":[{"name":"From","value":"Autumn Dodge <dodgea@stjohns.edu>"},{"name":"Date","value":"Fri, 22 Apr 2016 02:03:34 -0400"},{"name":"Subject","value":"[blink-dev] Balance Payment Find Attached TT COPY"},{"name":"To","value":"Undisclosed recipients:;"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 17:10:21 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-04-19)"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I've just discovered it exists yesterday, so I'm guessing the answer is no, especially since","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:01:11 -0700"},{"name":"Subject","value":"[blink-dev] anyone use the 'Blink Linux LSAN MSAN' bot on the chromium.fyi waterfall?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails xidachen@chromium.org, junov@chromium.org Spec https://html.spec.whatwg.org/#images","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 11:17:06 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Thu, Apr 21, 2016 at 11:17 AM, Xida Chen <xidachen@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 11:20:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"What will Blink's actual behavior be if you try to use an ImageBitmap after close()? It seems","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:33:07 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 21, 2016 at 5:33 PM, Chris Harrelson <chrishtr@chromium.org> wrote: > What will","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 17:38:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Chris, The spec says: imageBitmap . close () Releases imageBitmap 's underlying bitmap data.","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 11:44:22 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 21, 2016 at 8:45 AM Xida Chen <xidachen@chromium.org> wrote: Hi Chris, The spec","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:47:46 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 21, 2016 at 8:38 AM Anne van Kesteren <annevk@annevk.nl> wrote: On Thu, Apr 21,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:49:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 21, 2016 at 5:49 PM, Chris Harrelson <chrishtr@chromium.org> wrote: > The spec","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 18:03:40 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"From","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ok. Xida, you should change your implementation to match. And file a bug for Firefox too, if it doesn","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 16:07:11 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Anne van Kesteren <annevk@annevk.nl>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I have checked Firefox's behavior and filed a bug here: https://bugzilla.mozilla.org/show_bug.cgi","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Fri, 22 Apr 2016 13:46:07 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Anne van Kesteren <annevk@annevk.nl>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Apr 22, 2016 at 7:46 PM, Xida Chen <xidachen@chromium.org> wrote: I have checked","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 16:27:53 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Anne van Kesteren <annevk@annevk.nl>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 21, 2016 at 11:47 AM, Chris Harrelson <chrishtr@chromium.org> wrote: On Thu, Apr 21","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 10:29:56 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 26, 2016 at 4:29 PM, Xida Chen <xidachen@chromium.org> wrote: On Thu, Apr 21, 2016","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 17:17:57 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: ImageBitmap.close()"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"OK, I've added "and Ship" in https://bit.ly/blinkintents and to this thread. LGTM1 On","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 15:20:29 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: WebAudio: min/max attributes for AudioParams"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Thu, Apr 21, 2016 at 6:20 AM Philip Jägenstedt <philipj@opera.com> wrote: OK, I've","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:08:16 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: min/max attributes for AudioParams"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Thu, Apr 21, 2016 at 11:08 AM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 11:16:33 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio: min/max attributes for AudioParams"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Raymond Toy <rtoy@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails sigbjornf@opera.com Summary Deprecate and retire window.postMessage(","payload":{"headers":[{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"Date","value":"Thu, 21 Apr 2016 11:47:52 +0200"}]}},{"snippet":"LGTM1 On Thu, Apr 21, 2016 at 11:47 AM, Sigbjorn Finne <sigbjornf@opera.com> wrote: Primary eng","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 12:03:35 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Thu, Apr 21, 2016 at 3:03 AM Philip Jägenstedt <philipj@opera.com> wrote: LGTM1 On Thu","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 15:07:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"0.002% is still a non-trivial amount of usage so I think it's worth a little additional care here","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 11:10:50 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Sigbjorn Finne <sigbjornf@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks rbyers@ for jumping right in and helping out, appreciate it. Edge does not support this,","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Date","value":"Thu, 21 Apr 2016 20:10:21 +0200"}]}},{"snippet":"Sorry for the delay. I got data back from the cluster run, but unfortunately it came up empty -","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 27 Apr 2016 11:10:54 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: window.postMessage(message, transferables, targetOrigin) legacy overload"},{"name":"To","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, April 20: Recent updates: We're continuing","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 13:20:29 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, April 20, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails hta@google.com Spec http://w3c.github.io/mediacapture-main/getusermedia.html#media-","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 16:06:01 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 20, 2016 at 5:06 PM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 17:16:45 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There is a separate experimental flag that controls whether Blink will honor setting of the "","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 16:32:10 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you for the clarification. Regarding naked value (I suppose this is getUserMedia({video: true})","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 19:05:12 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"No, naked value is getUserMedia{{video: { height: 480 }}) getUserMedia({video: true}) will continue","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 18:35:08 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Do you happen to know how prevalent naked values are in the wild? ☆PhistucK On Wed, Apr 20, 2016 at 7","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 20:11:17 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"No app that runs on chrome uses them, since they were not passed before. Some apps that run on both","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 23:49:01 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Is the scope of this precisely the bits guarded by [RuntimeEnabled=MediaConstraints] in IDL files? In","payload":{"headers":[{"name":"Date","value":"Tue, 26 Apr 2016 22:35:46 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, the scope is what's guarded by [RuntimeEnabled=MediaConstraints] (unless I made a mistake).","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 23:04:09 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 26, 2016 at 5:04 PM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 17:23:32 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Note that the missing feature in crbug 524424 wouldn't be helped by feature detction in","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 26 Apr 2016 23:50:45 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"bashi@, do you have some idea about the difficulty of fixing issue 524424, at least enough to support","payload":{"headers":[{"name":"Date","value":"Wed, 27 Apr 2016 12:25:05 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Kenichi Ishibashi <bashi@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"https://codereview.chromium.org/953123003/ was an attempt to fix it, but Jens pointed out that the","payload":{"headers":[{"name":"From","value":"Kenichi Ishibashi <bashi@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 09:42:24 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"What's the bug filed for GN on this issue (side effect .h files)? It seems like a generic issue","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 28 Apr 2016 08:37:42 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Kenichi Ishibashi <bashi@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If the build dependency workaround works and the resulting build would behave as required by WebIDL,","payload":{"headers":[{"name":"Date","value":"Thu, 28 Apr 2016 11:55:19 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Kenichi Ishibashi <bashi@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"So it's been 2 weeks, and no LGTMs gathered. What conclusions can be drawn from this? In","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 13:54:29 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Kenichi Ishibashi <bashi@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry for the delay on this. In general we'd really rather not ship an API where certain argument","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 15:50:57 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'll chat with bashi@ about this. (Sorry about the delay -- Tokyo is on national holidays until","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 5 May 2016 10:01:55 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, \"Philip Jägenstedt\" <philipj@opera.com>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Any updates here? :DG< On Wed, May 4, 2016 at 6:01 PM, Kentaro Hara <haraken@chromium.org>","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 09:45:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Harald Alvestrand <hta@google.com>, \"Philip Jägenstedt\" <philipj@opera.com>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If I read the responses correctly, I won't get LGTM to ship without support for at least the full","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 09:33:45 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Rick Byers <rbyers@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry about the delayed response... bashi@ is now working on it, and nested IDL unions &","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 16:49:01 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"And a tracking bug is here. On Wed, May 11, 2016 at 4:49 PM, Kentaro Hara <haraken@chromium.org","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 17:02:17 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think the nested IDL unions & dictionaries are now supported by r393130. On Wed, May 11, 2016","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 12 May 2016 16:32:41 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Almost got the IDL-facing code done before I saw that the CL was rolled back. Seems straightforward,","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Sat, 14 May 2016 08:28:44 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Resurrecting the Intent to Ship thread: We now have working parsing of naked constraint values, so","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 07:31:02 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I thought I saw that something landed regarding ideal values - are they included in this intent? ☆","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 31 May 2016 08:51:28 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, shipping the code landed in https://codereview.chromium.org/1977513004/ is included. On Tue, May","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 08:06:19 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Rick Byers <rbyers@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 31, 2016 at 1:31 AM, Harald Alvestrand <hta@google.com> wrote: Resurrecting the","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 31 May 2016 11:33:31 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The current situation is that Chrome is dominant in the marketplace for WebRTC browsers. So people","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 1 Jun 2016 13:24:51 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thank you for the details! LGTM1 to ship. On Wed, Jun 1, 2016 at 7:24 AM, Harald Alvestrand <hta@","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 3 Jun 2016 13:46:17 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Rick! Other API owners: More LGTMs or comments? On Fri, Jun 3, 2016 at 7:46 PM, Rick Byers","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 7 Jun 2016 09:57:29 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Jun 7, 2016 at 12:57 AM 'Harald Alvestrand' via blink-dev <blink-dev@","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 05:24:05 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 Chris Harrelson <chrishtr@chromium.org> schrieb am Mi., 8. Juni 2016, 07:24: LGTM2 On Tue","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 08 Jun 2016 05:25:02 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>, Harald Alvestrand <hta@google.com>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks all! On Wed, Jun 8, 2016 at 7:25 AM, Jochen Eisinger <jochen@chromium.org> wrote: lgtm3","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 8 Jun 2016 07:31:56 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: MediaStreamTrack Constraints API (part 1)"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, Rick Byers <rbyers@chromium.org>, Kentaro Hara <haraken@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, Kenichi Ishibashi <bashi@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails aelias@chromium.org, changwan@chromium.org Spec https://html.spec.whatwg.org/#pause","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 22:21:58 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"changwan@chromium.org"}]}},{"snippet":"lgtm1 On Wed, Apr 20, 2016, 7:22 AM Alexandre Elias <aelias@chromium.org> wrote: Contact emails","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 05:22:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"changwan@chromium.org"}]}},{"snippet":"Huge +1 this will make things so much saner. On Apr 19, 2016 10:22 PM, "Alexandre Elias"","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 22:26:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2. However, what about file chooser dialog for input[type=file], <select> popup menu and so","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 14:51:31 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Alexandre Elias <aelias@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"No, that would be tantamount to resurrecting showModalDialog :). To be clear, the event loop is","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 23:11:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 4/20/16 1:21 AM, Alexandre Elias wrote: > The new behavior will match Safari and Firefox, while","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"changwan@chromium.org"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Wed, 20 Apr 2016 02:23:55 -0400"}]}},{"snippet":"This does not make sense. Some animations (2D) will run and some animations (3D) will not run, even","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 09:37:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, changwan@chromium.org"}]}},{"snippet":"That's actually just the web in general today. If you run script for 800ms then CSS animations","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 00:12:31 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"For the user, CSS and non-CSS animations are indistinguishable, I agree. So I would just stop all of","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 10:22:48 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"FYI: <marquee> uses transform animations under the hood, both animations are composited in the","payload":{"headers":[{"name":"From","value":"Alan Cutter <alancutter@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 07:32:07 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"PhistucK <phistuck@gmail.com>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"Presumably stopping animations on the compositor thread would be extra work and be an entirely","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 10:30:38 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"On Wed, Apr 20, 2016 at 11:30 AM, Philip Jägenstedt <philipj@opera.com> wrote: Users can't","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 20 Apr 2016 11:39:14 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"On Wed, Apr 20, 2016 at 10:39 AM, PhistucK <phistuck@gmail.com> wrote: > > On Wed, Apr 20","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 13:28:16 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>, Alexandre Elias <aelias@chromium.org>"}]}},{"snippet":"I wouldn't say it's just a question of extra work. Leaving the 3d animations running","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 12:12:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Wed, Apr 20, 2016 at 12:12 PM Alexandre Elias <aelias@chromium.org> wrote: I wouldn","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 20:19:47 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Agreed on all accounts here, with one nit: On Wed, Apr 20, 2016 at 3:12 PM, Alexandre Elias <","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 16:20:05 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, PhistucK <phistuck@gmail.com>, Elliott Sprehn <esprehn@chromium.org>, Changwan Ryu <changwan@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"OK, thanks for the approvals. We're aiming to ship the behavior change in M52, interested parties","payload":{"headers":[{"name":"Date","value":"Thu, 21 Apr 2016 12:59:35 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Changwan Ryu <changwan@chromium.org>"}]}},{"snippet":"To close the loop, this change has shipped in M52 stable. I also want to correct a mistaken claim I made in the opening post: this was not the last Blink main thread nested message loop. There is at","payload":{"headers":[{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Date","value":"Tue, 9 Aug 2016 20:55:11 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"Small update: I believe dcheng@ is actively working on crbug.com/498088. On Tue, Aug 9, 2016 at 8:55 PM, Alexandre Elias <aelias@chromium.org> wrote: To close the loop, this change has shipped in","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 08:32:48 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}},{"snippet":"There is also debugger that runs nested message loop in Blink on breakpoint with no clear understanding of the feasibility of its removal. On Wed, Aug 10, 2016 at 8:32 AM, Chris Harrelson <chrishtr@","payload":{"headers":[{"name":"From","value":"Pavel Feldman <pfeldman@chromium.org>"},{"name":"Date","value":"Wed, 10 Aug 2016 08:38:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Pause event loop during modal dialogs"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Alexandre Elias <aelias@chromium.org>, blink-dev <blink-dev@chromium.org>, Jochen Eisinger <jochen@chromium.org>, Daniel Cheng <dcheng@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 12:10:50 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hey all, For the past year or so Chris Wilson, Yoav Weiss, and Marcos Caceres have been chairing a","payload":{"headers":[{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 15:33:35 -0700"},{"name":"Subject","value":"[blink-dev] Incubation-first Standards Development"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Alex Komoroske <komoroske@chromium.org>, cwilso@chromium.org, Ojan Vafai <ojan@chromium.org>"}]}},{"snippet":"Does this mean that all of us (those who participate in standards) need to join the WICG mailing list","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 09:11:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Incubation-first Standards Development"},{"name":"To","value":"Alex Russell <slightlyoff@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Alex Komoroske <komoroske@chromium.org>, cwilso@chromium.org, Ojan Vafai <ojan@chromium.org>"}]}},{"snippet":"Hey Harald, Joining now will save you time in the future, so please do! To join you can use the","payload":{"headers":[{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 25 Apr 2016 09:25:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] Incubation-first Standards Development"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Alex Komoroske <komoroske@chromium.org>, Chris Wilson <cwilso@chromium.org>, Ojan Vafai <ojan@chromium.org>"}]}},{"snippet":"1. If you're trying to prevent stupid ideas on the Internet, you've got your work cut out for","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 09:28:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Incubation-first Standards Development"},{"name":"From","value":"\"'Chris Wilson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Alex Russell <slightlyoff@google.com>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>, Alex Komoroske <komoroske@chromium.org>, Chris Wilson <cwilso@chromium.org>, Ojan Vafai <ojan@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails rtoy@chromium.org, hongchan@chromium.org Spec http://webaudio.github.io/web-audio-api/","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 14:09:58 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: WebAudio: min/max attributes for AudioParams"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Do you intent to do this behind a runtime flag? At least from a distance, the change looks small and","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 10:31:39 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: WebAudio: min/max attributes for AudioParams"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"We do intend to ship. I forgot to add that to the subject line. On Wed, Apr 20, 2016 at 1:31 AM,","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 09:08:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: WebAudio: min/max attributes for AudioParams"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"This is an updated intent of the original SpatialPannerNode intent, which proposed a new","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 10:42:44 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 to ship the new AudioParam attributes on PannerNode. The changes to AudioListener are very","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 10:24:20 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Oh, yes, AudioListener would be changed at the same time since they work together to give you the","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 09:05:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 to ship In general we don't add deprecation warnings until we have some evidence that API","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 14:06:24 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"To","value":"Raymond Toy <rtoy@google.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. :DG< On Wed, Apr 20, 2016 at 11:06 AM, Rick Byers <rbyers@chromium.org> wrote: LGTM2","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 11:07:50 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Raymond Toy <rtoy@google.com>, \"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 20, 2016 at 11:06 AM, Rick Byers <rbyers@chromium.org> wrote: LGTM2 to ship In","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 11:16:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: WebAudio PannerNode automation"},{"name":"From","value":"\"'Raymond Toy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi blink-dev, base::Optional<T> just landed in Chromium [1] and I think we should use this","payload":{"headers":[{"name":"From","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"Date","value":"Tue, 19 Apr 2016 14:29:22 +0100"}]}},{"snippet":"+yutak +1 to replacing WTF::Optional with base::Optional. Though I'm not sure if we can replace","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 22:37:12 +0900"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If we have base::Optional<T> on both sides of the content / Blink boundary, does that mean that","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 15:58:17 +0200"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If we have base::Optional<T> on both sides of the content / Blink boundary, does that mean that","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 23:38:35 +0900"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"modules/ can't depend on wtf/ for types exposed to content, so that leaves us with another","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 17:41:26 +0200"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"modules/ can't depend on wtf/ for types exposed to content, so that leaves us with another","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 08:47:06 +0900"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 19, 2016 at 10:29 PM, Mounir Lamouri <mounir@lamouri.fr> wrote: Hi blink-dev, base:","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 14:41:24 +0900"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Mounir Lamouri <mounir@lamouri.fr>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 19, 2016 at 10:41 PM, Yuta Kitamura <yutak@chromium.org> wrote: On Tue, Apr 19,","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 13:35:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Late followup, because I just now got to try it: I tried submitting a CL that had public/platform/","payload":{"headers":[{"name":"From","value":"\"'Harald Alvestrand' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 14:28:44 +0200"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 19, 2016 at 5:28 AM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 13:11:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 19, 2016 at 4:11 PM, Dana Jansens <danakj@chromium.org> wrote: On Thu, May 19, 2016","payload":{"headers":[{"name":"Date","value":"Thu, 19 May 2016 17:02:58 -0400"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 19, 2016 at 2:02 PM, Jeremy Roman <jbroman@chromium.org> wrote: On Thu, May 19,","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 14:06:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, May 19, 2016 at 2:06 PM Dana Jansens <danakj@chromium.org> wrote: On Thu, May 19, 2016","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 22:03:30 +0000"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"In general Optional is pretty bad since it packs poorly, what do we need it for in the Web* classes?","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Thu, 19 May 2016 15:09:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Harald Alvestrand <hta@google.com>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Boolean + variable: <type> m_x; bool m_has_x : 1; void setX(<type> x) { m_has_x = true;","payload":{"headers":[{"name":"From","value":"Harald Alvestrand <hta@google.com>"},{"name":"Date","value":"Tue, 24 May 2016 15:16:42 +0200"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Optional is good when we really need that exact behavior, but it's not a great pattern to","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 10:11:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 24, 2016 at 6:16 AM, 'Harald Alvestrand' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 10:11:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Harald Alvestrand <hta@google.com>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Could/should we mitigate misuse of base::Optional<> with types like pointers, which already","payload":{"headers":[{"name":"From","value":"Wez <wez@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 10:13:59 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Harald Alvestrand <hta@google.com>, Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, May 24, 2016 at 10:13 AM, Wez <wez@chromium.org> wrote: Could/should we mitigate misuse","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Tue, 24 May 2016 12:00:21 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"To","value":"Wez <wez@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Harald Alvestrand <hta@google.com>, Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Jeremy Roman <jbroman@chromium.org>, Kentaro Hara <haraken@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If we can do better than the stl with storage optimizations or better asserts than we don't need","payload":{"headers":[{"name":"Date","value":"Tue, 24 May 2016 12:09:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] RFC: allow base::Optional<T> in Blink"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"dcheng@chromium.org, yutak@chromium.org, Brett Wilson <brettw@chromium.org>, Wez <wez@chromium.org>, Mounir Lamouri <mounir@lamouri.fr>, Kentaro Hara <haraken@chromium.org>, Harald Alvestrand <hta@google.com>, blink-dev <blink-dev@chromium.org>, Jeremy Roman <jbroman@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Apr 29 - May 8 is a vacation week in Japan called a Golden Week. Tokyo will be quite then. Oilpan:","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 11:42:06 +0900"},{"name":"Subject","value":"[blink-dev] Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 19, 2016 at 11:42 AM, Kentaro Hara <haraken@chromium.org> wrote: Hi Apr 29 - May 8","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 21:58:06 +0900"},{"name":"Subject","value":"[blink-dev] Re: Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 00:09:43 +0000"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"\"blink-dev+announce@chromium.org\" <blink-dev+announce@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Registration for BlinkOn 6 is officially full! Anyone who registers after this point will be","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 20:20:11 +0000"},{"name":"Subject","value":"[blink-dev] BlinkOn 6 registration full"},{"name":"To","value":"\"blink-dev+announce@chromium.org\" <blink-dev+announce@chromium.org>"}]}}]},{"messages":[{"snippet":"Triage Number of untriaged/unconfirmed cr-blink bugs filed before Q2: 1113 Number of untriaged/","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 13:20:13 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Note: This is a somewhat belated intent. I started on a prototype in February (https://codereview.","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 17:41:59 +0200"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: The 'unsafe-dynamic' CSP source expression."},{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Artur Janc <aaj@google.com>"}]}},{"snippet":"LGTM1 Seems potentially valuable and relatively low risk. I love the emphasis on pragmatic","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 13:14:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: The 'unsafe-dynamic' CSP source expression."},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Artur Janc <aaj@google.com>"}]}},{"snippet":"lgtm2 On Mon, Apr 18, 2016, 7:14 PM Rick Byers <rbyers@chromium.org> wrote: LGTM1 Seems","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 20:07:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: The 'unsafe-dynamic' CSP source expression."},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Artur Janc <aaj@google.com>"}]}},{"snippet":"LGTM3. On Mon, Apr 18, 2016 at 1:07 PM, Jochen Eisinger <jochen@chromium.org> wrote: lgtm2 On","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 13:09:15 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: The 'unsafe-dynamic' CSP source expression."},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>, Artur Janc <aaj@google.com>"}]}},{"snippet":"On Mon, Apr 18, 2016 at 7:14 PM, Rick Byers <rbyers@chromium.org> wrote: LGTM1 Seems","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Mon, 20 Jun 2016 16:04:15 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: The 'unsafe-dynamic' CSP source expression."},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Artur Janc <aaj@google.com>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-04","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 12:50:14 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of April 11"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-04-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 13:10:47 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of April 11"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello, Is your website not ranking on Google first page and not getting more traffic? Please have a","payload":{"headers":[{"name":"From","value":"Louis Mart <louis.mart@outlook.com>"},{"name":"Subject","value":"[blink-dev] Ranking improve"},{"name":"Date","value":"Mon, 18 Apr 2016 08:08:11 +0000"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-04-18 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 10:19:24 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-04-18"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Dear Sir/Madam, Is your website not ranking on Google first page and not getting more traffic? Please","payload":{"headers":[{"name":"From","value":"Saara Khan <saara.webservices@hotmail.com>"},{"name":"Subject","value":"[blink-dev] Keywords rank"},{"name":"Date","value":"Sat, 16 Apr 2016 12:21:45 +0000"}]}}]},{"messages":[{"snippet":"Hi all, Can anyone tell me what makes the fullscreen background black? I looked at fullscreen.css,","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 16:30:29 -0700 (PDT)"},{"name":"From","value":"Chris Watkins <watk@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Where does the black fullscreen background come from?"}]}},{"snippet":"To answer my own question, it looks like LayoutFullScreen.cpp is the culprit. On Friday, April 15,","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 17:19:07 -0700 (PDT)"},{"name":"From","value":"Chris Watkins <watk@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: Where does the black fullscreen background come from?"}]}}]},{"messages":[{"snippet":"Contact emails jsbell@chromium.org,dknox@chromium.org Spec https://storage.spec.whatwg.org Summary","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 12:37:06 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Storage Quota Estimation API"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Apr 15, 2016 at 12:37 PM, Joshua Bell <jsbell@google.com> wrote: Contact emails jsbell@","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 12:47:14 -0700"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement: Storage Quota Estimation API"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"[FYI +blink-dev] Contact emails caitp@igalia.com Spec Feature has been merged into ECMA262","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 06:52:04 -0700 (PDT)"},{"name":"From","value":"Caitlin Potter <caitpotter88@gmail.com>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: ECMAScript 2016 Exponentiation operator"}]}},{"snippet":"LGTM, thanks! On 15 April 2016 at 15:52, Caitlin Potter <caitpotter88@gmail.com> wrote: [FYI +","payload":{"headers":[{"name":"From","value":"\"'Andreas Rossberg' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 11:07:14 +0200"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Ship: ECMAScript 2016 Exponentiation operator"},{"name":"To","value":"\"v8-users@googlegroups.com\" <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Fri, Apr 15, 2016 at 6:52 AM, Caitlin Potter <caitpotter88@gmail.com> wrote: [FYI +","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 10:28:28 -0700"},{"name":"Subject","value":"[blink-dev] Re: [v8-users] Intent to Ship: ECMAScript 2016 Exponentiation operator"},{"name":"From","value":"Adam Klein <adamk@chromium.org>"},{"name":"To","value":"v8-users <v8-users@googlegroups.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails xidachen@chromium.org, junov@chromium.org, kbr@chromium.org Spec https://html.spec.","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Fri, 15 Apr 2016 07:22:48 -0400"},{"name":"Subject","value":"[blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Looks reasonable to me, just want to understand the interop risk a bit better: On Fri, Apr 15, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Sun, 17 Apr 2016 23:16:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Sun, Apr 17, 2016 at 11:16 PM, Rick Byers <rbyers@chromium.org> wrote: Has there been any","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 11:33:38 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"Justin Novosad <junov@chromium.org>"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Apr 18, 2016 at 8:33 AM, Justin Novosad <junov@chromium.org> wrote: On Sun, Apr 17,","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 13:38:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"To","value":"Justin Novosad <junov@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 18 April 2016 at 13:38, Kenneth Russell <kbr@chromium.org> wrote: On Mon, Apr 18, 2016 at 8:","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 14:01:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"Cc","value":"Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yep, makes sense. We don't block shipping on the absence of feedback, just on legitimate","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 17:08:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Cc","value":"Kenneth Russell <kbr@chromium.org>, Justin Novosad <junov@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Mon, Apr 18, 2016 at 2:01 PM, Mike Lawther <mikelawther@chromium.org> wrote: On 18 April","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 15:25:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"To","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Cc","value":"Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"For premultiplyAlpha and colorspaceConversion, the "default" values have implementation-","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 11:04:50 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"Cc","value":"Mike Lawther <mikelawther@chromium.org>, Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, Xida Chen <xidachen@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Phillip, In the spec, the "default" option is provided so that different browsers could","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 07:08:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Xida! It would be interesting to see if any other browser makes a different choice, or if","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 13:12:26 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I believe that's actually the second LGTM, so this still needs another one. On Tue, Apr 19, 2016","payload":{"headers":[{"name":"From","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 07:30:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Oops, sorry :) On Tue, Apr 19, 2016 at 1:30 PM, Xida Chen <xidachen@chromium.org> wrote: I","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 13:45:14 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Xida Chen <xidachen@chromium.org>"},{"name":"Cc","value":"Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Justin Novosad <junov@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"To add to Xida's explanation of default behaviors: In Safari's implementation,","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 11:47:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"Justin Novosad <junov@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Xida Chen <xidachen@chromium.org>, Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Justin, that makes sense, and means that there will be an actual difference in default","payload":{"headers":[{"name":"Date","value":"Wed, 20 Apr 2016 09:58:52 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Justin Novosad <junov@chromium.org>"},{"name":"Cc","value":"Xida Chen <xidachen@chromium.org>, Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 On Wed, Apr 20, 2016 at 9:58 AM Philip Jägenstedt <philipj@opera.com> wrote: Thanks","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 14:05:01 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: ImageBitmapOptions"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Justin Novosad <junov@chromium.org>"},{"name":"Cc","value":"Xida Chen <xidachen@chromium.org>, Kenneth Russell <kbr@chromium.org>, Mike Lawther <mikelawther@chromium.org>, Rick Byers <rbyers@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, I intend to implement support of cloning RTCCertificate objects according to WebRTC spec[1] and I","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 03:07:04 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Takashi Sakamoto <tasak@google.com>, Adam Klein <adamk@chromium.org>, Harald Alvestrand <hta@chromium.org>"},{"name":"Subject","value":"[blink-dev] Cloning of platform objects (\"An object could not be cloned.\")"}]}},{"snippet":"I was looking for an abstract "is cloneable" type of thing and couldn't find one, but","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 10:05:34 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"tasak@google.com, adamk@chromium.org, hta@chromium.org"},{"name":"Subject","value":"[blink-dev] Re: Cloning of platform objects (\"An object could not be cloned.\")"}]}},{"snippet":"On Mon, Apr 18, 2016 at 10:05 AM, Henrik Boström <hbos@chromium.org> wrote: I was looking for","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 10:12:39 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Cloning of platform objects (\"An object could not be cloned.\")"},{"name":"From","value":"Joshua Bell <jsbell@chromium.org>"},{"name":"To","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Takashi Sakamoto <tasak@google.com>, Adam Klein <adamk@chromium.org>, hta@chromium.org"}]}},{"snippet":"Oh! Thanks! :) On Monday, April 18, 2016 at 7:12:43 PM UTC+2, Joshua Bell wrote: On Mon, Apr 18, 2016","payload":{"headers":[{"name":"Date","value":"Mon, 18 Apr 2016 10:21:34 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"hbos@chromium.org, tasak@google.com, adamk@chromium.org, hta@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Cloning of platform objects (\"An object could not be cloned.\")"}]}},{"snippet":"FYI If anyone else runs into the same problem, here is the CL I ended up with: https://codereview.","payload":{"headers":[{"name":"Date","value":"Wed, 11 May 2016 01:15:48 -0700 (PDT)"},{"name":"From","value":"\"Henrik Boström\" <hbos@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"hbos@chromium.org, tasak@google.com, adamk@chromium.org, hta@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Cloning of platform objects (\"An object could not be cloned.\")"}]}}]},{"messages":[{"snippet":"Note: already implemented under a general IndexedDBExperimental flag. This is really just an I2S but","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 16:27:12 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: IDBKeyRange.includes"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1 On Fri, Apr 15, 2016 at 1:27 AM, 'Joshua Bell' via blink-dev <blink-dev@chromium.org","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 12:20:18 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: IDBKeyRange.includes"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 :DG< On Fri, Apr 15, 2016 at 3:20 AM, Philip Jägenstedt <philipj@opera.com> wrote:","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 08:40:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: IDBKeyRange.includes"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 On Fri, Apr 15, 2016, 5:40 PM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2 :DG","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 15 Apr 2016 15:45:14 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: IDBKeyRange.includes"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, This is unfortunately stretching out to more than "temporarily" :(, and I need to","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 15:54:51 -0700"},{"name":"Subject","value":"[blink-dev] Help? (Re: PSA: the auto-rebaseline-bot is down temporarily)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Walter Korman <wkorman@chromium.org>, Ojan Vafai <ojan@chromium.org>, Emil A Eklund <eae@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, tansell@chromium.org, Aaron Gable <agable@chromium.org>"}]}}]},{"messages":[{"snippet":"Dear Sirs Hiện nay chúng tôi đang tìm kiếm các đối tác phân phối cho: - Trà - Now Break Tea (thương","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 10:00:25 +0200"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"From","value":"Grand Waktu Myanmar <office@grandwaktu.com>"},{"name":"Subject","value":"[blink-dev] Tim doi tac tai Viet Nam - co hoi phat trien san pham nhap khau so 3 the gioi!"}]}}]},{"messages":[{"snippet":"Contact emails mcasas@chromium.org Spec http://w3c.github.io/mediacapture-image/index.html Summary","payload":{"headers":[{"name":"Date","value":"Wed, 13 Apr 2016 17:17:03 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Implement: Mediastream Image Capture"},{"name":"From","value":"Miguel Casas-Sanchez <mcasas@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This capability sounds super useful! Is there an explainer doc for this spec somewhere? I was trying","payload":{"headers":[{"name":"Date","value":"Wed, 13 Apr 2016 20:48:41 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Mediastream Image Capture"},{"name":"From","value":"\"'Alex Russell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Miguel Casas-Sanchez <mcasas@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On 13 April 2016 at 20:48, Alex Russell <slightlyoff@google.com> wrote: This capability sounds","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 11:26:29 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement: Mediastream Image Capture"},{"name":"From","value":"\"'Miguel Casas' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Alex Russell <slightlyoff@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, April 13: Recent updates (last 2 weeks): We","payload":{"headers":[{"name":"Date","value":"Wed, 13 Apr 2016 15:22:18 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, April 13, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Remove %3A escaping from blob: URLs Contact emails nick@chromium.org Spec https://w3c.github.io/","payload":{"headers":[{"name":"Date","value":"Wed, 13 Apr 2016 14:53:36 -0700"},{"name":"Subject","value":"[blink-dev] Intent to {Implement, Ship}: Remove %3A escaping from blob: URLs"},{"name":"From","value":"\"'Nick Carter' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Makes sense, LGTM1! On Wed, Apr 13, 2016 at 11:53 PM, 'Nick Carter' via blink-dev <blink-","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 16:19:49 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to {Implement, Ship}: Remove %3A escaping from blob: URLs"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Nick Carter <ncarter@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM%3A! On Thu, Apr 14, 2016 at 7:19 AM, Philip Jägenstedt <philipj@opera.com> wrote: Makes","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 07:21:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to {Implement, Ship}: Remove %3A escaping from blob: URLs"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Nick Carter <ncarter@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 - I agree with the expectation that compat risk should be very low. But since we have no hard","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 10:47:20 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to {Implement, Ship}: Remove %3A escaping from blob: URLs"},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Nick Carter <ncarter@google.com>, \"Philip Jägenstedt\" <philipj@opera.com>"}]}}]},{"messages":[{"snippet":"# Primary eng (and PM) emails mkwst@chromium.org # Summary 'X-Frame-Options' will be ignored","payload":{"headers":[{"name":"From","value":"Mike West <mkwst@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 14:14:41 +0200"},{"name":"Subject","value":"[blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM. On Wed, Apr 13, 2016 at 5:14 AM, Mike West <mkwst@chromium.org> wrote: # Primary eng (and","payload":{"headers":[{"name":"Date","value":"Wed, 13 Apr 2016 09:50:55 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm2 On Wed, Apr 13, 2016, 6:50 PM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM. On Wed","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 17:05:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, Mike West <mkwst@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. I'll defer to your judgement, but maybe it's worth emitting a console message when","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 16:22:19 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Cc","value":"Dimitri Glazkov <dglazkov@chromium.org>, Mike West <mkwst@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for the great compat impact (and interop) data! Clearly safe IMHO. On Apr 14, 2016 10:22 AM,","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 10:45:04 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"From","value":"\"'Rick Byers' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Mike West <mkwst@chromium.org>, Jochen Eisinger <jochen@chromium.org>, blink-dev <blink-dev@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>"}]}},{"snippet":"I added a chromestatus entry at https://www.chromestatus.com/feature/6450843930853376 based on folks","payload":{"headers":[{"name":"From","value":"\"'Mike West' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 15 Apr 2016 13:48:27 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"Jochen Eisinger <jochen@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks Mike! To warn about all unsupported http-equiv names would be annoying when some new header","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 14:32:31 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Mike West <mkwst@google.com>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Jochen Eisinger <jochen@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Did you talk to WebKit folks in order to align WebKit with this new behavior as well? They really","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 15 Apr 2016 16:16:05 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"To","value":"Mike West <mkwst@google.com>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Jochen Eisinger <jochen@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Fair enough. Filed https://bugs.webkit.org/show_bug.cgi?id=156625. -mike On Fri, Apr 15, 2016 at 3:16","payload":{"headers":[{"name":"From","value":"\"'Mike West' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 15 Apr 2016 15:27:04 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to deprecate and remove: `X-Frame-Options` processing inside `<meta>`."},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, Jochen Eisinger <jochen@chromium.org>, Dimitri Glazkov <dglazkov@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails tkent@chromium.org Spec https://drafts.csswg.org/css-ui-4/#appearance-switching","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 15:45:49 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Why not appearance: none? ☆PhistucK On Wed, Apr 13, 2016 at 9:45 AM, TAMURA, Kent <tkent@chromium.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 13 Apr 2016 09:54:18 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think we're not ready to ship the 'appearance' property yet. This is the first step","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 16:07:24 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"In general I don't think we want to be "adding features" to prefixed APIs, but I don","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 21:03:00 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Using custom style callbacks is bad, I'd rather we didn't use more of them. If we want to","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 20:06:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Apr 14, 2016 at 10:03 AM, Rick Byers <rbyers@chromium.org> wrote: In general I don'","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 13:54:27 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, timloh@chromium.org"}]}},{"snippet":"On Thu, Apr 14, 2016 at 12:54 AM, TAMURA, Kent <tkent@chromium.org> wrote: On Thu, Apr 14, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Sun, 17 Apr 2016 23:20:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, PhistucK <phistuck@gmail.com>, blink-dev <blink-dev@chromium.org>, timloh@chromium.org"}]}},{"snippet":"Florian, who is the editor of css-ui-4, and I met last week, and discussed this. I proceed this","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 15:13:54 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I'd be great to review the patches for this. :) The form controls have a lot of technical debt","payload":{"headers":[{"name":"Date","value":"Mon, 2 May 2016 12:12:50 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Kent TAMURA <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Rick Byers <rbyers@chromium.org>"}]}},{"snippet":"Yep, I think you should just proceed with this as a bug-fix (with appropriate codereview from the","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 3 May 2016 14:36:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I found we needed to unship ::-webkit-progress-* pseudo elements to implement this behavior for","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 11 May 2016 09:59:55 +0900"},{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: -webkit-appearance:none for METER and PROGRESS elements"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 14:35:53 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Chromium-dev, We are building chromium ourselves version 44.0.2403.133. We are facing difficulty","payload":{"headers":[{"name":"Date","value":"Tue, 12 Apr 2016 21:20:29 -0700 (PDT)"},{"name":"From","value":"Bravo Ellios <bravo.ellios@gmail.com>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Subject","value":"[chromium-dev] Facing problems with remote debugging"}]}},{"snippet":"Hi blink-dev, We are building chromium ourselves version 44.0.2403.133. We are facing difficulty in","payload":{"headers":[{"name":"Date","value":"Tue, 12 Apr 2016 21:21:45 -0700 (PDT)"},{"name":"From","value":"bravo.ellios@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Facing problems with remote debugging"}]}},{"snippet":"Try google-chrome-developer-tools instead. ☆PhistucK On Wed, Apr 13, 2016 at 7:21 AM, <bravo.","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 13 Apr 2016 08:58:30 +0300"},{"name":"Subject","value":"Re: [blink-dev] Facing problems with remote debugging"},{"name":"To","value":"bravo.ellios@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"As a result of crbug.com/601166 , we're getting baselines off of the 10.9 waterfall bot that fail","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 18:15:38 -0700"},{"name":"Subject","value":"[blink-dev] PSA: the auto-rebaseline-bot is down temporarily"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Update: the bot is still down. I have landed a change that makes it illegal to use "","payload":{"headers":[{"name":"From","value":"Dirk Pranke <dpranke@chromium.org>"},{"name":"Date","value":"Fri, 15 Apr 2016 11:16:06 -0700"},{"name":"Subject","value":"[blink-dev] Re: PSA: the auto-rebaseline-bot is down temporarily"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Update: I've just re-enabled the auto-rebaseline bot and "NeedsRebaseline" can be used","payload":{"headers":[{"name":"Date","value":"Sat, 23 Apr 2016 13:56:35 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: PSA: the auto-rebaseline-bot is down temporarily"}]}},{"snippet":"Update: the bot is going back down again, original issue still present. Investigation continues. On","payload":{"headers":[{"name":"Date","value":"Mon, 25 Apr 2016 11:19:41 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: PSA: the auto-rebaseline-bot is down temporarily"}]}},{"snippet":"The auto-rebaseline bot is back in action, and NeedsRebaseline can be submitted in TestExpectations","payload":{"headers":[{"name":"Date","value":"Tue, 3 May 2016 18:17:44 -0700 (PDT)"},{"name":"From","value":"Walter <wkorman@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Re: PSA: the auto-rebaseline-bot is down temporarily"}]}}]},{"messages":[{"snippet":"input-dev is a web platform team focused on making touch (P1) and other forms of input (P2) awesome","payload":{"headers":[{"name":"From","value":"Timothy Dresser <tdresser@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 18:13:49 +0000"},{"name":"Subject","value":"[blink-dev] input-dev Q2 OKRs"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, sample1 link is broken: http://blog.gospodarets.com/css-scroll-snap/ -> https://blog.","payload":{"headers":[{"name":"Date","value":"Tue, 12 Apr 2016 06:13:37 -0700 (PDT)"},{"name":"From","value":"vseticka.martin@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] CSS Scroll Snap Points - sample1 link"}]}},{"snippet":"Updated. Thank you! ☆PhistucK On Tue, Apr 12, 2016 at 4:13 PM, <vseticka.martin@gmail.com>","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Tue, 12 Apr 2016 16:28:32 +0300"},{"name":"Subject","value":"Re: [blink-dev] CSS Scroll Snap Points - sample1 link"},{"name":"To","value":"\"Martin Všetička\" <vseticka.martin@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello, I hope you are well. I was doing some research on your industry and I landed on your website.","payload":{"headers":[{"name":"Date","value":"Tue, 12 Apr 2016 10:48:28 +0000"},{"name":"Subject","value":"[blink-dev] www.chromium.org"},{"name":"From","value":"\"Rebecca | FOXSEO Pty Ltd\" <rebeccagrant601@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"}]}}]},{"messages":[{"snippet":"Hi, with r386620 in place, you no longer need nor can annotate your IDL interface types with the [","payload":{"headers":[{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Subject","value":"[blink-dev] PSA: [GarbageCollected] and ScriptWrappables"},{"name":"Date","value":"Tue, 12 Apr 2016 10:34:13 +0200"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-04","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 10:13:58 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of April 4"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-04-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 10:15:10 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of April 4"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"\"'Dru Knox' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 02:08:40 +0000"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"\"blink-dev+announce@chromium.org\" <blink-dev+announce@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 13:28:52 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - April 11, 2016"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hello Everyone, We have branched for M51. Please read through this entire email if you plan on making","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 12:49:39 -0700 (PDT)"},{"name":"From","value":"\"'Krishna Govind' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chromium-dev <chromium-dev@chromium.org>"},{"name":"Cc","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] M51 branch is here!"}]}}]},{"messages":[{"snippet":"Hi all, Q2 is officially here! We are starting Q2 with a 30% smaller triage backlog than last quarter","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 12:46:12 -0700"},{"name":"Subject","value":"[blink-dev] Q2 Bug Health"},{"name":"From","value":"Shruthi Sreekanta <sshruthi@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi, I am a new employee and I would like to sign up for the list. Thanks, Sahel","payload":{"headers":[{"name":"From","value":"\"'Sahel Sharifymoghaddam' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 17:18:35 +0000"},{"name":"Subject","value":"[blink-dev] sign up request"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"Hi there Sahel, Please sign up here: https://groups.google.com/a/chromium.org/forum/#!forum/blink-dev","payload":{"headers":[{"name":"From","value":"Levi Weintraub <leviw@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 10:26:03 -0700"},{"name":"Subject","value":"Re: [blink-dev] sign up request"},{"name":"To","value":"Sahel Sharifymoghaddam <sahel@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Data theo yêu cầu chào bạn! Hiện tại bên mình đang có 1000 số dân cư biệt thự biển rất HOT nhiều data","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 06:33:15 -0700 (PDT)"},{"name":"From","value":"\"DATA THEO YÊU CẦU\" <htdata2468@gmail.com>"},{"name":"To","value":"blink-dev@chromium.org"},{"name":"Subject","value":"[blink-dev] DATA THEO YÊU CẦU"}]}}]},{"messages":[{"snippet":"Loading team bi-weekly updates from CAM, TOK, MTV, RES, PAR and external contributors. More","payload":{"headers":[{"name":"From","value":"Kinuko Yasuda <kinuko@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 21:50:54 +0900"},{"name":"Subject","value":"[blink-dev] Loading team bi-weekly status updates (Apr 8, 2016)"},{"name":"To","value":"Chromium Loading Performance <loading-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi We've finalized Q2 OKRs of the team. Oilpan: (keishi) Removing RawPtrs from the code base.","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 21:45:40 +0900"},{"name":"Subject","value":"[blink-dev] Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Raising this as a blink bug, as it appears to be affecting both opera and chrome, but only on Google","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 00:21:43 -0700 (PDT)"},{"name":"From","value":"mark.gillespie@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Pixel C scrolling hangs on chrome and opera"}]}},{"snippet":"You can search crbug.com for an existing issue and star it. If you cannot find one, file a new issue","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 11 Apr 2016 10:23:02 +0300"},{"name":"Subject","value":"Re: [blink-dev] Pixel C scrolling hangs on chrome and opera"},{"name":"To","value":"Mark Gillespie <mark.gillespie@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"How do I officially raise this as a bug? Not sure where best, blink, chromium (and opera), Android?","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 00:24:28 -0700 (PDT)"},{"name":"From","value":"mark.gillespie@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Pixel C scrolling hangs on chrome and opera"}]}},{"snippet":"Blink/Chromium. crbug.com is the official place for Blink/Chromium issues. ☆PhistucK On Mon, Apr 11,","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Mon, 11 Apr 2016 10:26:00 +0300"},{"name":"Subject","value":"Re: [blink-dev] Pixel C scrolling hangs on chrome and opera"},{"name":"To","value":"Mark Gillespie <mark.gillespie@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"If you file a bug at http://crbug.com, that's the tracker shared by Chromium and Blink. I can","payload":{"headers":[{"name":"From","value":"Mike Lawther <mikelawther@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 17:29:29 +1000"},{"name":"Subject","value":"Re: [blink-dev] Pixel C scrolling hangs on chrome and opera"},{"name":"To","value":"mark.gillespie@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"OK it's been raised. https://bugs.chromium.org/p/chromium/issues/detail?id=602179 Thanks","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 00:37:38 -0700 (PDT)"},{"name":"From","value":"mark.gillespie@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Pixel C scrolling hangs on chrome and opera"}]}}]},{"messages":[{"snippet":"Skype (Please note: You cannot reply to this MMS by email.)","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 06:01:37 +0200"},{"name":"From","value":"46729383844@mms.tele2.se"},{"name":"To","value":"blink-dev+status@chromium.org"},{"name":"Subject","value":"[blink-dev]"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-04-11 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 08:50:39 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-04-11"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"That means in LeftToRight writing mode, it is equal to LeftBorderWidth + clientHeight, isn't it?","payload":{"headers":[{"name":"Date","value":"Sat, 9 Apr 2016 18:40:58 -0700 (PDT)"},{"name":"From","value":"curiousitatoratory <phaikawl@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] why is clientLogicalBottom = borderBefore() + clientLogicalHeight()?"}]}},{"snippet":"In left to right, top to bottom, the logical dimensions are: Before = top After = bottom Start = left","payload":{"headers":[{"name":"Date","value":"Sat, 9 Apr 2016 19:02:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] why is clientLogicalBottom = borderBefore() + clientLogicalHeight()?"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"curiousitatoratory <phaikawl@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Ahh, I misunderstood the "LeftToRightWritingMode", didn't know it's actually "","payload":{"headers":[{"name":"Date","value":"Sat, 9 Apr 2016 19:34:30 -0700 (PDT)"},{"name":"From","value":"curiousitatoratory <phaikawl@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"phaikawl@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] why is clientLogicalBottom = borderBefore() + clientLogicalHeight()?"}]}}]},{"messages":[{"snippet":"Primary eng (and PM) emails jsbell@chromium.org, l.panpax@gmail.com Summary Remove the TextEncoder","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 11:54:39 -0700"},{"name":"Subject","value":"[blink-dev] Intent to Deprecate and Remove: UTF-16 support in TextEncoder"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM1, one encoding to rule them all! On Fri, Apr 8, 2016 at 8:54 PM, 'Joshua Bell' via blink","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 11:51:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: UTF-16 support in TextEncoder"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Joshua Bell <jsbell@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Mon, Apr 11, 2016 at 2:51 AM, Philip Jägenstedt <philipj@opera.com> wrote: LGTM1, one","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 07:39:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: UTF-16 support in TextEncoder"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 On Mon, Apr 11, 2016 at 7:39 AM Dimitri Glazkov <dglazkov@chromium.org> wrote: LGTM2 On","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 14:41:52 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Deprecate and Remove: UTF-16 support in TextEncoder"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Joshua Bell <jsbell@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi all, I would like to inspect the Render Tree in real time while browsing with Google Chrome. In","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 08:39:05 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Dump render tree in real time"}]}},{"snippet":"The layout test infrastructure is only compiled into our test shell called "Content Shell"","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 15:49:20 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Jip, there's no way to see the render trees (now called layout trees) in real time. That","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 08:54:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks for your quick reply. What about other platforms (Linux, Windows)? Is the layout test","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 10:10:51 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"Content shell uses a fixed viewport of 800x600. No difference between platforms. -Christian On Fri,","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 10:15:11 -0700"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Allright, thanks again. What if I build Chromium from source? Can I simply dump the Layout Tree by","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 10:26:21 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"Yeah, it should be pretty straightforward. Call one of these two functions whenever you want: https:/","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 11:06:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Jip de Beer <jip.de.beer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Christian, Thanks. I should look into that. LayoutTreeAsText seems to be what I want. Which two","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 11:41:05 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"These two functions: CORE_EXPORT String externalRepresentation(LocalFrame*, LayoutAsTextBehavior =","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 15:17:35 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Jip de Beer <jip.de.beer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The hard part of what you want to do is adding the code to trigger a dump from the browser. That will","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 19:19:21 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Almost forgot: with that change, you should be able to trigger a layout tree dump to the terminal at","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 19:20:29 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Stefan Zager <szager@chromium.org>, jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks a lot! Yes, I want it to update a lot. The more responsive the better. I assume it won't","payload":{"headers":[{"name":"Date","value":"Fri, 8 Apr 2016 12:39:26 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org, jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"Well it won't usually be more than 60 times/second (often less, but depends on the website and","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 16:14:46 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Jip de Beer <jip.de.beer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Stefan Zager <szager@chromium.org>"}]}},{"snippet":"On Fri, Apr 8, 2016 at 12:39 PM <jip.de.beer@gmail.com> wrote: In the command: $ kill -s","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 20:37:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org"}]}},{"snippet":"One more way of snagging this info would be to add a JavaScript API to do it. You can just add a","payload":{"headers":[{"name":"From","value":"Levi Weintraub <leviw@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 13:56:22 -0700"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"That sounds like a very nice approach! I really want to try that as well. I actually prefer to have","payload":{"headers":[{"name":"Date","value":"Sun, 10 Apr 2016 07:26:57 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org, jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"Hi, Is the z-order (final result of applying z-index etc.) taken into account in the Layout Tree?","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 09:06:13 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org, jip.de.beer@gmail.com"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"I'm not totally sure if it contains the information you want, but you might want to look into the","payload":{"headers":[{"name":"From","value":"Sami Kyostila <skyostil@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 16:20:40 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org"}]}},{"snippet":"z-order is not directly part of the layout tree, no. I'm not sure what a good way to get that","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 12:26:28 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Jip de Beer <jip.de.beer@gmail.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Stefan Zager <szager@chromium.org>"}]}},{"snippet":"Thanks for replying again. I think I've done exactly as you suggested, save in JavaScript: https:","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 09:35:12 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com, szager@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"Why did you not say what you really wanted in your original email? :p +paint-dev, maybe they can help","payload":{"headers":[{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 13:42:16 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Jip de Beer <jip.de.beer@gmail.com>, paint-dev@chromium.org"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Stefan Zager <szager@chromium.org>"}]}},{"snippet":"LayoutTreeAsText::writeLayers separates the dump into layers, which is what you want. Layers are used","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 18:07:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"szager@chromium.org"}]}},{"snippet":"But you can still have overlap within a layer and need to worry about paint order for those, right? -","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 14:11:55 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"From","value":"Christian Biesinger <cbiesinger@chromium.org>"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Jip de Beer <jip.de.beer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes, true. On Thu, Apr 14, 2016 at 11:11 AM Christian Biesinger <cbiesinger@chromium.org> wrote","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 18:14:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"Christian Biesinger <cbiesinger@chromium.org>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Jip de Beer <jip.de.beer@gmail.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yes I should have said that in my original email. But I wanted to save you the trouble of reading","payload":{"headers":[{"name":"Date","value":"Thu, 14 Apr 2016 14:56:47 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com, paint-dev@chromium.org, szager@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}},{"snippet":"This kinda sounds a bit like IntersectionObserver v2 On Thu, Apr 14, 2016 at 5:56 PM, <jip.de.beer","payload":{"headers":[{"name":"From","value":"Nat Duca <nduca@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 18:14:43 -0400"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, Ojan Vafai <ojan@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, paint-dev <paint-dev@chromium.org>, Stefan Zager <szager@chromium.org>"}]}},{"snippet":"I think what you want is a dump of the display list from the paint system. Any paint team people have","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 22:32:08 +0000"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"},{"name":"To","value":"jip.de.beer@gmail.com, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"paint-dev@chromium.org, szager@chromium.org"}]}},{"snippet":"But what about elements outside of the viewport? I'm interested in those too. I came across","payload":{"headers":[{"name":"Date","value":"Fri, 15 Apr 2016 01:20:49 -0700 (PDT)"},{"name":"From","value":"jip.de.beer@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jip.de.beer@gmail.com, paint-dev@chromium.org, szager@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Dump render tree in real time"}]}}]},{"messages":[{"snippet":"Summary The web platform API to support USB devices. For devices that explicitly provide this origin","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 14:58:55 -0700 (PDT)"},{"name":"From","value":"Owen <owencm@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Reilly Grant <reillyg@chromium.org>, Jun Cai <juncai@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Experiment: WebUSB"}]}},{"snippet":"LGTM. Please make sure to continue working in the WICG and getting more signals from other browser","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 15:25:01 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Owen <owencm@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Reilly Grant <reillyg@chromium.org>, Jun Cai <juncai@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 2:58 PM, Owen <owencm@chromium.org> wrote: Will this feature be","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 15:25:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"},{"name":"From","value":"Alexandre Elias <aelias@chromium.org>"},{"name":"To","value":"Owen <owencm@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Reilly Grant <reillyg@chromium.org>, Jun Cai <juncai@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 3:25 PM Alexandre Elias <aelias@chromium.org> wrote: On Thu, Apr 7, 2016","payload":{"headers":[{"name":"From","value":"Reilly Grant <reillyg@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 17:29:57 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"},{"name":"To","value":"Alexandre Elias <aelias@chromium.org>, Owen <owencm@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jun Cai <juncai@chromium.org>"}]}},{"snippet":"I see in the launch tracking bug that neither privacy nor security flipped their flag yet. Are they","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 17:42:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"},{"name":"To","value":"Reilly Grant <reillyg@chromium.org>, Alexandre Elias <aelias@chromium.org>, Owen <owencm@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jun Cai <juncai@chromium.org>"}]}},{"snippet":"Those labels were mistakenly added to this Type=Launch-OWP issue, where they should have been on the","payload":{"headers":[{"name":"From","value":"\"'Owen Campbell-Moore' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 21:06:59 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Reilly Grant <reillyg@chromium.org>, Alexandre Elias <aelias@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Jun Cai <juncai@chromium.org>"}]}},{"snippet":"Update: we have decided to change the schedule for this origin trial and are now planning to start in","payload":{"headers":[{"name":"Date","value":"Sat, 30 Apr 2016 17:18:00 -0700 (PDT)"},{"name":"From","value":"owencm via blink-dev <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"jochen@chromium.org, reillyg@chromium.org, aelias@chromium.org, juncai@chromium.org, owencm@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Experiment: WebUSB"}]}}]},{"messages":[{"snippet":"Web Bluetooth provides Bluetooth GATT Access to web apps. On track to launch experiment in M51","payload":{"headers":[{"name":"From","value":"Vincent Scheib <scheib@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 13:57:42 -0700"},{"name":"Subject","value":"[blink-dev] Bluetooth Status - Experiment on track for 51, branching tomorrow."},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I want to add a new property on the event parameter of postMessage receiver call back function. I","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 12:52:04 -0700 (PDT)"},{"name":"From","value":"\"翀\" <gc771427477@gmail.com>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] How to add a new property to event parameter of postMessage receiver call back function?"}]}}]},{"messages":[{"snippet":"Hi, BlinkOn6 is going to feature Lightning talks again. One talk should not last longer than 3","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 06:57:49 -0700 (PDT)"},{"name":"From","value":"Michael Hablich <hablich@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Submit Lightning talk topics for BlinkOn6"}]}},{"snippet":"Thanks for organizing this, Michael! Lightning talks are a great way to quickly introduce and excite","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 08:27:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Submit Lightning talk topics for BlinkOn6"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Michael Hablich <hablich@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails guidou@chromium.org, hta@chromium.org Spec http://w3c.github.io/mediacapture-main/#","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 02:47:12 -0700 (PDT)"},{"name":"From","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: HTMLMediaElement.srcObject for MediaStreams"}]}},{"snippet":"LGTM1 On Thu, Apr 7, 2016 at 11:47 AM, Guido Urdaneta <guidou@chromium.org> wrote: Contact","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 13:35:59 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: HTMLMediaElement.srcObject for MediaStreams"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Guido Urdaneta <guidou@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Mon, Apr 11, 2016 at 8:35 PM, Philip Jägenstedt <philipj@opera.com> wrote: LGTM1 On","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 14:42:04 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: HTMLMediaElement.srcObject for MediaStreams"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 On Tue, Apr 12, 2016, 7:42 AM TAMURA, Kent <tkent@chromium.org> wrote: LGTM2 On Mon, Apr","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 05:46:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: HTMLMediaElement.srcObject for MediaStreams"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Guido Urdaneta <guidou@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Blink devs, [This mail is long; I suggest you to bring a cup of your favorite drink before","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 17:19:30 +0900"},{"name":"Subject","value":"[blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"I'd prefer Solution A too, to keep the code base plain and simple (less magical). On Thu, Apr 7,","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 17:27:02 +0900"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"I'd love to use MakeUnique for classes having public constructors. It's allowed even if we","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 17:27:56 +0900"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"From","value":"\"'Yutaka Hirano' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 5:27 PM, Yutaka Hirano <yhirano@google.com> wrote: I'd love to use","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 18:37:33 +0900"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Yutaka Hirano <yhirano@google.com>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 1:19 AM, Yuta Kitamura <yutak@chromium.org> wrote: Hi Blink devs, [This","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 11:54:02 -0700"},{"name":"Subject","value":"[blink-dev] Re: Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"From: yutak@google.com [mailto:yutak@google.com] On Behalf Of Yuta Kitamura > Solution B: Use","payload":{"headers":[{"name":"From","value":"Domenic Denicola <d@domenic.me>"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"CC","value":"Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"},{"name":"Subject","value":"RE: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"Date","value":"Thu, 7 Apr 2016 18:58:20 +0000"}]}},{"snippet":"On Thu, Apr 7, 2016 at 1:27 AM Kentaro Hara <haraken@chromium.org> wrote: I'd prefer","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 07 Apr 2016 20:43:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 1:43 PM, Stefan Zager <szager@chromium.org> wrote: On Thu, Apr 7, 2016","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 13:48:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 4:48 PM, Dana Jansens <danakj@chromium.org> wrote: On Thu, Apr 7, 2016","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 16:51:02 -0400"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 1:51 PM, Jeremy Roman <jbroman@chromium.org> wrote: On Thu, Apr 7, 2016","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 13:53:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"I actually prefer option A. Since Blink has a mixture of garbage collected types, refcounted types,","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Thu, 07 Apr 2016 20:53:58 +0000"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"I'd also prefer option A. For classes that don't care how they are created, the constructors","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 13:58:08 -0700"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"From","value":"\"'Vladimir Levin' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Stefan Zager <szager@chromium.org>, Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 4:53 PM, Dana Jansens <danakj@chromium.org> wrote: On Thu, Apr 7, 2016","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 17:28:16 -0400"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Stefan Zager <szager@chromium.org>, Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 1:48 PM Dana Jansens <danakj@chromium.org> wrote: For places where","payload":{"headers":[{"name":"From","value":"Stefan Zager <szager@chromium.org>"},{"name":"Date","value":"Thu, 07 Apr 2016 21:42:00 +0000"},{"name":"Subject","value":"Re: [blink-dev] Class::create() and MakeUnique() or WrapUnique()"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>, Stefan Zager <szager@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>, Taiju Tsuiki <tzik@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails yoichio@chromium.org Spec https://drafts.csswg.org/css-ui-4/#content-selection Summary","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Thu, 07 Apr 2016 07:17:50 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Do you intend to preserve the behavior of -webkit-user-select? Given its usage, it's a safe bet","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 12:51:22 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Yay, thanks for pushing on this Yoichisan! On Thu, Apr 7, 2016 at 6:51 AM, Philip Jägenstedt <","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 16:29:30 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"> Yoichi do you have a list of the differences? "user-select: contain" is new, right? I","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Mon, 11 Apr 2016 09:19:05 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Based on that, shipping support for just "text" and "none" sounds fine. What do","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 14:39:14 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"I plan to make -webkit-user-select:none follow the spec and ship -webkit-user-select:all, then","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 04:17:33 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 12, 2016 at 1:17 PM, Yoichi Osato <yoichio@chromium.org> wrote: I plan to make -","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 14:37:16 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Rick Byers <rbyers@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 12, 2016 at 1:37 AM, TAMURA, Kent <tkent@chromium.org> wrote: On Tue, Apr 12, 2016","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 15:00:10 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"I plan to make -webkit-user-select:none follow the spec and ship -webkit-user-select:all, then","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 05:37:06 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"ok, lgtm2. On Wed, Apr 13, 2016 at 2:37 PM, Yoichi Osato <yoichio@chromium.org> wrote: I plan","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 14:48:28 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"Philip Jägenstedt\" <philipj@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, 12 Apr 2016 06:17:33 +0200, Yoichi Osato <yoichio@chromium.org> wrote: > I plan to","payload":{"headers":[{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"Date","value":"Wed, 13 Apr 2016 09:48:46 +0200"},{"name":"From","value":"Simon Pieters <simonp@opera.com>"}]}},{"snippet":"On Wed, Apr 13, 2016 at 3:48 AM, Simon Pieters <simonp@opera.com> wrote: On Tue, 12 Apr 2016 06","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 13 Apr 2016 17:27:53 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Simon Pieters <simonp@opera.com>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Yoichi Osato <yoichio@chromium.org>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"> UAs that support 'user-select' must also support ''-webkit-user-select''","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Thu, 14 Apr 2016 02:32:18 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Simon Pieters <simonp@opera.com>, \"florian@rivoal.net\" <florian@rivoal.net>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"On Apr 14, 2016, at 11:32, Yoichi Osato <yoichio@chromium.org> wrote: > UAs that support","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"From","value":"Florian Rivoal <florian@rivoal.net>"},{"name":"Date","value":"Thu, 14 Apr 2016 13:48:40 +0900"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Simon Pieters <simonp@opera.com>, \"Philip Jägenstedt\" <philipj@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"}]}},{"snippet":"LGTM3 On Thu, Apr 14, 2016 at 6:48 AM, Florian Rivoal <florian@rivoal.net> wrote: > > On","payload":{"headers":[{"name":"Date","value":"Tue, 19 Apr 2016 10:55:17 +0200"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Florian Rivoal <florian@rivoal.net>"},{"name":"Cc","value":"Yoichi Osato <yoichio@chromium.org>, Rick Byers <rbyers@chromium.org>, Simon Pieters <simonp@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Thanks. I got 3 LGTMs. I go forward this. 2016年4月19日(火) 17:55 Philip Jägenstedt <philipj@opera.com","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Tue, 19 Apr 2016 09:27:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Florian Rivoal <florian@rivoal.net>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Simon Pieters <simonp@opera.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Yoichi, Can you please create a tracking bug and a dashboard entry? Joe Medley | Technical Writer,","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 20 Apr 2016 09:05:23 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"> Can you please create a tracking bug and a dashboard entry? Done. https://www.chromestatus.com/","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 06:38:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Joe Medley <jmedley@google.com>"},{"name":"Cc","value":"\"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"Do you intend to do all those things in the same milestone? If so, one entry seems perfect to me.","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Thu, 21 Apr 2016 09:48:18 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}},{"snippet":"> Do you intend to do all those things in the same milestone? Yes, I plan to ship all in M53. >","payload":{"headers":[{"name":"From","value":"Yoichi Osato <yoichio@chromium.org>"},{"name":"Date","value":"Fri, 22 Apr 2016 07:17:49 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: CSS4 user-select:none"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Joe Medley <jmedley@google.com>, \"blink-dev@chromium.org\" <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"I found that document.applets still exists after <applet> deprecation/removal: https://groups.","payload":{"headers":[{"name":"From","value":"\"'Takayoshi Kochi' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 14:56:27 +0900"},{"name":"Subject","value":"[blink-dev] document.applets not deprecated?"},{"name":"To","value":"dcheng@chromium.org, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Probably because it is still specified in HTML - https://html.spec.whatwg.org/#dom-document-applets ☆","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 7 Apr 2016 09:00:16 +0300"},{"name":"Subject","value":"Re: [blink-dev] document.applets not deprecated?"},{"name":"To","value":"Takayoshi Kochi <kochi@google.com>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"The applet element itself is also still in the spec, tracked by https://github.com/whatwg/html/issues","payload":{"headers":[{"name":"Date","value":"Thu, 7 Apr 2016 11:49:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] document.applets not deprecated?"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Takayoshi Kochi <kochi@google.com>, Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails ajuma@chromium.org, junov@chromium.org Spec https://html.spec.whatwg.org/multipage/","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 19:57:01 +0000"},{"name":"Subject","value":"[blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"junov@chromium.org"}]}},{"snippet":"LGTM to ship in M52, to give the spec time for late-breaking feedback. But I am recusing myself since","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 21:22:39 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Ali Juma <ajuma@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"junov@chromium.org"}]}},{"snippet":"Since we're the first to ship (behind a flag doesn't count), I feel compelled to apply a","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 19:35:43 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Ali Juma <ajuma@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 7:36 PM Rick Byers <rbyers@chromium.org> wrote: Since we're the","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Fri, 08 Apr 2016 20:41:23 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"Thanks LGTM1 to ship. Please just let the Mozilla folks working on this know that we're planning","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 16:47:09 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"While not entirely related, it feels a bit awkward to have an officially supported API for canvas","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Fri, 8 Apr 2016 23:57:29 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Ali Juma <ajuma@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"On Fri, Apr 8, 2016 at 4:57 PM, PhistucK <phistuck@gmail.com> wrote: While not entirely","payload":{"headers":[{"name":"Date","value":"Mon, 11 Apr 2016 14:49:36 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"From","value":"Stephen White <senorblanco@chromium.org>"},{"name":"To","value":"PhistucK <phistuck@gmail.com>"},{"name":"Cc","value":"Rick Byers <rbyers@chromium.org>, Ali Juma <ajuma@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"LGTM3. On Sat, Apr 9, 2016 at 5:47 AM, Rick Byers <rbyers@chromium.org> wrote: Thanks LGTM1 to","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 14:39:22 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Ali Juma <ajuma@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"On Tue, Apr 12, 2016 at 1:39 AM TAMURA, Kent <tkent@chromium.org> wrote: LGTM3. Thanks. This","payload":{"headers":[{"name":"From","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Date","value":"Tue, 12 Apr 2016 13:07:17 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Rick Byers <rbyers@chromium.org>"},{"name":"Cc","value":"Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}},{"snippet":"LGTM4. :DG< On Tue, Apr 12, 2016 at 6:07 AM, Ali Juma <ajuma@chromium.org> wrote: On Tue,","payload":{"headers":[{"name":"Date","value":"Tue, 12 Apr 2016 07:05:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: Filters in 2D Canvas"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Ali Juma <ajuma@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, Rick Byers <rbyers@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>, Justin Novosad <junov@chromium.org>"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 15:40:17 +0000"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-04-05)"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"small correction: Predicate based cookie clearing is almost landed! Sorry! On Wed, Apr 6, 2016 at 8:","payload":{"headers":[{"name":"From","value":"\"'Daniel Murphy' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 16:57:13 +0000"},{"name":"Subject","value":"Re: [blink-dev] OWP Storage Team Status (2016-04-05)"},{"name":"To","value":"Dru Knox <dknox@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 14:44:57 +1000"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi We're drafting Q2 OKRs. The arch team has many items that have TBD owners. If you're","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 21:26:14 +0900"},{"name":"Subject","value":"[blink-dev] Architecture Team snippet"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Blink devs, Over the past weeks, Mikhail from Intel and I were fixing various WTF components so","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 16:10:27 +0900"},{"name":"Subject","value":"[blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 12:10 AM Yuta Kitamura <yutak@chromium.org> wrote: Hi Blink devs, Over","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 07:50:45 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"Replies inline. On Tue, Apr 5, 2016 at 4:50 PM, Daniel Cheng <dcheng@chromium.org> wrote: Is it","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 18:52:26 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 2:52 AM Yuta Kitamura <yutak@chromium.org> wrote: Replies inline. On Tue","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 15:53:26 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 12:10 AM, Yuta Kitamura <yutak@chromium.org> wrote: A1: No, you don'","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 16:32:17 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 12:53 AM, Daniel Cheng <dcheng@chromium.org> wrote: Not with static","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 13:29:32 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 8:32 AM, Peter Kasting <pkasting@google.com> wrote: On Tue, Apr 5, 2016","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 13:53:50 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 9:29 PM, Yuta Kitamura <yutak@chromium.org> wrote: On Wed, Apr 6, 2016","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 22:04:54 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 9:53 PM, Yuta Kitamura <yutak@chromium.org> wrote: On Wed, Apr 6, 2016","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 22:06:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 10:04 PM Peter Kasting <pkasting@google.com> wrote: On Tue, Apr 5, 2016","payload":{"headers":[{"name":"From","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 05:13:27 +0000"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Peter Kasting <pkasting@google.com>, Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"I'd like to consider using them in WTF. They make sense for the standard library. On Apr 5, 2016","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 22:20:20 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Daniel Cheng <dcheng@chromium.org>"},{"name":"Cc","value":"yutak@chromium.org, Dana Jansens <danakj@chromium.org>, blink-dev <blink-dev@chromium.org>, Peter Kasting <pkasting@google.com>"}]}},{"snippet":"FWIW, I agree that the style owners should grant exceptions for certain uses of && qualifiers","payload":{"headers":[{"name":"From","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 22:44:16 -0700"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Daniel Cheng <dcheng@chromium.org>, Yuta Kitamura <yutak@chromium.org>, Dana Jansens <danakj@chromium.org>, blink-dev <blink-dev@chromium.org>, Peter Kasting <pkasting@google.com>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 2:06 PM, Peter Kasting <pkasting@google.com> wrote: On Tue, Apr 5, 2016","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 14:59:57 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"Can we use unique_ptr with WTF::bind now, with the Function taking ownership and passing it along the","payload":{"headers":[{"name":"Date","value":"Wed, 6 Apr 2016 18:17:17 +0100"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 1:44 AM, Jeffrey Yasskin <jyasskin@chromium.org> wrote: FWIW, I agree","payload":{"headers":[{"name":"Date","value":"Wed, 6 Apr 2016 13:54:09 -0400"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"To","value":"Jeffrey Yasskin <jyasskin@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Yuta Kitamura <yutak@chromium.org>, Dana Jansens <danakj@chromium.org>, blink-dev <blink-dev@chromium.org>, Peter Kasting <pkasting@google.com>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 2:17 AM, Michael van Ouwerkerk <mvanouwerkerk@chromium.org> wrote: Can","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 13:04:50 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Michael van Ouwerkerk <mvanouwerkerk@chromium.org>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, blink-dev <blink-dev@chromium.org>, Dana Jansens <danakj@chromium.org>"}]}},{"snippet":"On Thu, Apr 7, 2016 at 2:54 AM, Nico Weber <thakis@chromium.org> wrote: On Wed, Apr 6, 2016 at","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 7 Apr 2016 13:09:51 +0900"},{"name":"Subject","value":"Re: [blink-dev] PSA: Start using std::unique_ptr in Blink!"},{"name":"To","value":"Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"Jeffrey Yasskin <jyasskin@chromium.org>, Elliott Sprehn <esprehn@chromium.org>, Daniel Cheng <dcheng@chromium.org>, Dana Jansens <danakj@chromium.org>, blink-dev <blink-dev@chromium.org>, Peter Kasting <pkasting@google.com>"}]}}]},{"messages":[{"snippet":"Hi all, Red cells may require action from API owners. Data from bit.ly/blinkintents. Date Sender","payload":{"headers":[{"name":"From","value":"Dru Knox <dknox@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 00:40:41 +0000"},{"name":"Subject","value":"[blink-dev] Last week in Blink intents"},{"name":"To","value":"\"blink-dev+announce@chromium.org\" <blink-dev+announce@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Mon, 4 Apr 2016 11:23:41 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - April 4, 2016"},{"name":"From","value":"\"'Emil A Eklund' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Hi Now that Oilpan is shipped, we wrote up some documents for Blink's memory management: - High-","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 4 Apr 2016 21:07:00 +0900"},{"name":"Subject","value":"[blink-dev] Documentation for Blink's memory management"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Yuta Kitamura <yutak@chromium.org>"}]}},{"snippet":"Thanks for writing the documentation! It looks like none of the documents mention the oilpan compiler","payload":{"headers":[{"name":"Date","value":"Mon, 4 Apr 2016 13:30:13 -0400"},{"name":"Subject","value":"Re: [blink-dev] Documentation for Blink's memory management"},{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Yuta Kitamura <yutak@chromium.org>"}]}},{"snippet":"Den 4/4/2016 19:30, Nico Weber skreiv: > Thanks for writing the documentation! > > It looks","payload":{"headers":[{"name":"Subject","value":"Re: [blink-dev] Documentation for Blink's memory management"},{"name":"To","value":"Nico Weber <thakis@chromium.org>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Yuta Kitamura <yutak@chromium.org>"},{"name":"From","value":"Sigbjorn Finne <sigbjornf@opera.com>"},{"name":"Date","value":"Mon, 4 Apr 2016 20:03:39 +0200"}]}}]},{"messages":[{"snippet":"Hi TL:DR: All WillBe types are gone. Oilpan v1 finished :D We've finished shipping Oilpan and","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 4 Apr 2016 21:05:58 +0900"},{"name":"Subject","value":"[blink-dev] Oilpan v1 finished"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Mads Ager <ager@google.com>, Lars Bak <bak@google.com>, Erik Corry <erikcorry@google.com>, Vyacheslav Egorov <vegorov@google.com>, Gustav Wibling <wibling@google.com>, Ian Zerny <zerny@google.com>, \"Sigbjørn Finne\" <sigbjornf@opera.com>, Kent Tamura <tkent@chromium.org>, Keishi Hattori <keishi@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Kouhei Ueno <kouhei@chromium.org>, Yuta Kitamura <yutak@chromium.org>, amineer@chromium.org, Dirk Pranke <dpranke@chromium.org>, \"Paweł Hajdan\" <phajdan@google.com>, Ross McIlroy <rmcilroy@chromium.org>, Sami Kyostila <skyostil@chromium.org>, Jochen Eisinger <jochen@chromium.org>, hpayer <hpayer@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Juan Antonio Navarro Pérez\" <perezju@chromium.org>, Yutaka Hirano <yhirano@chromium.org>"}]}},{"snippet":"Congratuations to the Oilpan team!! This is a great achievement. Chris On Mon, Apr 4, 2016 at 5:06 AM","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Mon, 04 Apr 2016 16:09:41 +0000"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Great work pushing this through Kentaro and team! Oilpan makes the management of Blink's objects","payload":{"headers":[{"name":"Date","value":"Mon, 4 Apr 2016 10:31:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"From","value":"Kenneth Russell <kbr@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Congrats! On Mon, Apr 4, 2016, 10:31 AM Kenneth Russell <kbr@chromium.org> wrote: Great work","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Mon, 04 Apr 2016 18:25:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"To","value":"Kenneth Russell <kbr@chromium.org>, Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Huge congrats to the team on this milestone. This has been an enormous project and you've all","payload":{"headers":[{"name":"Date","value":"Mon, 4 Apr 2016 16:36:44 -0700"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Mads Ager <ager@google.com>, Lars Bak <bak@google.com>, Erik Corry <erikcorry@google.com>, Vyacheslav Egorov <vegorov@google.com>, Gustav Wibling <wibling@google.com>, Ian Zerny <zerny@google.com>, \"Sigbjørn Finne\" <sigbjornf@opera.com>, Kent Tamura <tkent@chromium.org>, Keishi Hattori <keishi@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Kouhei Ueno <kouhei@chromium.org>, Yuta Kitamura <yutak@chromium.org>, amineer@chromium.org, Dirk Pranke <dpranke@chromium.org>, \"Paweł Hajdan\" <phajdan@google.com>, Ross McIlroy <rmcilroy@chromium.org>, Sami Kyostila <skyostil@chromium.org>, Jochen Eisinger <jochen@chromium.org>, hpayer <hpayer@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Juan Antonio Navarro Pérez\" <perezju@chromium.org>, Yutaka Hirano <yhirano@chromium.org>"}]}},{"snippet":"Really happy to finally see the WillBe types disappear. Things Take Time. Congratulations Haraken! :)","payload":{"headers":[{"name":"From","value":"\"'Mads Ager' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 05:05:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"To","value":"Peter Kasting <pkasting@google.com>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Lars Bak <bak@google.com>, Erik Corry <erikcorry@google.com>, Vyacheslav Egorov <vegorov@google.com>, Gustav Wibling <wibling@google.com>, Ian Zerny <zerny@google.com>, \"Sigbjørn Finne\" <sigbjornf@opera.com>, Kent Tamura <tkent@chromium.org>, Keishi Hattori <keishi@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Kouhei Ueno <kouhei@chromium.org>, Yuta Kitamura <yutak@chromium.org>, amineer@chromium.org, Dirk Pranke <dpranke@chromium.org>, \"Paweł Hajdan\" <phajdan@google.com>, Ross McIlroy <rmcilroy@chromium.org>, Sami Kyostila <skyostil@chromium.org>, Jochen Eisinger <jochen@chromium.org>, hpayer <hpayer@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Juan Antonio Navarro Pérez\" <perezju@chromium.org>, Yutaka Hirano <yhirano@chromium.org>"}]}},{"snippet":"Fantastic, thanks to everyone involved! On Tue, Apr 5, 2016 at 7:05 AM, 'Mads Ager' via blink","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 13:47:31 +0200"},{"name":"Subject","value":"Re: [blink-dev] Oilpan v1 finished"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Mads Ager <ager@google.com>"},{"name":"Cc","value":"Peter Kasting <pkasting@google.com>, Kentaro Hara <haraken@chromium.org>, blink-dev <blink-dev@chromium.org>, Lars Bak <bak@google.com>, Erik Corry <erikcorry@google.com>, Vyacheslav Egorov <vegorov@google.com>, Gustav Wibling <wibling@google.com>, Ian Zerny <zerny@google.com>, \"Sigbjørn Finne\" <sigbjornf@opera.com>, Kent Tamura <tkent@chromium.org>, Keishi Hattori <keishi@chromium.org>, Hitoshi Yoshida <peria@chromium.org>, Kouhei Ueno <kouhei@chromium.org>, Yuta Kitamura <yutak@chromium.org>, amineer@chromium.org, Dirk Pranke <dpranke@chromium.org>, \"Paweł Hajdan\" <phajdan@google.com>, Ross McIlroy <rmcilroy@chromium.org>, Sami Kyostila <skyostil@chromium.org>, Jochen Eisinger <jochen@chromium.org>, hpayer <hpayer@chromium.org>, Primiano Tucci <primiano@chromium.org>, \"Juan Antonio Navarro Pérez\" <perezju@chromium.org>, Yutaka Hirano <yhirano@chromium.org>"}]}},{"snippet":"Status update: keishi@, sigbjornf@ and haraken@ finished removing almost all non-Oilpan code. You don","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 18 Apr 2016 10:22:29 +0900"},{"name":"Subject","value":"[blink-dev] Re: Oilpan v1 finished"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Statistics for project chromium excluding paths in the following set: third_party/WebKit from 2016-03","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 4 Apr 2016 10:56:40 +0200"},{"name":"Subject","value":"[chromium-dev] CQ stats for the week of March 28"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>"}]}},{"snippet":"Statistics for project chromium only for paths in the following set: third_party/WebKit from 2016-03-","payload":{"headers":[{"name":"From","value":"\"Paweł Hajdan, Jr.\" <phajdan.jr@chromium.org>"},{"name":"Date","value":"Mon, 4 Apr 2016 11:15:46 +0200"},{"name":"Subject","value":"[blink-dev] CQ stats for the week of March 28"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails yuzus@chromium.org, yuzus@google.com Spec https://dom.spec.whatwg.org/#dom-node-","payload":{"headers":[{"name":"Date","value":"Mon, 4 Apr 2016 16:50:10 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: Node.isConnected"},{"name":"From","value":"\"'Yuzu Saijo' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev@chromium.org"}]}},{"snippet":"On 4/4/16 3:50 AM, 'Yuzu Saijo' via blink-dev wrote: > Interoperability and Compatibility","payload":{"headers":[{"name":"Subject","value":"[blink-dev] Re: Intent to Implement and Ship: Node.isConnected"},{"name":"To","value":"Yuzu Saijo <yuzus@google.com>, blink-dev@chromium.org"},{"name":"From","value":"Boris Zbarsky <bzbarsky@mit.edu>"},{"name":"Date","value":"Mon, 4 Apr 2016 11:41:24 -0400"}]}},{"snippet":"Per the discussion, https://github.com/w3c/webcomponents/issues/81, the current conclusion is to","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 04:58:36 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Node.isConnected"},{"name":"To","value":"Boris Zbarsky <bzbarsky@mit.edu>, Yuzu Saijo <yuzus@google.com>, blink-dev@chromium.org"}]}},{"snippet":"LGTM1 On Tue, Apr 5, 2016 at 6:58 AM, Hayato Ito <hayato@chromium.org> wrote: Per the","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 13:50:36 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Node.isConnected"},{"name":"From","value":"\"Philip Jägenstedt\" <philipj@opera.com>"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, Yuzu Saijo <yuzus@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Apr 5, 2016 at 4:50 AM Philip Jägenstedt <philipj@opera.com> wrote: LGTM1 On Tue,","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 00:12:12 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Node.isConnected"},{"name":"To","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Boris Zbarsky <bzbarsky@mit.edu>, Yuzu Saijo <yuzus@google.com>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3. :DG< On Tue, Apr 5, 2016 at 5:12 PM, Chris Harrelson <chrishtr@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Tue, 5 Apr 2016 20:56:46 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Intent to Implement and Ship: Node.isConnected"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"\"Philip Jägenstedt\" <philipj@opera.com>, Hayato Ito <hayato@chromium.org>, Boris Zbarsky <bzbarsky@mit.edu>, Yuzu Saijo <yuzus@google.com>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Blink bug status as of 2016-04-04 Component Open Unconfirmed Untriaged Pri-0/1 No owner Oldest Whole","payload":{"headers":[{"name":"From","value":"\"'TAMURA, Kent' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Mon, 4 Apr 2016 10:56:23 +0900"},{"name":"Subject","value":"[blink-dev] Blink bug status as of 2016-04-04"},{"name":"To","value":"blink-dev+status@chromium.org"}]}}]},{"messages":[{"snippet":"Hello, When I inspect my Shared Worker via chrome://inspect , the debugger always stops at the very","payload":{"headers":[{"name":"Date","value":"Fri, 1 Apr 2016 03:53:32 -0700 (PDT)"},{"name":"From","value":"velicky.martin@gmail.com"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] When inspecting Shared worker, debugger always stops at first line"}]}},{"snippet":"There's a checkbox somewhere that makes it do that. I've lost track of where during the","payload":{"headers":[{"name":"From","value":"\"'Joe Medley' via blink-dev\" <blink-dev@chromium.org>"},{"name":"Date","value":"Fri, 1 Apr 2016 09:01:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] When inspecting Shared worker, debugger always stops at first line"},{"name":"To","value":"velicky.martin@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Hi Martin, I think it's expected behavior. See this blog post: http://blog.chromium.org/2012/04/","payload":{"headers":[{"name":"From","value":"Hiroki Nakagawa <nhiroki@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 10:21:37 +0900"},{"name":"Subject","value":"Re: [blink-dev] When inspecting Shared worker, debugger always stops at first line"},{"name":"To","value":"velicky.martin@gmail.com"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Joe Medley <jmedley@google.com>"}]}}]},{"messages":[{"snippet":"I have a class (blink::OriginTrials) for which the public API is code which is generated at compile","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Thu, 31 Mar 2016 16:03:55 -0400"},{"name":"Subject","value":"[blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 1:03 PM, Ian Clelland <iclelland@chromium.org> wrote: I have a class (","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 13:19:57 -0700"},{"name":"Subject","value":"Re: [blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"From","value":"Marijn Kruisselbrink <mek@chromium.org>"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 4:03 PM, Ian Clelland <iclelland@chromium.org> wrote: I have a class (","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 16:58:06 -0400"},{"name":"Subject","value":"Re: [blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"From","value":"Jeremy Roman <jbroman@chromium.org>"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 1:03 PM, Ian Clelland <iclelland@chromium.org> wrote: I have a class (","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 14:15:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 5:15 PM, Dimitri Glazkov <dglazkov@chromium.org> wrote: On Thu, Mar 31,","payload":{"headers":[{"name":"From","value":"Ian Clelland <iclelland@chromium.org>"},{"name":"Date","value":"Fri, 1 Apr 2016 00:13:54 -0400"},{"name":"Subject","value":"Re: [blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Yeah we've done this before in a couple places, HTMLMetaElement-in.cpp and Settings.h. In general","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 21:59:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] How to mix generated and hand-written code in the same class?"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Ian Clelland <iclelland@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Please replace the following macros in your code, except wtf/Vector.h and wtf/HashTable.h. ASSERT -","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Thu, 31 Mar 2016 16:55:16 +0900"},{"name":"Subject","value":"[blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 12:55 AM, TAMURA, Kent <tkent@chromium.org> wrote:","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 01:18:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"\"'Peter Kasting' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Some security asserts are too slow. For example having an extra virtual call inside every type cast","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 01:27:14 -0700"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Peter Kasting <pkasting@google.com>"},{"name":"Cc","value":"Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 4:55 PM, TAMURA, Kent <tkent@chromium.org> wrote: Please replace the","payload":{"headers":[{"name":"From","value":"Yuta Kitamura <yutak@chromium.org>"},{"name":"Date","value":"Thu, 31 Mar 2016 18:03:06 +0900"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"It looks we have to guard DCHECK(EXP) by "DCHECK_IS_ON()" if EXP uses what does not *exist*","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Tue, 05 Apr 2016 13:34:22 +0000"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Yuta Kitamura <yutak@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Apr 5, 2016 at 6:34 AM, Hayato Ito <hayato@chromium.org> wrote: It looks we have to","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Tue, 5 Apr 2016 11:04:38 -0700"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, Apr 6, 2016 at 3:04 AM, Dana Jansens <danakj@chromium.org> wrote: On Tue, Apr 5, 2016","payload":{"headers":[{"name":"From","value":"Takayoshi Kochi <kochi@chromium.org>"},{"name":"Date","value":"Wed, 6 Apr 2016 13:45:18 +0900"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Hayato Ito <hayato@chromium.org>, Yuta Kitamura <yutak@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Thanks. That makes sense. DCHECK is not completely equivalent to ASSERT in this sense. On Wed, Apr 6,","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Wed, 06 Apr 2016 06:49:46 +0000"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Yuta Kitamura <yutak@chromium.org>, \"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Thu, Mar 31, 2016 at 4:55 PM, TAMURA, Kent <tkent@chromium.org> wrote: Please replace the","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 8 Apr 2016 09:50:04 +0900"},{"name":"Subject","value":"[blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Do you have any update about the performance regression caused by the RELEASE_ASSERT => CHECK","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 11:48:16 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Apr 29, 2016 at 2:48 AM, Kentaro Hara <haraken@chromium.org> wrote: Do you have any","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Fri, 29 Apr 2016 13:44:53 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Fri, Apr 29, 2016 at 2:48 AM, Kentaro Hara <haraken@chromium.org> wrote: Do you have any","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 13:12:27 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"\"TAMURA, Kent\" <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"This is not ready yet, it needs to be as fast as wtf was for Release builds that are not official","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 13:19:25 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 1:19 PM, Elliott Sprehn <esprehn@chromium.org> wrote: This is not ready","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 13:29:12 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 1:29 PM, Dana Jansens <danakj@chromium.org> wrote: On Wed, May 4, 2016","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 13:42:34 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Elliott Sprehn <esprehn@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 1:29 PM, Dana Jansens <danakj@chromium.org> wrote: On Wed, May 4, 2016","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 13:42:52 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 1:42 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Wed, May 4,","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 13:45:30 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 1:42 PM, Brett Wilson <brettw@chromium.org> wrote: On Wed, May 4, 2016","payload":{"headers":[{"name":"From","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Date","value":"Wed, 4 May 2016 13:46:58 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wednesday, May 4, 2016, Elliott Sprehn <esprehn@chromium.org> wrote: On Wed, May 4, 2016 at","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 13:59:24 -0700"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I think it's fair to say that Release is *representative* of Official performance. So it's","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 14:09:33 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Scott Graham <scottmg@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wednesday, May 4, 2016, Scott Graham <scottmg@chromium.org> wrote: On Wed, May 4, 2016 at 1:","payload":{"headers":[{"name":"Date","value":"Wed, 4 May 2016 15:28:37 -0700"},{"name":"Subject","value":"Re: [blink-dev] Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Scott Graham <scottmg@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Wed, May 4, 2016 at 4:46 PM, Elliott Sprehn <esprehn@chromium.org> wrote: On Wed, May 4,","payload":{"headers":[{"name":"Date","value":"Thu, 5 May 2016 11:18:41 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"\"'Tom Hudson' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I got a performance regression report in https://bugs.chromium.org/p/chromium/issues/detail?id=602318","payload":{"headers":[{"name":"From","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Date","value":"Mon, 09 May 2016 06:06:55 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Tom Hudson <tomhudson@google.com>, Elliott Sprehn <esprehn@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"As far as I see the performance graph, I'd say the regression is a noise (in particular, chromium","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Mon, 9 May 2016 15:13:31 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Hayato Ito <hayato@chromium.org>"},{"name":"Cc","value":"Tom Hudson <tomhudson@google.com>, Elliott Sprehn <esprehn@chromium.org>, Brett Wilson <brettw@chromium.org>, Dana Jansens <danakj@chromium.org>, Kent TAMURA <tkent@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There were desktop regressions too (see https://bugs.chromium.org/p/chromium/issues/detail?id=599867#","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 08:20:37 -0700 (PDT)"},{"name":"From","value":"Ivan Kotenkov <kotenkov@yandex-team.ru>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"haraken@chromium.org, tkent@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"}]}},{"snippet":"On Tue, May 10, 2016 at 8:20 AM, Ivan Kotenkov <kotenkov@yandex-team.ru> wrote: There were","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 13:42:49 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Ivan Kotenkov <kotenkov@yandex-team.ru>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 1:42 PM, Dana Jansens <danakj@chromium.org> wrote: On Tue, May 10, 2016","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 13:49:27 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"I had a 32-bit Windows release build handy. CHECK(debug::EnableInProcessStackDumping()); 0152B0CB E8","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 14:13:26 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"Does it differ further down? The compiler can probably figure out that IMMEDIATE_CRASH() won't","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 17:19:49 -0400"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 2:19 PM, Nico Weber <thakis@chromium.org> wrote: Does it differ further","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 14:24:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 2:24 PM, Brett Wilson <brettw@chromium.org> wrote: On Tue, May 10, 2016","payload":{"headers":[{"name":"From","value":"Antoine Labour <piman@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 14:27:43 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, May 10, 2016 at 2:27 PM, Antoine Labour <piman@chromium.org> wrote: On Tue, May 10,","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 14:34:04 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"To","value":"Antoine Labour <piman@chromium.org>"},{"name":"Cc","value":"Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"Don't think it matters on Windows: https://code.google.com/p/chromium/codesearch#chromium/src/","payload":{"headers":[{"name":"Date","value":"Tue, 10 May 2016 14:36:29 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"From","value":"Scott Graham <scottmg@chromium.org>"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"FWIW, the progenitor of Chrome's base/logging.h in the internal Google code base has some updates","payload":{"headers":[{"name":"From","value":"Dale Curtis <dalecurtis@chromium.org>"},{"name":"Date","value":"Tue, 10 May 2016 14:54:29 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Scott Graham <scottmg@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"What's the current status of the RELEASE_ASSERT => CHECK replacement? I think that the latest","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 11:01:36 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dale Curtis <dalecurtis@chromium.org>"},{"name":"Cc","value":"Scott Graham <scottmg@chromium.org>, Brett Wilson <brettw@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"The performance issue should have been fixed in https://codereview.chromium.org/1937613002 but that","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Mon, 13 Jun 2016 21:45:07 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 6:45 AM, Brett Wilson <brettw@chromium.org> wrote: The performance","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 13:38:36 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 6:45 AM, Brett Wilson <brettw@chromium.org> wrote: The performance","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 14:20:24 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"Yup my plan is to re-land Nico's https://codereview.chromium.org/1982123002/ once the breakpad","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 14:24:10 +0000"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Nico Weber <thakis@chromium.org>, Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 4:24 PM, Primiano Tucci <primiano@chromium.org> wrote: Yup my plan is","payload":{"headers":[{"name":"From","value":"Nico Weber <thakis@chromium.org>"},{"name":"Date","value":"Tue, 14 Jun 2016 16:30:36 +0200"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Cc","value":"Brett Wilson <brettw@chromium.org>, Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Tue, Jun 14, 2016 at 11:30 PM, Nico Weber <thakis@chromium.org> wrote: On Tue, Jun 14, 2016","payload":{"headers":[{"name":"From","value":"Kentaro Hara <haraken@chromium.org>"},{"name":"Date","value":"Wed, 15 Jun 2016 00:07:16 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Nico Weber <thakis@chromium.org>"},{"name":"Cc","value":"Primiano Tucci <primiano@chromium.org>, Brett Wilson <brettw@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Mon, Jun 13, 2016 at 9:45 PM, Brett Wilson <brettw@chromium.org> wrote: The performance","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 16 Jun 2016 12:57:09 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"Just to be sure, these testes are running in official builds, right? Non-official builds will still","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Thu, 16 Jun 2016 13:31:45 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"On Thu, Jun 16, 2016 at 1:31 PM, Brett Wilson <brettw@chromium.org> wrote: Just to be sure,","payload":{"headers":[{"name":"From","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Date","value":"Thu, 16 Jun 2016 14:15:18 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"With Nico's patch for logging https://codereview.chromium.org/1982123002 I added a check to the","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Fri, 17 Jun 2016 14:11:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Dana Jansens <danakj@chromium.org>"},{"name":"Cc","value":"Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"Closing the loop on this. The breakpad support for SIGTRAP landed and seems to have stuck. I'm","payload":{"headers":[{"name":"From","value":"Primiano Tucci <primiano@chromium.org>"},{"name":"Date","value":"Thu, 7 Jul 2016 16:55:48 +0100"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Cc","value":"Dana Jansens <danakj@chromium.org>, Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>, blink-dev <blink-dev@chromium.org>, Kent Tamura <tkent@chromium.org>"}]}},{"snippet":"I had some investigation for Windows-only regression, crbug.com/614852, even with Nico's change. In Windows official x86 VC++ build, RELEASE_ASSERT(cond) and CHECK(cond) produced different","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 14:32:11 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Brett Wilson <brettw@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>"}]}},{"snippet":"More investigation. The following |func1()| produces unnecessary instructions. class LM { public: LM(); ~LM(); }; int func1() { true ? (void) 0 : LM(); return 15; } 00000000: 55 push ebp 00000001: 8B","payload":{"headers":[{"name":"From","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 17:29:21 +0900"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>"},{"name":"Cc","value":"Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Brett Wilson <brettw@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>"}]}},{"snippet":"My guess is that this has to do with us using "/Oy-" (in build/config/compiler/BUILD.gn) which disables omitting frame pointers. I think we do this to make the crash dumps usable. It might be","payload":{"headers":[{"name":"From","value":"Brett Wilson <brettw@chromium.org>"},{"name":"Date","value":"Fri, 8 Jul 2016 09:41:47 -0700"},{"name":"Subject","value":"Re: [blink-dev] Re: Update of wtf/Assertions.h, and ASSERT macros deprecation"},{"name":"To","value":"\"TAMURA, Kent\" <tkent@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, Kentaro Hara <haraken@chromium.org>, Dale Curtis <dalecurtis@chromium.org>, Scott Graham <scottmg@chromium.org>, Antoine Labour <piman@chromium.org>, Nico Weber <thakis@chromium.org>, Dana Jansens <danakj@chromium.org>, Ivan Kotenkov <kotenkov@yandex-team.ru>"}]}}]},{"messages":[{"snippet":"Project Page: Out-of-process iframes (OOPIFs) Status, March 30: Recent updates: We're continuing","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 15:26:34 -0700"},{"name":"Subject","value":"[blink-dev] OOPIF Status, March 30, 2016"},{"name":"From","value":"Charlie Reis <creis@chromium.org>"},{"name":"To","value":"chromium-dev <chromium-dev@chromium.org>, blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"\"site-isolation-dev@chromium.org\" <site-isolation-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 13:53:46 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - February 28, 2016"},{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"...and by February I obviously meant March. I'm not _that_ far behind on meeting notes. (thanks","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 14:10:51 -0700"},{"name":"Subject","value":"[blink-dev] Re: Layout Team Status - February 28, 2016"},{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"The layout team is a long-term team that owns the layout code in blink. See https://www.chromium.org/","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 13:53:40 -0700"},{"name":"Subject","value":"[blink-dev] Layout Team Status - February 21, 2016"},{"name":"From","value":"Emil A Eklund <eae@chromium.org>"},{"name":"To","value":"\"layout-dev@chromium.org\" <layout-dev@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Storage team (SFO/MTV) weekly updates. The Storage team works on APIs like Indexed DB, DOM Storage","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 09:55:19 -0700"},{"name":"Subject","value":"[blink-dev] OWP Storage Team Status (2016-03-29)"},{"name":"From","value":"\"'Joshua Bell' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Intent to Implement and Ship: referrer policy on Fetch API Request Contact emails yhirano@chromium.","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 20:48:30 +0900"},{"name":"Subject","value":"[blink-dev] Intent to Implement and Ship: referrer policy on Fetch API Request"},{"name":"From","value":"Yutaka Hirano <yhirano@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm1 On Wed, Mar 30, 2016 at 1:49 PM Yutaka Hirano <yhirano@chromium.org> wrote: Intent to","payload":{"headers":[{"name":"From","value":"Jochen Eisinger <jochen@chromium.org>"},{"name":"Date","value":"Wed, 30 Mar 2016 14:34:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: referrer policy on Fetch API Request"},{"name":"To","value":"Yutaka Hirano <yhirano@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Wed, Mar 30, 2016 at 7:35 AM Jochen Eisinger <jochen@chromium.org> wrote: lgtm1 On Wed","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Wed, 30 Mar 2016 16:21:34 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: referrer policy on Fetch API Request"},{"name":"To","value":"Jochen Eisinger <jochen@chromium.org>, Yutaka Hirano <yhirano@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM3 On Wed, Mar 30, 2016 at 7:48 AM, Yutaka Hirano <yhirano@chromium.org> wrote: Intent to","payload":{"headers":[{"name":"From","value":"Rick Byers <rbyers@chromium.org>"},{"name":"Date","value":"Wed, 30 Mar 2016 18:40:08 -0400"},{"name":"Subject","value":"Re: [blink-dev] Intent to Implement and Ship: referrer policy on Fetch API Request"},{"name":"To","value":"Yutaka Hirano <yhirano@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"(bcc blink-dev) The Style team is a group of engineers, working at Google (Sydney and Tokyo), Opera (","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 11:37:22 +1100"},{"name":"Subject","value":"[blink-dev] Last week in Style"},{"name":"From","value":"Eddy Mead <meade@chromium.org>"},{"name":"To","value":"style-dev <style-dev@chromium.org>"}]}}]},{"messages":[{"snippet":"Contact emails chongz@chromium.org, dtapuska@chromium.org Spec https://w3c.github.io/uievents/#keys-","payload":{"headers":[{"name":"Date","value":"Tue, 29 Mar 2016 13:33:39 -0700 (PDT)"},{"name":"From","value":"Chong <chongz@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Subject","value":"[blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"}]}},{"snippet":"LGTM1 On Tue, Mar 29, 2016 at 1:33 PM Chong <chongz@chromium.org> wrote: Contact emails chongz@","payload":{"headers":[{"name":"From","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Date","value":"Tue, 29 Mar 2016 22:31:53 +0000"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"To","value":"Chong <chongz@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"LGTM2 On Tue, Mar 29, 2016 at 3:31 PM, Chris Harrelson <chrishtr@chromium.org> wrote: LGTM1 On","payload":{"headers":[{"name":"Date","value":"Tue, 29 Mar 2016 15:32:19 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"From","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"To","value":"Chris Harrelson <chrishtr@chromium.org>"},{"name":"Cc","value":"Chong <chongz@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"lgtm3 2016/03/30 午前7:32 "Dimitri Glazkov" <dglazkov@chromium.org>: LGTM2 On Tue, Mar","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 10:28:24 +0900"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"From","value":"\"'TAMURA, Kent' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Dimitri Glazkov <dglazkov@chromium.org>"},{"name":"Cc","value":"Chong <chongz@chromium.org>, Chris Harrelson <chrishtr@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"On Tue, Mar 29, 2016 at 11:33 PM, Chong <chongz@chromium.org> wrote: Low. We have positive","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Wed, 30 Mar 2016 09:41:51 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"To","value":"Chong <chongz@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"Sorry for the confusion. Yes it's supported since Firefox 29.0 and Internet Explorer 9.0 (as well","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 07:32:50 -0700 (PDT)"},{"name":"From","value":"Chong <chongz@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chongz@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"}]}},{"snippet":"I think that it's more accurate to say that we are interoperable with FF and that the IE version","payload":{"headers":[{"name":"Date","value":"Wed, 30 Mar 2016 09:38:42 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"From","value":"\"'Gary Kačmarčík (Кошмарчик)' via blink-dev\" <blink-dev@chromium.org>"},{"name":"To","value":"Chong <chongz@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"I suspected so, but I took his word for it. ;) Is there a comprehensive test suite, by the way? ☆","payload":{"headers":[{"name":"From","value":"PhistucK <phistuck@gmail.com>"},{"name":"Date","value":"Thu, 31 Mar 2016 13:41:52 +0300"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"To","value":"\"Gary Kačmarčík (Кошмарчик)\" <garykac@google.com>"},{"name":"Cc","value":"Chong <chongz@chromium.org>, blink-dev <blink-dev@chromium.org>"}]}},{"snippet":"There is a manual test suite for en-US and fr-FR: https://github.com/w3c/uievents#testing And since","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 07:23:55 -0700 (PDT)"},{"name":"From","value":"Chong <chongz@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"garykac@google.com, chongz@chromium.org"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"}]}},{"snippet":"Do we have any testing for the fields on JS-synthesized events, especially those synthesized w/ only","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 09:26:00 -0700"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"},{"name":"From","value":"Wez <wez@chromium.org>"},{"name":"To","value":"Chong <chongz@chromium.org>"},{"name":"Cc","value":"blink-dev <blink-dev@chromium.org>, \"Gary Kačmarčík\" <garykac@google.com>"}]}},{"snippet":"Yes we have constructor tests for KeyboardEvent.key, but we won't normalize it even if it does","payload":{"headers":[{"name":"Date","value":"Thu, 31 Mar 2016 11:59:41 -0700 (PDT)"},{"name":"From","value":"Chong <chongz@chromium.org>"},{"name":"To","value":"blink-dev <blink-dev@chromium.org>"},{"name":"Cc","value":"chongz@chromium.org, garykac@google.com"},{"name":"Subject","value":"Re: [blink-dev] Intent to Ship: DOM KeyboardEvent.key attribute"}]}}]}]
diff --git a/chromium/src/third_party/blink/perf_tests/css/OWNERS b/chromium/src/third_party/blink/perf_tests/css/OWNERS deleted file mode 100644 index dbb9dfd..0000000 --- a/chromium/src/third_party/blink/perf_tests/css/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -file://third_party/blink/renderer/core/css/OWNERS -
diff --git a/chromium/src/third_party/blink/perf_tests/dom/OWNERS b/chromium/src/third_party/blink/perf_tests/dom/OWNERS deleted file mode 100644 index 2757923..0000000 --- a/chromium/src/third_party/blink/perf_tests/dom/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/core/dom/OWNERS
diff --git a/chromium/src/third_party/blink/perf_tests/layout/change-text-css-contain.html b/chromium/src/third_party/blink/perf_tests/layout/change-text-css-contain.html deleted file mode 100644 index 8052746..0000000 --- a/chromium/src/third_party/blink/perf_tests/layout/change-text-css-contain.html +++ /dev/null
@@ -1,58 +0,0 @@ -<!DOCTYPE html> -<style> -body { - display: grid; - grid: repeat(100, 30px) / repeat(100, 60px); -} - -span { - border: solid; - width: 60px; - height: 30px; - box-sizing: border-box; - contain: size layout; - line-height: 1; -} - -span:nth-child(2n) { - text-align: center; -} - -span:nth-child(3n) { - text-align: end; -} -</style> -<script src="../resources/runner.js"></script> -<script> - let textNodes = []; - - function populateData() { - for (let i = 0; i < 100*100; i++) { - let span = document.createElement('span'); - span.classList.add('cell'); - let textNode = document.createTextNode('' + (100 * Math.random()).toFixed(2)); - span.appendChild(textNode); - document.body.appendChild(span); - textNodes.push(textNode); - } - } - - function startTest() { - populateData(); - - PerfTestRunner.forceLayout(); - - PerfTestRunner.measureRunsPerSecond({ - description: "Measures performance of changing text nodes content.", - run: function() { - for (let i = 0; i < textNodes.length; i++) { - textNodes[i].data = '' + (100 * Math.random()).toFixed(2); - } - - PerfTestRunner.forceLayout(); - }, - }); - } -</script> -<body onload="startTest();"> -</body>
diff --git a/chromium/src/third_party/blink/perf_tests/paint/OWNERS b/chromium/src/third_party/blink/perf_tests/paint/OWNERS deleted file mode 100644 index cc47633..0000000 --- a/chromium/src/third_party/blink/perf_tests/paint/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -pdr@chromium.org -schenney@chromium.org -wangxianzhu@chromium.org
diff --git a/chromium/src/third_party/blink/perf_tests/paint/contain-update-layer-tree.html b/chromium/src/third_party/blink/perf_tests/paint/contain-update-layer-tree.html deleted file mode 100644 index d9fd614..0000000 --- a/chromium/src/third_party/blink/perf_tests/paint/contain-update-layer-tree.html +++ /dev/null
@@ -1,72 +0,0 @@ -<!DOCTYPE html> -<title>Contain update layer tree performance</title> -<style> -#wrapper { - position: relative; -} -.cell { - position: absolute; - box-sizing: border-box; - border: solid; - contain: strict; -} -.progressbar { - position: absolute; - left: 0px; - top: 5px; - height: 10px; -} -</style> -<script src="../resources/runner.js"></script> -<script src="resources/paint.js"></script> -<pre id="log"></pre> -<div id="wrapper"></div> -<script> - const CELL_WIDTH = "50"; - const CELL_HEIGHT = "25"; - const NUM_ROWS = 200; - const NUM_COLUMNS = 200; - const DOM_DEPTH = 10; - - function createContent(depth) { - let content = document.createElement("div"); - content.appendChild(document.createElement("h1")); - content.appendChild(document.createElement("paragraph")); - if (depth > 0) - content.appendChild(createContent(depth - 1)); - return content; - } - - function setupTest() { - let wrapper = document.getElementById("wrapper"); - for (let i = 0; i < NUM_ROWS; i++) { - for (let j = 0; j < NUM_COLUMNS; j++) { - let cell = document.createElement("div"); - if (i == 0 && j == 0) - cell.id = "target"; - cell.classList.add("cell"); - cell.style.width = CELL_WIDTH + "px"; - cell.style.height = CELL_HEIGHT + "px"; - cell.style.left = (j * CELL_WIDTH) + "px"; - cell.style.top = (i * CELL_HEIGHT) + "px"; - cell.style.overflow = "visible"; - - cell.appendChild(createContent(DOM_DEPTH)); - - wrapper.appendChild(cell); - } - } - } - - function runTest() { - let cell = document.getElementById("target"); - // This causes a call to PaintLayer::SetNeedsCompositingInputsUpdate(). - cell.style.overflow = cell.style.overflow == "hidden" ? "visible" : "hidden"; - } - - setupTest(); - - measurePaint({ - run: runTest - }); -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/paint/containment-resize.html b/chromium/src/third_party/blink/perf_tests/paint/containment-resize.html deleted file mode 100644 index 7eee0f2..0000000 --- a/chromium/src/third_party/blink/perf_tests/paint/containment-resize.html +++ /dev/null
@@ -1,42 +0,0 @@ -<!DOCTYPE html> -<!-- This case is based on the test in crbug.com/692614. - https://www.scirra.com/labs/bugs/containlayoutperf-workaround/ --> -<style> -#container { - border: 1px solid green; - contain: content; - width: 600px; -} -.item { - outline: 1px solid blue; - overflow: hidden; - contain: content; -} -</style> - -<div id="container"> -</div> - -<script src="../resources/runner.js"></script> -<script src="resources/paint.js"></script> -<script> -const LOREM_IPSUM="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; -function createListItem() { - let wrap = document.createElement("div"); - let item = document.createElement("div"); - item.classList.add('item'); - item.textContent = LOREM_IPSUM; - wrap.appendChild(item); - container.appendChild(wrap); -}; - -for (let i = 0; i < 20000; ++i) - createListItem(); - -var target = container.firstElementChild.firstElementChild; -measurePaint({ - run: function() { - target.style.height = (target.offsetHeight - 1) + 'px'; - }, -}); -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/parser/OWNERS b/chromium/src/third_party/blink/perf_tests/parser/OWNERS deleted file mode 100644 index 67eaaa7..0000000 --- a/chromium/src/third_party/blink/perf_tests/parser/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/core/html/parser/OWNERS
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/OWNERS b/chromium/src/third_party/blink/perf_tests/shadow_dom/OWNERS deleted file mode 100644 index 2757923..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/core/dom/OWNERS
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/custom-detail-summary.js b/chromium/src/third_party/blink/perf_tests/shadow_dom/custom-detail-summary.js deleted file mode 100644 index cbf6b47..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/custom-detail-summary.js +++ /dev/null
@@ -1,39 +0,0 @@ -// We reuse the "backend" of the imperative Shadow DOM Distribution API for a new custom element, <my-detail>/<my-summary>. -//TODO(crbug.com/869308):Emulate other <summary><details> features - -class MySummaryElement extends HTMLElement { - constructor() { - super(); - } -} -customElements.define("my-summary", MySummaryElement); - -customElements.define("my-detail", class extends HTMLElement { - constructor() { - super(); - this.attachShadow({ mode: "open", slotAssignment: "manual" }); - } - connectedCallback() { - const target = this; - if (!target.shadowRoot.querySelector(':scope > slot')) { - const slot1 = document.createElement("slot"); - const slot2 = document.createElement("slot"); - const shadowRoot = target.shadowRoot; - shadowRoot.appendChild(slot1); - shadowRoot.appendChild(slot2); - slot1.style.display = "block"; - slot1.style.backgroundColor = "red"; - const observer = new MutationObserver(function(mutations) { - //Get the first <my-summary> element from <my-detail>'s direct children - const my_summary = target.querySelector(':scope > my-summary'); - if (my_summary) { - slot1.assign([my_summary]); - } else { - slot1.assign([]); - } - slot2.assign(target.childNodes); - }); - observer.observe(this, {childList: true}); - } - } -});
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/declarative-api.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/declarative-api.html deleted file mode 100644 index 68481f8..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/declarative-api.html +++ /dev/null
@@ -1,32 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'auto' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of slot assignment in auto-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - const slot2 = document.createElement("slot"); - slot2.name = "slot2"; - host.appendChild(child1); - shadow_root.appendChild(slot2); - child1.slot = "slot2"; - child1.assignedSlot; - slot2.assignedElements(); - slot2.remove(); - child1.assignedSlot; - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-appendchild.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-appendchild.html deleted file mode 100644 index ef2aba9..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-appendchild.html +++ /dev/null
@@ -1,26 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'manual' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - slot1.assign([child1]); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of appendChild in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - host.appendChild(child1); - child1.remove(); - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assign.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assign.html deleted file mode 100644 index 06417d8..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assign.html +++ /dev/null
@@ -1,26 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'manual' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of assign function in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - host.appendChild(child1); - slot1.assign([child1]); - child1.remove(); - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-elements.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-elements.html deleted file mode 100644 index 6d63ba2..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-elements.html +++ /dev/null
@@ -1,27 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'manual' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - slot1.assign([child1]); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of assignedElements() in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - host.appendChild(child1); - slot1.assignedElements(); - child1.remove(); - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-slot.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-slot.html deleted file mode 100644 index f77b996..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-assigned-slot.html +++ /dev/null
@@ -1,27 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'manual' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - slot1.assign([child1]); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of assignedSlot in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - host.appendChild(child1); - child1.assignedSlot; - child1.remove(); - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-insertbefore.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-insertbefore.html deleted file mode 100644 index 7e4882c..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api-insertbefore.html +++ /dev/null
@@ -1,28 +0,0 @@ -<!DOCTYPE html> -<script src="../resources/runner.js"></script> -<div id="host"> - <div id="child"></div> -</div> -<script> - const host = document.querySelector("#host"); - const shadow_root = host.attachShadow({ mode: 'open', slotAssignment: 'manual' }); - const slot1 = document.createElement("slot"); - const child1 = document.createElement("child"); - const child = document.querySelector("#child"); - slot1.assign([child1]); - shadow_root.appendChild(slot1); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of insertBefore in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - host.insertBefore(child1,child); - child1.remove(); - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api.html deleted file mode 100644 index 56ca1c9..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/imperative-api.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!doctype html> -<script src="../resources/runner.js"></script> -<div id="host"> - <div id="child1"></div> -</div> -<script> - const host = document.querySelector("#host"); - const child1 = document.querySelector("#child1"); - const shadow_root = host.attachShadow({ mode: "open", slotAssignment: "manual" }); - window.onload = function() { - PerfTestRunner.measureTime({ - description: "Measure performance of slot assignment in manual-slotting mode in shadow root.", - run: function() { - const start = PerfTestRunner.now(); - for (let i = 0; i < 100; i++) { - const slot1 = document.createElement("slot"); - shadow_root.appendChild(slot1); - slot1.assign([child1]); - child1.assignedSlot; - slot1.assignedElements(); - slot1.remove(); - child1.assignedSlot; - } - - return PerfTestRunner.now() - start; - } - }); - } -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/resources/declarative.js b/chromium/src/third_party/blink/perf_tests/shadow_dom/resources/declarative.js deleted file mode 100644 index 29648a9..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/resources/declarative.js +++ /dev/null
@@ -1,71 +0,0 @@ -(function() { - const lightDomElementName = 'x-elemnt'; // Must have the same length as 'template' - function getSnippet(useShadowDom,innerContent,lightDomDuplicates) { - innerContent = innerContent ?? '<span><!--This is the leaf node--></span>'; - lightDomDuplicates = lightDomDuplicates ?? 1; - PerfTestRunner.assert_true(!useShadowDom || lightDomDuplicates === 1,'Only light dom content can use duplicates'); - let openTag = useShadowDom ? '<template shadowroot=open>' : `<${lightDomElementName} shadowroot=open>`; - let closeTag = useShadowDom ? '</template>' : `</${lightDomElementName}>`; - let hiddenLightDomContent = useShadowDom ? '<span>Some non-slotted light dom content</span>' : '<!-- Some hidden light-dom content here -->'; - let extraCopies = ''; - while (lightDomDuplicates>1) { - extraCopies += `${openTag}${closeTag}`; - --lightDomDuplicates; - } - return `<div class="host">${extraCopies}${openTag}${innerContent}<span><!--Shadow content here--></span>${closeTag}${hiddenLightDomContent}</div>`; - } - - function getShadowMarkup(useShadowDom, depth, copies, lightDomDuplicates) { - let snippet = undefined; - for (let d=0;d<depth;++d) { - snippet = getSnippet(useShadowDom, snippet, lightDomDuplicates); - } - let html = '<!DOCTYPE html><body>'; - for(let i=0;i<copies;++i) { - html += snippet; - } - return html; - } - - const domParser = new DOMParser(); - function parseHtml(html) { - return domParser.parseFromString(html, 'text/html', {includeShadowRoots: true}); - } - - function measureParse(html) { - let start = PerfTestRunner.now(); - parseHtml(html); - return PerfTestRunner.now() - start; - } - - function parseAndAppend(parent, html) { - const fragment = domParser.parseFromString(html, 'text/html', {includeShadowRoots: true}); - parent.replaceChildren(...fragment.body.childNodes); - } - - function measureParseAndAppend(parent, html) { - parent.replaceChildren(); // Ensure empty - let start = PerfTestRunner.now(); - parseAndAppend(parent, html); - return PerfTestRunner.now() - start; - } - - // Do some double-checks that things are working: - function testParse(html) { - const test_div = document.createElement('div'); - measureParseAndAppend(test_div, html); - return test_div; - } - PerfTestRunner.assert_true(HTMLTemplateElement.prototype.hasOwnProperty("shadowRoot"),'Declarative Shadow DOM not enabled/supported'); - PerfTestRunner.assert_true(testParse(getShadowMarkup(true, 1, 1)).firstChild.shadowRoot,'Declarative Shadow DOM not detected'); - PerfTestRunner.assert_true(getShadowMarkup(true, 5, 6).length === getShadowMarkup(false, 5, 6).length,'Shadow and light DOM content should have identical length'); - const light1 = testParse(getShadowMarkup(false, 5, 6, /*lightDomDuplicates=*/1)).querySelectorAll(lightDomElementName).length; - const light2 = testParse(getShadowMarkup(false, 5, 6, /*lightDomDuplicates=*/2)).querySelectorAll(lightDomElementName).length; - PerfTestRunner.assert_true(light1*2 === light2,"The lightDomDuplicates parameter isn't working"); - - window.parseHtml = parseHtml; - window.measureParse = measureParse; - window.parseAndAppend = parseAndAppend; - window.measureParseAndAppend = measureParseAndAppend; - window.getShadowMarkup = getShadowMarkup; -})(); \ No newline at end of file
diff --git a/chromium/src/third_party/blink/perf_tests/shadow_dom/shadow-dom-overhead.html b/chromium/src/third_party/blink/perf_tests/shadow_dom/shadow-dom-overhead.html deleted file mode 100644 index f34cea2..0000000 --- a/chromium/src/third_party/blink/perf_tests/shadow_dom/shadow-dom-overhead.html +++ /dev/null
@@ -1,61 +0,0 @@ -<!DOCTYPE html> -<body> -<pre id="log"></pre> -<script src="../resources/runner.js"></script> -<script src="resources/declarative.js"></script> -<script> - -/* -This test tries to measure the overhead associated with parsing and -attaching one shadow root to the tree, as compared to an "ordinary" -element. To measure this, we make three timing measurements: - - t1 = A + (b + d)x - t2 = A + (c + d)x - t3 = A + (2b + d)x - -where: - A = fixed overhead associated with parsing and tree building - b = per light-dom "ordinary" node time - c = per shadow root time - d = per "other element" node time. This is the other elements, e.g. <span> - and <!-- comment --> nodes, mixed in with the test markup. To solve - for the percent overhead, we need this to be non-zero (see below). - x = number of repeats of the test block, per run of the test. - -we want to solve for: - (c/b - 1) = percent overhead, per shadow root - -So: - (t2 - t1)/x = c - b = (c/b - 1)b - (t3 - t1)/x = b - (c/b - 1) = (t2-t1)/(t3-t1) = percent overhead -*/ - -const depth = 6; -const copies = 100; -const shadowHtml = getShadowMarkup(true, depth, copies); -const lightDomHtml1 = getShadowMarkup(false, depth, copies, /*lightDomDuplicates=*/1); -const lightDomHtml2 = getShadowMarkup(false, depth, copies, /*lightDomDuplicates=*/2); - -PerfTestRunner.measureValue({ - description: 'This benchmark tests the overhead of declarative Shadow DOM', - unit: 'percent', - run: function() { - let total_overhead = 0; - let total_samples = 0; - for (let i = 0; i < 100; i++) { - const t1 = measureParse(lightDomHtml1); - const t2 = measureParse(shadowHtml); - const t3 = measureParse(lightDomHtml2); - if (t2 > t1 && t3 > t1) { - total_overhead += (t2-t1) / (t3-t1); - ++total_samples; - } - } - PerfTestRunner.assert_true(total_samples>3,'Too many skipped measurements'); - // The result is the total overhead, in *percent*, *per shadow root*. - return 100*total_overhead/total_samples; - } -}); -</script>
diff --git a/chromium/src/third_party/blink/perf_tests/webgpu/binding-draw.html b/chromium/src/third_party/blink/perf_tests/webgpu/binding-draw.html deleted file mode 100644 index 694de31..0000000 --- a/chromium/src/third_party/blink/perf_tests/webgpu/binding-draw.html +++ /dev/null
@@ -1,93 +0,0 @@ -<!DOCTYPE html> -<html> - -<head> - <title> - Test CPU performance of the GPURenderPassEncoder.draw binding - </title> - <script src="../resources/runner.js"></script> - <script src="./resources/webgpu-perf-utils.js"></script> -</head> - -<body> - <canvas id="canvas" width=400 height=400></canvas> - <script> - (async () => { - const adapter = navigator.gpu && await navigator.gpu.requestAdapter(); - if (!adapter) { - return skipTest('WebGPU not supported'); - } - - const device = await adapter.requestDevice(); - const canvas = document.getElementById('canvas'); - const context = canvas.getContext('gpupresent'); - const swapChainFormat = await context.getSwapChainPreferredFormat(device); - - const swapChain = context.configureSwapChain({ - device, - format: swapChainFormat, - }); - - const pipeline = device.createRenderPipeline({ - vertexStage: { - module: device.createShaderModule({ - code: ` - const pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>( - vec2<f32>(0.0, 0.5), - vec2<f32>(-0.5, -0.5), - vec2<f32>(0.5, -0.5)); - - [[builtin(position)]] var<out> Position : vec4<f32>; - [[builtin(vertex_index)]] var<in> VertexIndex : u32; - [[stage(vertex)]] fn main() -> void { - Position = vec4<f32>(pos[VertexIndex], 0.0, 1.0); - }` - }), - entryPoint: 'main', - }, - fragmentStage: { - module: device.createShaderModule({ - code: ` - [[location(0)]] var<out> outColor : vec4<f32>; - [[stage(fragment)]] fn main() -> void { - outColor = vec4<f32>(0.0, 1.0, 0.0, 1.0); - }` - }), - entryPoint: 'main', - }, - primitiveTopology: 'triangle-list', - colorStates: [{ - format: swapChainFormat, - }], - }); - - const renderPassDescriptor = { - colorAttachments: [{ - attachment: undefined, - loadValue: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 }, - }], - }; - - const iterations = 10000; - PerfTestRunner.measureInnerRAFTime({ - description: `CPU time for ${iterations} calls to GPURenderPassEncoder.draw`, - warmUpCount: 10, - run() { - const commandEncoder = device.createCommandEncoder(); - renderPassDescriptor.colorAttachments[0].attachment = swapChain.getCurrentTexture().createView(); - - const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor); - passEncoder.setPipeline(pipeline); - for (let i = 0; i < iterations; ++i) { - passEncoder.draw(3, 1, 0, 0); - } - passEncoder.endPass(); - - device.defaultQueue.submit([commandEncoder.finish()]); - } - }); - })(); - </script> -</body> - -</html>
diff --git a/chromium/src/third_party/blink/public/BUILD.gn b/chromium/src/third_party/blink/public/BUILD.gn deleted file mode 100644 index 98e16d1..0000000 --- a/chromium/src/third_party/blink/public/BUILD.gn +++ /dev/null
@@ -1,551 +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. - -import("//build/buildflag_header.gni") -import("//build/config/dcheck_always_on.gni") -import("//mojo/public/tools/bindings/mojom.gni") -import("//third_party/blink/public/public_features.gni") -import("//third_party/blink/renderer/config.gni") -import("//third_party/blink/renderer/core/core.gni") -import("//third_party/webrtc/webrtc.gni") -import("//tools/grit/grit_rule.gni") -import("//tools/grit/repack.gni") - -if (is_android) { - import("//build/config/android/config.gni") - import("//build/config/android/rules.gni") -} - -group("blink") { - public_deps = [ ":blink_headers" ] - deps = [ - "//third_party/blink/renderer/controller", - "//third_party/blink/renderer/core", - "//third_party/blink/renderer/modules", - "//third_party/blink/renderer/platform", - ] -} - -group("test_support") { - testonly = true - public_deps = [ - ":test_headers", - "//third_party/blink/renderer/core/exported:test_support", - "//third_party/blink/renderer/modules/exported:test_support", - "//third_party/blink/renderer/modules/mediastream:test_support", - "//third_party/blink/renderer/modules/peerconnection:test_support", - "//third_party/blink/renderer/platform:test_support", - ] -} - -group("all_blink") { - # This includes some test targets. Don't link into production! - testonly = true - - public_deps = [ - "//third_party/blink/common", - "//third_party/blink/common:blink_common_unittests", - "//third_party/blink/renderer/controller", - "//third_party/blink/renderer/controller:blink_unittests", - "//third_party/blink/renderer/core", - "//third_party/blink/renderer/modules", - "//third_party/blink/renderer/platform:blink_platform_unittests", - "//third_party/blink/renderer/platform/heap:blink_heap_unittests", - "//third_party/blink/renderer/platform/wtf:wtf_unittests", - ] -} - -config("blink_headers_config") { - # Allow :blink_headers to include v8.h without linking to it. - configs = [ "//v8:external_config" ] -} - -# Public feature flags used outside of Blink. -buildflag_header("buildflags") { - header = "public_buildflags.h" - flags = [ - "USE_MINIKIN_HYPHENATION=$use_minikin_hyphenation", - "ENABLE_UNHANDLED_TAP=$enable_unhandled_tap", - ] -} - -if (is_android) { - java_cpp_enum("blink_headers_java_enums_srcjar") { - sources = [ - "./common/input/web_input_event.h", - "./mojom/context_menu/context_menu.mojom", - "./platform/web_text_input_mode.h", - "./platform/web_text_input_type.h", - ] - } - - android_library("blink_headers_java") { - deps = [ - "//services/network/public/mojom:mojom_java", - "//third_party/android_deps:com_android_support_support_annotations_java", - "//third_party/androidx:androidx_annotation_annotation_java", - ] - srcjar_deps = [ ":blink_headers_java_enums_srcjar" ] - } -} - -source_set("test_headers") { - testonly = true - sources = [ - "platform/scheduler/test/renderer_scheduler_test_support.h", - "platform/scheduler/test/web_fake_thread_scheduler.h", - "platform/scheduler/test/web_mock_thread_scheduler.h", - "test/frame_widget_test_helper.h", - "test/test_web_frame_content_dumper.h", - ] - public_deps = [ ":blink_headers" ] - deps = [ - "//base:base", - "//cc:cc", - "//testing/gmock:gmock", - ] -} - -# Depend on this target to use public blink API headers for things like enums -# and public structures without actually linking against any Blink libraries. -# -# See public/common/BUILD.gn for the headers that can be referenced both from -# the browser- and renderer-side components. -source_set("blink_headers") { - sources = [ - "platform/audio/web_audio_device_source_type.h", - "platform/blame_context.h", - "platform/child_url_loader_factory_bundle.h", - "platform/cross_variant_mojo_util.h", - "platform/file_path_conversion.h", - "platform/impression_conversions.h", - "platform/input/input_handler_proxy.h", - "platform/input/input_handler_proxy_client.h", - "platform/input/predictor_factory.h", - "platform/input/synchronous_input_handler_proxy.h", - "platform/interface_registry.h", - "platform/internet_disconnected_web_url_loader.h", - "platform/media/webmediaplayer_delegate.h", - "platform/modules/mediastream/media_stream_types.h", - "platform/modules/mediastream/secure_display_link_tracker.h", - "platform/modules/mediastream/web_media_stream.h", - "platform/modules/mediastream/web_media_stream_audio_renderer.h", - "platform/modules/mediastream/web_media_stream_audio_sink.h", - "platform/modules/mediastream/web_media_stream_sink.h", - "platform/modules/mediastream/web_media_stream_source.h", - "platform/modules/mediastream/web_media_stream_track.h", - "platform/modules/mediastream/web_media_stream_video_renderer.h", - "platform/modules/mediastream/web_platform_media_stream_source.h", - "platform/modules/remoteplayback/web_remote_playback_client.h", - "platform/modules/service_worker/web_service_worker_error.h", - "platform/modules/service_worker/web_service_worker_fetch_context.h", - "platform/modules/service_worker/web_service_worker_network_provider.h", - "platform/modules/service_worker/web_service_worker_object_info.h", - "platform/modules/service_worker/web_service_worker_provider.h", - "platform/modules/service_worker/web_service_worker_provider_client.h", - "platform/modules/service_worker/web_service_worker_registration_object_info.h", - "platform/modules/video_capture/web_video_capture_impl_manager.h", - "platform/modules/webrtc/webrtc_logging.h", - "platform/platform.h", - "platform/resource_load_info_notifier_wrapper.h", - "platform/scheduler/web_agent_group_scheduler.h", - "platform/scheduler/web_rail_mode_observer.h", - "platform/scheduler/web_render_widget_scheduling_state.h", - "platform/scheduler/web_renderer_process_type.h", - "platform/scheduler/web_resource_loading_task_runner_handle.h", - "platform/scheduler/web_scoped_virtual_time_pauser.h", - "platform/scheduler/web_thread_scheduler.h", - "platform/scheduler/web_widget_scheduler.h", - "platform/task_type.h", - "platform/tracked_child_url_loader_factory_bundle.h", - "platform/url_conversion.h", - "platform/user_metrics_action.h", - "platform/weak_wrapper_resource_load_info_notifier.h", - "platform/web_audio_bus.h", - "platform/web_audio_device.h", - "platform/web_audio_latency_hint.h", - "platform/web_audio_source_provider.h", - "platform/web_back_forward_cache_loader_helper.h", - "platform/web_blob_info.h", - "platform/web_cache.h", - "platform/web_callbacks.h", - "platform/web_client_hints_type.h", - "platform/web_code_cache_loader.h", - "platform/web_common.h", - "platform/web_computed_ax_tree.h", - "platform/web_connection_type.h", - "platform/web_content_decryption_module.h", - "platform/web_content_decryption_module_access.h", - "platform/web_content_decryption_module_exception.h", - "platform/web_content_decryption_module_result.h", - "platform/web_content_decryption_module_session.h", - "platform/web_content_security_policy_struct.h", - "platform/web_content_settings_client.h", - "platform/web_crypto.h", - "platform/web_crypto_algorithm.h", - "platform/web_crypto_algorithm_params.h", - "platform/web_crypto_key.h", - "platform/web_crypto_key_algorithm.h", - "platform/web_crypto_key_algorithm_params.h", - "platform/web_data.h", - "platform/web_dedicated_worker.h", - "platform/web_dedicated_worker_host_factory_client.h", - "platform/web_distillability.h", - "platform/web_document_subresource_filter.h", - "platform/web_double_size.h", - "platform/web_drag_data.h", - "platform/web_effective_connection_type.h", - "platform/web_encrypted_media_client.h", - "platform/web_encrypted_media_key_information.h", - "platform/web_encrypted_media_request.h", - "platform/web_encrypted_media_types.h", - "platform/web_fetch_client_settings_object.h", - "platform/web_file_system_type.h", - "platform/web_font.h", - "platform/web_font_description.h", - "platform/web_font_render_style.h", - "platform/web_frame_request_blocker.h", - "platform/web_gesture_curve.h", - "platform/web_graphics_context_3d_provider.h", - "platform/web_http_body.h", - "platform/web_http_header_visitor.h", - "platform/web_http_load_info.h", - "platform/web_icon_sizes_parser.h", - "platform/web_image_generator.h", - "platform/web_impression.h", - "platform/web_inband_text_track.h", - "platform/web_inband_text_track_client.h", - "platform/web_input_event_result.h", - "platform/web_isolated_world_info.h", - "platform/web_media_key_system_configuration.h", - "platform/web_media_key_system_media_capability.h", - "platform/web_media_player.h", - "platform/web_media_player_client.h", - "platform/web_media_player_encrypted_media_client.h", - "platform/web_media_player_source.h", - "platform/web_media_source.h", - "platform/web_memory_pressure_listener.h", - "platform/web_navigation_body_loader.h", - "platform/web_network_state_notifier.h", - "platform/web_policy_container.cc", - "platform/web_policy_container.h", - "platform/web_prescient_networking.h", - "platform/web_private_ptr.h", - "platform/web_request_peer.h", - "platform/web_resource_request_sender.h", - "platform/web_resource_request_sender_delegate.h", - "platform/web_runtime_features.h", - "platform/web_scoped_page_pauser.h", - "platform/web_scroll_anchor_data.h", - "platform/web_scrollbar_overlay_color_theme.h", - "platform/web_security_origin.h", - "platform/web_set_sink_id_callbacks.h", - "platform/web_size.h", - "platform/web_source_buffer.h", - "platform/web_source_buffer_client.h", - "platform/web_spell_check_panel_host_client.h", - "platform/web_string.h", - "platform/web_surface_layer_bridge.h", - "platform/web_text_input_info.h", - "platform/web_text_input_mode.h", - "platform/web_text_input_type.h", - "platform/web_text_run.h", - "platform/web_texttrack_metadata.h", - "platform/web_theme_engine.h", - "platform/web_thread_safe_data.h", - "platform/web_time_range.h", - "platform/web_touch_action.h", - "platform/web_url.h", - "platform/web_url_error.h", - "platform/web_url_loader.h", - "platform/web_url_loader_client.h", - "platform/web_url_loader_factory.h", - "platform/web_url_loader_mock_factory.h", - "platform/web_url_loader_test_delegate.h", - "platform/web_url_request.h", - "platform/web_url_request_extra_data.h", - "platform/web_url_request_util.h", - "platform/web_url_response.h", - "platform/web_vector.h", - "platform/web_video_frame_submitter.h", - "platform/web_worker_fetch_context.h", - "platform/webaudiosourceprovider_impl.h", - "platform/websocket_handshake_throttle.h", - "web/blink.h", - "web/modules/autofill/web_form_element_observer.h", - "web/modules/media/audio/fuchsia_audio_device_factory.h", - "web/modules/media/audio/web_audio_device_factory.h", - "web/modules/media/audio/web_audio_input_ipc_factory.h", - "web/modules/media/audio/web_audio_output_ipc_factory.h", - "web/modules/media/webmediaplayer_util.h", - "web/modules/mediastream/encoded_video_frame.h", - "web/modules/mediastream/media_stream_video_sink.h", - "web/modules/mediastream/media_stream_video_source.h", - "web/modules/mediastream/web_media_stream_device_observer.h", - "web/modules/mediastream/web_media_stream_utils.h", - "web/modules/mediastream/webmediaplayer_ms.h", - "web/modules/service_worker/web_service_worker_context_client.h", - "web/modules/service_worker/web_service_worker_context_proxy.h", - "web/web_array_buffer.h", - "web/web_array_buffer_converter.h", - "web/web_associated_url_loader.h", - "web/web_associated_url_loader_client.h", - "web/web_associated_url_loader_options.h", - "web/web_autofill_client.h", - "web/web_autofill_state.h", - "web/web_ax_context.h", - "web/web_ax_enums.h", - "web/web_ax_object.h", - "web/web_blob.h", - "web/web_console_message.h", - "web/web_content_capture_client.h", - "web/web_content_holder.h", - "web/web_context_features.h", - "web/web_crypto_normalize.h", - "web/web_custom_element.h", - "web/web_document.h", - "web/web_document_loader.h", - "web/web_dom_activity_logger.h", - "web/web_dom_event.h", - "web/web_dom_file_system.h", - "web/web_dom_media_stream_track.h", - "web/web_dom_message_event.h", - "web/web_drag_status.h", - "web/web_draggable_region.h", - "web/web_element.h", - "web/web_element_collection.h", - "web/web_embedded_worker.h", - "web/web_embedded_worker_start_data.h", - "web/web_form_control_element.h", - "web/web_form_element.h", - "web/web_frame.h", - "web/web_frame_content_dumper.h", - "web/web_frame_load_type.h", - "web/web_frame_owner_properties.h", - "web/web_frame_serializer.h", - "web/web_frame_serializer_client.h", - "web/web_frame_widget.h", - "web/web_heap.h", - "web/web_history_commit_type.h", - "web/web_history_entry.h", - "web/web_history_item.h", - "web/web_hit_test_result.h", - "web/web_image.h", - "web/web_image_cache.h", - "web/web_input_element.h", - "web/web_input_method_controller.h", - "web/web_label_element.h", - "web/web_language_detection_details.h", - "web/web_lifecycle_update.h", - "web/web_local_frame.h", - "web/web_local_frame_client.h", - "web/web_manifest_manager.h", - "web/web_meaningful_layout.h", - "web/web_media_inspector.h", - "web/web_memory_statistics.h", - "web/web_message_port_converter.h", - "web/web_meta_element.h", - "web/web_navigation_control.h", - "web/web_navigation_params.h", - "web/web_navigation_policy.h", - "web/web_navigation_type.h", - "web/web_no_state_prefetch_client.h", - "web/web_node.h", - "web/web_non_composited_widget_client.h", - "web/web_optimization_guide_hints.h", - "web/web_option_element.h", - "web/web_origin_policy.h", - "web/web_page_popup.h", - "web/web_pepper_socket.h", - "web/web_pepper_socket_client.h", - "web/web_performance.h", - "web/web_plugin.h", - "web/web_plugin_container.h", - "web/web_plugin_document.h", - "web/web_plugin_params.h", - "web/web_plugin_script_forbidden_scope.h", - "web/web_popup_menu_info.h", - "web/web_print_client.h", - "web/web_print_page_description.h", - "web/web_print_params.h", - "web/web_print_preset_options.h", - "web/web_range.h", - "web/web_remote_frame.h", - "web/web_remote_frame_client.h", - "web/web_render_theme.h", - "web/web_savable_resources_test_support.h", - "web/web_scoped_window_focus_allowed_indicator.h", - "web/web_script_controller.h", - "web/web_script_execution_callback.h", - "web/web_script_source.h", - "web/web_searchable_form_data.h", - "web/web_security_policy.h", - "web/web_select_element.h", - "web/web_selector.h", - "web/web_serialized_script_value.h", - "web/web_serialized_script_value_version.h", - "web/web_settings.h", - "web/web_shared_worker.h", - "web/web_shared_worker_client.h", - "web/web_swap_result.h", - "web/web_testing_support.h", - "web/web_text_check_client.h", - "web/web_text_checking_completion.h", - "web/web_text_checking_result.h", - "web/web_text_decoration_type.h", - "web/web_v8_context_snapshot.h", - "web/web_view.h", - "web/web_view_client.h", - "web/web_view_observer.h", - "web/web_widget.h", - "web/web_window_features.h", - ] - - if (is_debug || dcheck_always_on) { - sources += [ "web/web_disallow_transition_scope.h" ] - } - - if (is_mac) { - sources += [ - "platform/mac/web_sandbox_support.h", - "platform/mac/web_scrollbar_theme.h", - ] - } - - if (is_linux || is_chromeos) { - sources += [ "platform/linux/web_sandbox_support.h" ] - } - - if (is_win) { - sources += [ "web/win/web_font_rendering.h" ] - } - - public_configs = [ - ":blink_headers_config", - - # Blink exposes icu headers in the public API. - "//third_party/icu:icu_config", - ] - - public_deps = [ - ":devtools_inspector_resources_grit", - ":resources_grit", - "//net", - "//services/network/public/mojom:mojom_shared", - "//services/service_manager/public/cpp", - "//skia", - "//third_party/blink/public/common", - "//ui/accessibility:ax_base", - "//ui/base/cursor:cursor_base", - "//ui/base/dragdrop/mojom:mojom_shared", - "//ui/base/ime", - "//ui/base/ime/mojom", - "//ui/base/prediction:prediction", - "//url", - ] - - deps = [ - "//base:base", - "//cc:cc", - "//cc/paint:paint", - "//components/viz/common", - "//media/capture:capture_base", - "//media/capture:capture_lib", - "//media/webrtc:webrtc", - "//mojo/public/cpp/bindings:bindings", - "//mojo/public/cpp/system:system", - "//printing/mojom", - "//services/device/public/mojom:mojom_shared_cpp_sources", - "//services/network/public/cpp:cpp", - "//services/network/public/mojom", - "//third_party/blink/renderer/platform/wtf:wtf", - "//third_party/webrtc_overrides:webrtc_component", - "//ui/base:base", - "//v8:v8_headers", - ] -} - -devtools_frontend_path = "//third_party/devtools-frontend/src" - -group("blink_devtools_frontend_resources") { - public_deps = [ "$devtools_frontend_path:devtools_frontend_resources" ] -} - -group("blink_devtools_inspector_resources") { - public_deps = [ ":devtools_inspector_resources_grit" ] -} - -group("blink_devtools_frontend_resources_files") { - testonly = true - data_deps = [ "$devtools_frontend_path:devtools_all_files" ] -} - -group("blink_generate_devtools_grd") { - public_deps = [ "$devtools_frontend_path:generate_devtools_grd" ] -} - -resources_out_dir = "$root_gen_dir/third_party/blink/public/resources" - -grit("resources") { - output_dir = resources_out_dir - source = "blink_resources.grd" - outputs = [ - "grit/blink_resources.h", - "blink_resources.pak", - ] -} - -grit("devtools_inspector_resources") { - # Required because the .grd is generated. - enable_input_discovery_for_gn_analyze = false - - source = "$root_out_dir/resources/inspector_overlay/inspector_overlay_resources.grd" - output_dir = resources_out_dir - outputs = [ - "grit/inspector_overlay_resources_map.h", - "inspector_overlay_resources.pak", - ] - - defines = - [ "SHARED_INTERMEDIATE_DIR=" + rebase_path(root_out_dir, root_build_dir) ] - - deps = [ - "$devtools_frontend_path:generate_devtools_inspector_overlay_resources", - ] -} - -grit("image_resources") { - output_dir = resources_out_dir - source = "blink_image_resources.grd" - outputs = [ - "grit/blink_image_resources.h", - "blink_image_resources_100_percent.pak", - "blink_image_resources_200_percent.pak", - ] -} - -group("scaled_resources") { - public_deps = [ - ":image_resources", - "//third_party/blink/renderer/modules/media_controls:media_controls_resources", - ] -} - -repack("scaled_resources_100_percent") { - output = "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak" - sources = [ - "$root_gen_dir/third_party/blink/public/resources/blink_image_resources_100_percent.pak", - "$root_gen_dir/third_party/blink/renderer/modules/media_controls/resources/media_controls_resources_100_percent.pak", - ] - deps = [ ":scaled_resources" ] -} - -repack("scaled_resources_200_percent") { - output = "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_200_percent.pak" - sources = [ - "$root_gen_dir/third_party/blink/public/resources/blink_image_resources_200_percent.pak", - "$root_gen_dir/third_party/blink/renderer/modules/media_controls/resources/media_controls_resources_200_percent.pak", - ] - deps = [ ":scaled_resources" ] -}
diff --git a/chromium/src/third_party/blink/public/DEPS b/chromium/src/third_party/blink/public/DEPS deleted file mode 100644 index 901d1a50..0000000 --- a/chromium/src/third_party/blink/public/DEPS +++ /dev/null
@@ -1,12 +0,0 @@ -include_rules = [ - "+base/types/pass_key.h", - "+base/unguessable_token.h", - "-third_party/blink/renderer/bindings", - "-third_party/blink/renderer/core", - "-third_party/blink/renderer/modules", - "+v8", - - # Allowed only inside INSIDE_BLINK - "+third_party/blink/renderer/platform/heap", - "+third_party/blink/renderer/platform/wtf", -]
diff --git a/chromium/src/third_party/blink/public/OWNERS b/chromium/src/third_party/blink/public/OWNERS deleted file mode 100644 index 3dd00d1..0000000 --- a/chromium/src/third_party/blink/public/OWNERS +++ /dev/null
@@ -1,23 +0,0 @@ -# NOTE: keep this in sync with lsc-owners-override@chromium.org owners -chrishtr@chromium.org -danakj@chromium.org -dcheng@chromium.org -dgozman@chromium.org -dtapuska@chromium.org -falken@chromium.org -foolip@chromium.org -haraken@chromium.org -japhet@chromium.org -jbroman@chromium.org -jochen@chromium.org -kinuko@chromium.org -mkwst@chromium.org -pdr@chromium.org -pfeldman@chromium.org -rbyers@chromium.org -tkent@chromium.org -# NOTE: keep this in sync with lsc-owners-override@chromium.org owners - -# This is for the common case of adding or renaming files. If you're doing -# structural changes, please get a review from a reviewer in this file. -per-file BUILD.gn=*
diff --git a/chromium/src/third_party/blink/public/blink_resources.grd b/chromium/src/third_party/blink/public/blink_resources.grd deleted file mode 100644 index b5318c5..0000000 --- a/chromium/src/third_party/blink/public/blink_resources.grd +++ /dev/null
@@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> - <outputs> - <output filename="grit/blink_resources.h" type="rc_header"> - <emit emit_type='prepend'></emit> - </output> - <output filename="blink_resources.pak" type="data_package" /> - </outputs> - <release seq="1"> - <includes> - <!-- GRIT minimizes all CSS and Javascript --> - <include name="IDR_UASTYLE_HTML_CSS" file="../renderer/core/html/resources/html.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_QUIRKS_CSS" file="../renderer/core/html/resources/quirks.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_VIEW_SOURCE_CSS" file="../renderer/core/css/view-source.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_CHROMIUM_ANDROID_CSS" file="../renderer/core/html/resources/android.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_FULLSCREEN_ANDROID_CSS" file="../renderer/core/css/fullscreenAndroid.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_PREDEFINED_COUNTER_STYLES_CSS" file="../renderer/core/css/predefined_counter_styles.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_CHROMIUM_LINUX_CSS" file="../renderer/core/html/resources/linux.css" type="BINDATA" compress="gzip"/> - <if expr="is_macosx"> - <include name="IDR_UASTYLE_THEME_MAC_CSS" file="../renderer/core/html/resources/mac.css" type="BINDATA" compress="gzip"/> - </if> - <include name="IDR_UASTYLE_THEME_INPUT_MULTIPLE_FIELDS_CSS" file="../renderer/core/html/resources/input_multiple_fields.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_WIN_CSS" file="../renderer/core/html/resources/win.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_WIN_QUIRKS_CSS" file="../renderer/core/html/resources/win_quirks.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_CONTROLS_REFRESH_CSS" file="../renderer/core/html/resources/controls_refresh.css" flattenhtml="true" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_THEME_FORCED_COLORS_CSS" file="../renderer/core/html/resources/forced_colors.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_SVG_CSS" file="../renderer/core/css/svg.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_MARKER_CSS" file="../renderer/core/css/marker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_MATHML_CSS" file="../renderer/core/css/mathml.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_MATHML_FALLBACK_CSS" file="../renderer/core/css/mathml-fallback.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_FULLSCREEN_CSS" file="../renderer/core/css/fullscreen.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_WEBXR_OVERLAY_CSS" file="../renderer/core/css/webxr_overlay.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_XHTMLMP_CSS" file="../renderer/core/css/xhtmlmp.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_VIEWPORT_ANDROID_CSS" file="../renderer/core/css/viewportAndroid.css" type="BINDATA" compress="gzip"/> - <include name="IDR_UASTYLE_VIEWPORT_TELEVISION_CSS" file="../renderer/core/css/viewportTelevision.css" type="BINDATA" compress="gzip"/> - <include name="IDR_DOCUMENTXMLTREEVIEWER_CSS" file="../renderer/core/xml/DocumentXMLTreeViewer.css" type="BINDATA" compress="gzip"/> - <include name="IDR_DOCUMENTXMLTREEVIEWER_JS" file="../renderer/core/xml/DocumentXMLTreeViewer.js" type="BINDATA" compress="gzip"/> - <include name="IDR_VALIDATION_BUBBLE_ICON" file="../renderer/core/html/forms/resources/input_alert.svg" type="BINDATA" compress="gzip"/> - <include name="IDR_VALIDATION_BUBBLE_CSS" file="../renderer/core/html/forms/resources/validation_bubble.css" type="BINDATA" compress="gzip"/> - <if expr="not is_android"> - <include name="IDR_PICKER_COMMON_JS" file="../renderer/core/html/forms/resources/pickerCommon.js" type="BINDATA" compress="gzip"/> - <include name="IDR_PICKER_COMMON_CSS" file="../renderer/core/html/forms/resources/pickerCommon.css" type="BINDATA" compress="gzip"/> - <include name="IDR_CALENDAR_PICKER_CSS" file="../renderer/core/html/forms/resources/calendarPicker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_CALENDAR_PICKER_REFRESH_CSS" file="../renderer/core/html/forms/resources/calendar_picker_refresh.css" type="BINDATA" compress="gzip"/> - <include name="IDR_CALENDAR_PICKER_JS" file="../renderer/core/html/forms/resources/calendarPicker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_MONTH_PICKER_JS" file="../renderer/core/html/forms/resources/month_picker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_TIME_PICKER_CSS" file="../renderer/core/html/forms/resources/time_picker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_TIME_PICKER_JS" file="../renderer/core/html/forms/resources/time_picker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_DATETIMELOCAL_PICKER_JS" file="../renderer/core/html/forms/resources/datetimelocal_picker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_PICKER_BUTTON_CSS" file="../renderer/core/html/forms/resources/pickerButton.css" type="BINDATA" compress="gzip"/> - <include name="IDR_SUGGESTION_PICKER_CSS" file="../renderer/core/html/forms/resources/suggestionPicker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_SUGGESTION_PICKER_JS" file="../renderer/core/html/forms/resources/suggestionPicker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_COLOR_PICKER_COMMON_JS" file="../renderer/core/html/forms/resources/color_picker_common.js" type="BINDATA" compress="gzip"/> - <include name="IDR_COLOR_SUGGESTION_PICKER_CSS" file="../renderer/core/html/forms/resources/colorSuggestionPicker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_COLOR_SUGGESTION_PICKER_JS" file="../renderer/core/html/forms/resources/colorSuggestionPicker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_COLOR_PICKER_CSS" file="../renderer/core/html/forms/resources/color_picker.css" flattenhtml="true" type="BINDATA" compress="gzip"/> - <include name="IDR_COLOR_PICKER_JS" file="../renderer/core/html/forms/resources/color_picker.js" type="BINDATA" compress="gzip"/> - <include name="IDR_LIST_PICKER_CSS" file="../renderer/core/html/forms/resources/listPicker.css" type="BINDATA" compress="gzip"/> - <include name="IDR_LIST_PICKER_JS" file="../renderer/core/html/forms/resources/listPicker.js" type="BINDATA" compress="gzip"/> - </if> - <include name="IDR_AUDIO_SPATIALIZATION_COMPOSITE" file="../renderer/platform/audio/resources/Composite.flac" type="BINDATA"/> - </includes> - </release> -</grit>
diff --git a/chromium/src/third_party/blink/public/common/BUILD.gn b/chromium/src/third_party/blink/public/common/BUILD.gn deleted file mode 100644 index 1dce3b7..0000000 --- a/chromium/src/third_party/blink/public/common/BUILD.gn +++ /dev/null
@@ -1,289 +0,0 @@ -# Copyright 2018 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/buildflag_header.gni") -import("//build/config/compiler/compiler.gni") -import("//build/config/features.gni") -import("//testing/test.gni") -import("//third_party/protobuf/proto_library.gni") -import("//third_party/webrtc/webrtc.gni") - -if (is_android) { - import("//build/config/android/rules.gni") -} - -# Public common API headers, mojom and libraries that can be linked and -# referenced both by browser-side and renderer-side components. -component("common") { - output_name = "blink_common" - - public_deps = [ - "//third_party/blink/common/privacy_budget:privacy_budget", - "//third_party/blink/public/common:headers", - "//third_party/blink/public/mojom:mojom_modules", - "//third_party/blink/public/mojom:web_bluetooth_mojo_bindings", - ] - deps = [ - "//cc/ipc", - "//third_party/blink/common", - "//ui/events/ipc", - ] -} - -buildflag_header("buildflags") { - header = "buildflags.h" - flags = [ "RTC_USE_H264=$rtc_use_h264" ] -} - -source_set("common_export") { - visibility = [ - "//third_party/blink/common/*", - "//third_party/blink/public/common/*", - ] - sources = [ "common_export.h" ] -} - -source_set("headers") { - visibility = [ - ":*", - "//chrome/*", - "//chromecast/*", - "//components/*", - "//content/*", - "//fuchsia/*", - "//services/*", - "//storage/*", - "//third_party/blink/*", - ] - - sources = [ - "action_after_pagehide.h", - "associated_interfaces/associated_interface_provider.h", - "associated_interfaces/associated_interface_registry.h", - "blob/blob_utils.h", - "bluetooth/web_bluetooth_device_id.h", - "bluetooth/web_bluetooth_device_id_mojom_traits.h", - "browser_interface_broker_proxy.h", - "cache_storage/cache_storage_utils.h", - "client_hints/client_hints.h", - "context_menu_data/context_menu_data.h", - "context_menu_data/context_menu_params_builder.h", - "context_menu_data/edit_flags.h", - "context_menu_data/menu_item_info.h", - "context_menu_data/untrustworthy_context_menu_params.h", - "css/forced_colors.h", - "css/navigation_controls.h", - "css/page_orientation.h", - "css/page_size_type.h", - "custom_handlers/protocol_handler_utils.h", - "device_memory/approximated_device_memory.h", - "dom_storage/session_storage_namespace_id.h", - "experiments/memory_ablation_experiment.h", - "feature_policy/document_policy.h", - "feature_policy/document_policy_features.h", - "feature_policy/feature_policy.h", - "feature_policy/feature_policy_features.h", - "feature_policy/feature_policy_forward.h", - "feature_policy/policy_value.h", - "features.h", - "fetch/fetch_api_request_headers_map.h", - "fetch/fetch_api_request_headers_mojom_traits.h", - "forcedark/forcedark_switches.h", - "frame/frame_policy.h", - "frame/frame_visual_properties.h", - "frame/from_ad_state.h", - "frame/payment_request_token.h", - "frame/transient_allow_fullscreen.h", - "frame/user_activation_state.h", - "frame/user_activation_update_source.h", - "indexeddb/indexed_db_default_mojom_traits.h", - "indexeddb/indexeddb_key.h", - "indexeddb/indexeddb_key_path.h", - "indexeddb/indexeddb_key_range.h", - "indexeddb/indexeddb_metadata.h", - "indexeddb/web_idb_types.h", - "input/pointer_id.h", - "input/synthetic_web_input_event_builders.h", - "input/web_coalesced_input_event.h", - "input/web_coalesced_input_event_mojom_traits.h", - "input/web_gesture_device.h", - "input/web_gesture_event.h", - "input/web_input_event.h", - "input/web_input_event_attribution.h", - "input/web_keyboard_event.h", - "input/web_menu_source_type.h", - "input/web_mouse_event.h", - "input/web_mouse_wheel_event.h", - "input/web_pointer_event.h", - "input/web_pointer_properties.h", - "input/web_touch_event.h", - "input/web_touch_point.h", - "loader/http_body_element_type.h", - "loader/inter_process_time_ticks_converter.h", - "loader/loading_behavior_flag.h", - "loader/mime_sniffing_throttle.h", - "loader/mime_sniffing_url_loader.h", - "loader/network_utils.h", - "loader/previews_state.h", - "loader/record_load_histograms.h", - "loader/referrer_utils.h", - "loader/resource_type_util.h", - "loader/url_loader_factory_bundle.h", - "loader/url_loader_factory_bundle_mojom_traits.h", - "loader/url_loader_throttle.h", - "loader/worker_main_script_load_parameters.h", - "logging/logging_utils.h", - "manifest/manifest.h", - "manifest/manifest_icon_selector.h", - "manifest/manifest_util.h", - "media/display_type.h", - "media/video_capture.h", - "media/watch_time_component.h", - "media/watch_time_reporter.h", - "mediastream/media_devices.h", - "mediastream/media_devices_mojom_traits.h", - "mediastream/media_stream_controls.h", - "mediastream/media_stream_mojom_traits.h", - "mediastream/media_stream_request.h", - "messaging/cloneable_message.h", - "messaging/cloneable_message_mojom_traits.h", - "messaging/message_port_channel.h", - "messaging/message_port_descriptor.h", - "messaging/message_port_descriptor_mojom_traits.h", - "messaging/string_message_codec.h", - "messaging/transferable_message.h", - "messaging/transferable_message_mojom_traits.h", - "messaging/web_message_port.h", - "metrics/document_update_reason.h", - "metrics/form_element_pii_type.h", - "mime_util/mime_util.h", - "mobile_metrics/mobile_friendliness.h", - "native_io/native_io_utils.h", - "navigation/impression.h", - "navigation/navigation_policy.h", - "navigation/resource_intercept_policy.h", - "net/ip_address_space_util.h", - "notifications/notification_constants.h", - "notifications/notification_mojom_traits.h", - "notifications/notification_resources.h", - "notifications/platform_notification_data.h", - "oom_intervention/oom_intervention_types.h", - "origin_trials/origin_trial_policy.h", - "origin_trials/trial_token.h", - "origin_trials/trial_token_validator.h", - "page/content_to_visible_time_reporter.h", - "page/drag_mojom_traits.h", - "page/drag_operation.h", - "page/launching_process_state.h", - "page/page_zoom.h", - "page_state/page_state.h", - "page_state/page_state_serialization.h", - "peerconnection/webrtc_ip_handling_policy.h", - "permissions/permission_utils.h", - "renderer_preferences/renderer_preferences.h", - "scheduler/web_scheduler_tracked_feature.h", - "security/protocol_handler_security_level.h", - "security/security_style.h", - "security_context/insecure_request_policy.h", - "service_worker/service_worker_scope_match.h", - "service_worker/service_worker_status_code.h", - "service_worker/service_worker_type_converters.h", - "service_worker/service_worker_types.h", - "sms/webotp_constants.h", - "sms/webotp_service_destroyed_reason.h", - "sms/webotp_service_outcome.h", - "switches.h", - "thread_safe_browser_interface_broker_proxy.h", - "unique_name/unique_name_helper.h", - "user_agent/user_agent_metadata.h", - "web_cache/web_cache_resource_type_stats.h", - "web_package/signed_exchange_consts.h", - "web_package/web_package_request_matcher.h", - "web_preferences/web_preferences.h", - "widget/device_emulation_params.h", - "widget/screen_info.h", - "widget/visual_properties.h", - ] - - public_deps = [ - "//mojo/public/cpp/bindings", - "//services/metrics/public/cpp:metrics_cpp", - "//services/network/public/cpp:cpp", - "//skia", - "//skia/public/mojom:shared_typemap_traits", - "//third_party/blink/public/common/privacy_budget", - "//third_party/blink/public/common/tokens:tokens_headers", - "//third_party/blink/public/mojom:mojom_modules_headers", - "//third_party/blink/public/mojom:mojom_platform_shared", - "//third_party/blink/public/mojom:web_bluetooth_mojo_bindings_headers", - "//ui/events:event_constants", - "//ui/events/types:headers", - "//ui/latency", - ] - - deps = [ - ":buildflags", - ":common_export", - "//base", - "//cc", - "//components/viz/common", - "//mojo/public/cpp/bindings", - "//mojo/public/cpp/system", - "//mojo/public/mojom/base", - "//net", - "//ui/base:base", - ] - - # iOS doesn't use and must not depend on //media - if (!is_ios) { - deps += [ - "//media", - "//media/capture:capture_base", - "//media/capture:capture_lib", - ] - public_deps += [ "//media/mojo/mojom" ] - } - - if (is_android || is_win) { - sources += [ - "font_unique_name_lookup/font_table_matcher.h", - "font_unique_name_lookup/font_table_persistence.h", - "font_unique_name_lookup/icu_fold_case_util.h", - ] - deps += [ ":font_unique_name_table_proto" ] - } - - if (is_mac) { - sources += [ "sandbox_support/sandbox_support_mac.h" ] - } - - if (is_win) { - sources += [ "dwrite_rasterizer_support/dwrite_rasterizer_support.h" ] - } -} - -if (is_android || is_win) { - proto_library("font_unique_name_table_proto") { - sources = [ "font_unique_name_lookup/font_unique_name_table.proto" ] - } -} - -proto_library("font_enumeration_table_proto") { - sources = [ "font_access/font_enumeration_table.proto" ] -} - -if (is_android) { - java_cpp_features("java_features_srcjar") { - # External code should depend on ":common_java" instead. - visibility = [ ":*" ] - sources = [ "//third_party/blink/common/features.cc" ] - template = "//third_party/blink/public/common/android/java_templates/BlinkFeatures.java.tmpl" - } - - android_library("common_java") { - # Right now, this only includes the Java features. But if we need more Java - # files, they should be added here as necessary. - srcjar_deps = [ ":java_features_srcjar" ] - } -}
diff --git a/chromium/src/third_party/blink/public/common/DIR_METADATA b/chromium/src/third_party/blink/public/common/DIR_METADATA deleted file mode 100644 index 90b2e9c..0000000 --- a/chromium/src/third_party/blink/public/common/DIR_METADATA +++ /dev/null
@@ -1,5 +0,0 @@ -monorail { - component: "Blink>Internals>Modularization" -} - -team_email: "platform-architecture-dev@chromium.org"
diff --git a/chromium/src/third_party/blink/public/common/OWNERS b/chromium/src/third_party/blink/public/common/OWNERS deleted file mode 100644 index ba9a65a..0000000 --- a/chromium/src/third_party/blink/public/common/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -# Any core owner can approve blink finch flags. -per-file features.h=file://third_party/blink/renderer/core/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/blob/OWNERS b/chromium/src/third_party/blink/public/common/blob/OWNERS deleted file mode 100644 index 5fe885e..0000000 --- a/chromium/src/third_party/blink/public/common/blob/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -file://storage/browser/blob/OWNERS -
diff --git a/chromium/src/third_party/blink/public/common/bluetooth/OWNERS b/chromium/src/third_party/blink/public/common/bluetooth/OWNERS deleted file mode 100644 index 9484eb4..0000000 --- a/chromium/src/third_party/blink/public/common/bluetooth/OWNERS +++ /dev/null
@@ -1,9 +0,0 @@ -file://content/browser/bluetooth/OWNERS - -# Changes to IPC serialization require a security review to avoid introducing -# new sandbox escapes. -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -per-file *.typemap=set noparent -per-file *.typemap=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/cache_storage/OWNERS b/chromium/src/third_party/blink/public/common/cache_storage/OWNERS deleted file mode 100644 index 3ce0392..0000000 --- a/chromium/src/third_party/blink/public/common/cache_storage/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/cache_storage/OWNERS - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/client_hints/client_hints.h b/chromium/src/third_party/blink/public/common/client_hints/client_hints.h deleted file mode 100644 index 1cb4302..0000000 --- a/chromium/src/third_party/blink/public/common/client_hints/client_hints.h +++ /dev/null
@@ -1,76 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_CLIENT_HINTS_CLIENT_HINTS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CLIENT_HINTS_CLIENT_HINTS_H_ - -#include <stddef.h> -#include <string> - -#include "base/optional.h" -#include "services/network/public/mojom/web_client_hints_types.mojom-shared.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom.h" - -class GURL; - -namespace blink { - -class FeaturePolicy; - -// Mapping from WebClientHintsType to the hint's outgoing header -// (e.g. kLang => "sec-ch-lang"). The ordering matches the ordering of enums in -// services/network/public/mojom/web_client_hints_types.mojom -BLINK_COMMON_EXPORT extern const char* const kClientHintsHeaderMapping[]; - -// Mapping from WebClientHintsType to the corresponding Feature-Policy (e.g. -// kDpr => kClientHintsDPR). The order matches the header mapping and the enum -// order in services/network/public/mojom/web_client_hints_types.mojom -BLINK_COMMON_EXPORT extern const mojom::FeaturePolicyFeature - kClientHintsFeaturePolicyMapping[]; - -// The size of the mapping arrays. -BLINK_COMMON_EXPORT extern const size_t kClientHintsMappingsCount; - -// Mapping from WebEffectiveConnectionType to the header value. This value is -// sent to the origins and is returned by the JavaScript API. The ordering -// should match the ordering in //net/nqe/effective_connection_type.h and -// public/platform/WebEffectiveConnectionType.h. -// This array should be updated if either of the enums in -// effective_connection_type.h or WebEffectiveConnectionType.h are updated. -BLINK_COMMON_EXPORT extern const char* const - kWebEffectiveConnectionTypeMapping[]; - -BLINK_COMMON_EXPORT extern const size_t kWebEffectiveConnectionTypeMappingCount; - -// Given a comma-separated, ordered list of language codes, return the list -// formatted as a structured header, as described in -// https://tools.ietf.org/html/draft-west-lang-client-hint-00#section-2.1 -std::string BLINK_COMMON_EXPORT -SerializeLangClientHint(const std::string& raw_language_list); - -// Filters a parsed accept-CH list to exclude clients hints support for which -// is currently conditional on experiments: -// Language hints will only be kept if |permit_lang_hints| is true; -// UA-related ones if |permit_ua_hints| is. -BLINK_COMMON_EXPORT -base::Optional<std::vector<network::mojom::WebClientHintsType>> FilterAcceptCH( - base::Optional<std::vector<network::mojom::WebClientHintsType>> in, - bool permit_lang_hints, - bool permit_ua_hints); - -// Indicates that a hint is sent by default, regardless of an opt-in. -BLINK_COMMON_EXPORT -bool IsClientHintSentByDefault(network::mojom::WebClientHintsType type); - -// Add a list of Client Hints headers to be removed to the output vector, based -// on FeaturePolicy and the url's origin. -BLINK_COMMON_EXPORT void FindClientHintsToRemove( - const FeaturePolicy* feature_policy, - const GURL& url, - std::vector<std::string>* removed_headers); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CLIENT_HINTS_CLIENT_HINTS_H_
diff --git a/chromium/src/third_party/blink/public/common/context_menu_data/OWNERS b/chromium/src/third_party/blink/public/common/context_menu_data/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/context_menu_data/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_data.h b/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_data.h deleted file mode 100644 index a9bf414..0000000 --- a/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_data.h +++ /dev/null
@@ -1,170 +0,0 @@ -/* - * Copyright (C) 2009, 2012 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_DATA_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_DATA_H_ - -#include <vector> - -#include "services/network/public/mojom/referrer_policy.mojom-shared.h" -#include "third_party/blink/public/common/context_menu_data/menu_item_info.h" -#include "third_party/blink/public/common/input/web_menu_source_type.h" -#include "third_party/blink/public/common/navigation/impression.h" -#include "third_party/blink/public/mojom/context_menu/context_menu.mojom-shared.h" -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/rect.h" -#include "url/gurl.h" - -namespace blink { - -// This struct is passed to WebViewClient::ShowContextMenu. -struct ContextMenuData { - // The type of media the context menu is being invoked on. - // using MediaType = blink::mojom::ContextMenuDataMediaType; - blink::mojom::ContextMenuDataMediaType media_type; - - // The x and y position of the mouse pointer (relative to the webview). - gfx::Point mouse_position; - - // The absolute URL of the link that is in context. - GURL link_url; - - // The absolute URL of the image/video/audio that is in context. - GURL src_url; - - // Whether the image in context is a null. - bool has_image_contents; - - // The encoding for the frame in context. - std::string frame_encoding; - - enum MediaFlags { - kMediaNone = 0x0, - kMediaInError = 0x1, - kMediaPaused = 0x2, - kMediaMuted = 0x4, - kMediaLoop = 0x8, - kMediaCanSave = 0x10, - kMediaHasAudio = 0x20, - kMediaCanToggleControls = 0x40, - kMediaControls = 0x80, - kMediaCanPrint = 0x100, - kMediaCanRotate = 0x200, - kMediaCanPictureInPicture = 0x400, - kMediaPictureInPicture = 0x800, - kMediaCanLoop = 0x1000, - }; - - // Extra attributes describing media elements. - int media_flags; - - // The text of the link that is in the context. - std::string link_text; - - // If the node is a link, the impression declared by the link's conversion - // measurement attributes. - base::Optional<Impression> impression; - - // The raw text of the selection in context. - std::string selected_text; - - // Title attribute of the selection in context. - std::string title_text; - - // Alt attribute of the selection in context. - std::string alt_text; - - // Whether spell checking is enabled. - bool is_spell_checking_enabled; - - // Suggested filename for saving file. - std::string suggested_filename; - - // The editable (possibily) misspelled word. - base::string16 misspelled_word; - - // If misspelledWord is not empty, holds suggestions from the dictionary. - std::vector<base::string16> dictionary_suggestions; - - // Whether context is editable. - bool is_editable; - - // If this node is an input field, the type of that field. - blink::mojom::ContextMenuDataInputFieldType input_field_type; - - enum CheckableMenuItemFlags { - kCheckableMenuItemDisabled = 0x0, - kCheckableMenuItemEnabled = 0x1, - kCheckableMenuItemChecked = 0x2, - }; - - // Writing direction menu items - values are unions of - // CheckableMenuItemFlags. - int writing_direction_default; - int writing_direction_left_to_right; - int writing_direction_right_to_left; - - // Which edit operations are available in the context. - int edit_flags; - - // The referrer policy applicable to this context. - network::mojom::ReferrerPolicy referrer_policy; - - // Custom context menu items provided by the WebCore internals. - std::vector<MenuItemInfo> custom_items; - - // Selection in viewport coordinates. - gfx::Rect selection_rect; - - // TODO(https://crbug.com/781914): Remove this field after we done with Blink - // side tracking. - // Global index of start position for the current selection. - // If the current element is editable, then it starts from the first - // character within the element, otherwise, it starts from the beginning of - // the current webpage. - int selection_start_offset; - - WebMenuSourceType source_type; - - ContextMenuData() - : media_type(blink::mojom::ContextMenuDataMediaType::kNone), - has_image_contents(false), - media_flags(kMediaNone), - is_spell_checking_enabled(false), - is_editable(false), - writing_direction_default(kCheckableMenuItemDisabled), - writing_direction_left_to_right(kCheckableMenuItemEnabled), - writing_direction_right_to_left(kCheckableMenuItemEnabled), - edit_flags(0) {} -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_DATA_H_
diff --git a/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_mojom_traits.h b/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_mojom_traits.h deleted file mode 100644 index 82676b7..0000000 --- a/chromium/src/third_party/blink/public/common/context_menu_data/context_menu_mojom_traits.h +++ /dev/null
@@ -1,191 +0,0 @@ -// Copyright 2021 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_ - -#include "build/build_config.h" -#include "mojo/public/cpp/base/time_mojom_traits.h" -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h" -#include "third_party/blink/public/common/navigation/impression.h" -#include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h" -#include "url/mojom/url_gurl_mojom_traits.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ImpressionDataView, blink::Impression> { - static url::Origin conversion_destination(const blink::Impression& r) { - return r.conversion_destination; - } - - static base::Optional<url::Origin> reporting_origin( - const blink::Impression& r) { - return r.reporting_origin; - } - - static uint64_t impression_data(const blink::Impression& r) { - return r.impression_data; - } - - static base::Optional<base::TimeDelta> expiry(const blink::Impression& r) { - return r.expiry; - } - - static bool Read(blink::mojom::ImpressionDataView r, blink::Impression* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::UntrustworthyContextMenuParamsDataView, - blink::UntrustworthyContextMenuParams> { - static blink::mojom::ContextMenuDataMediaType media_type( - const blink::UntrustworthyContextMenuParams& r) { - return r.media_type; - } - - static int x(const blink::UntrustworthyContextMenuParams& r) { return r.x; } - - static int y(const blink::UntrustworthyContextMenuParams& r) { return r.y; } - - static const GURL link_url(const blink::UntrustworthyContextMenuParams& r) { - return r.link_url; - } - - static base::string16 link_text( - const blink::UntrustworthyContextMenuParams& r) { - return r.link_text; - } - - static base::Optional<blink::Impression> impression( - const blink::UntrustworthyContextMenuParams& r) { - return r.impression; - } - - static const GURL unfiltered_link_url( - const blink::UntrustworthyContextMenuParams& r) { - return r.unfiltered_link_url; - } - - static const GURL src_url(const blink::UntrustworthyContextMenuParams& r) { - return r.src_url; - } - - static bool has_image_contents( - const blink::UntrustworthyContextMenuParams& r) { - return r.has_image_contents; - } - - static int media_flags(const blink::UntrustworthyContextMenuParams& r) { - return r.media_flags; - } - - static base::string16 selection_text( - const blink::UntrustworthyContextMenuParams& r) { - return r.selection_text; - } - - static base::string16 title_text( - const blink::UntrustworthyContextMenuParams& r) { - return r.title_text; - } - - static base::string16 alt_text( - const blink::UntrustworthyContextMenuParams& r) { - return r.alt_text; - } - - static base::string16 suggested_filename( - const blink::UntrustworthyContextMenuParams& r) { - return r.suggested_filename; - } - - static base::string16 misspelled_word( - const blink::UntrustworthyContextMenuParams& r) { - return r.misspelled_word; - } - - static std::vector<base::string16> dictionary_suggestions( - const blink::UntrustworthyContextMenuParams& r) { - return r.dictionary_suggestions; - } - - static bool spellcheck_enabled( - const blink::UntrustworthyContextMenuParams& r) { - return r.spellcheck_enabled; - } - - static bool is_editable(const blink::UntrustworthyContextMenuParams& r) { - return r.is_editable; - } - - static int writing_direction_default( - const blink::UntrustworthyContextMenuParams& r) { - return r.writing_direction_default; - } - - static int writing_direction_left_to_right( - const blink::UntrustworthyContextMenuParams& r) { - return r.writing_direction_left_to_right; - } - - static int writing_direction_right_to_left( - const blink::UntrustworthyContextMenuParams& r) { - return r.writing_direction_right_to_left; - } - - static int edit_flags(const blink::UntrustworthyContextMenuParams& r) { - return r.edit_flags; - } - - static std::string frame_charset( - const blink::UntrustworthyContextMenuParams& r) { - return r.frame_charset; - } - - static network::mojom::ReferrerPolicy referrer_policy( - const blink::UntrustworthyContextMenuParams& r) { - return r.referrer_policy; - } - - static const GURL& link_followed( - const blink::UntrustworthyContextMenuParams& r) { - return r.link_followed; - } - - static const std::vector<blink::mojom::CustomContextMenuItemPtr>& - custom_items(const blink::UntrustworthyContextMenuParams& r) { - return r.custom_items; - } - - static ui::MenuSourceType source_type( - const blink::UntrustworthyContextMenuParams& r) { - return r.source_type; - } - - static blink::mojom::ContextMenuDataInputFieldType input_field_type( - const blink::UntrustworthyContextMenuParams& r) { - return r.input_field_type; - } - - static gfx::Rect selection_rect( - const blink::UntrustworthyContextMenuParams& r) { - return r.selection_rect; - } - - static int selection_start_offset( - const blink::UntrustworthyContextMenuParams& r) { - return r.selection_start_offset; - } - - static bool Read(blink::mojom::UntrustworthyContextMenuParamsDataView r, - blink::UntrustworthyContextMenuParams* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/context_menu_data/menu_item_info.h b/chromium/src/third_party/blink/public/common/context_menu_data/menu_item_info.h deleted file mode 100644 index 6a6e3ed..0000000 --- a/chromium/src/third_party/blink/public/common/context_menu_data/menu_item_info.h +++ /dev/null
@@ -1,65 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_MENU_ITEM_INFO_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_MENU_ITEM_INFO_H_ - -#include <vector> - -#include "base/i18n/rtl.h" -#include "base/strings/string16.h" - -namespace blink { - -struct MenuItemInfo { - enum Type { kOption, kCheckableOption, kGroup, kSeparator, kSubMenu }; - - MenuItemInfo() - : type(kOption), - action(0), - text_direction(base::i18n::TextDirection::UNKNOWN_DIRECTION), - has_text_direction_override(false), - enabled(false), - checked(false) {} - - base::string16 label; - base::string16 tool_tip; - Type type; - unsigned action; - base::i18n::TextDirection text_direction; - std::vector<MenuItemInfo> sub_menu_items; - bool has_text_direction_override; - bool enabled; - bool checked; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_MENU_ITEM_INFO_H_
diff --git a/chromium/src/third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h b/chromium/src/third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h deleted file mode 100644 index 1fbf10f..0000000 --- a/chromium/src/third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h +++ /dev/null
@@ -1,142 +0,0 @@ -// Copyright (c) 2012 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_UNTRUSTWORTHY_CONTEXT_MENU_PARAMS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_UNTRUSTWORTHY_CONTEXT_MENU_PARAMS_H_ - -#include <stdint.h> - -#include <map> -#include <string> -#include <vector> - -#include "base/optional.h" -#include "base/strings/string16.h" -#include "build/build_config.h" -#include "services/network/public/mojom/referrer_policy.mojom.h" -#include "third_party/blink/public/common/navigation/impression.h" -#include "third_party/blink/public/mojom/context_menu/context_menu.mojom-forward.h" -#include "ui/base/ui_base_types.h" -#include "ui/gfx/geometry/rect.h" -#include "url/gurl.h" - -namespace blink { - -// SECURITY NOTE: Data in this struct is untrustworthy, because it is sent in a -// Mojo from a renderer process. The browser process should use -// ContextMenuParams, after validating UntrustworthyContextMenuParams in a Mojo -// handling routine. -struct BLINK_COMMON_EXPORT UntrustworthyContextMenuParams { - UntrustworthyContextMenuParams(); - UntrustworthyContextMenuParams(const UntrustworthyContextMenuParams& other); - UntrustworthyContextMenuParams& operator=( - const UntrustworthyContextMenuParams& other); - ~UntrustworthyContextMenuParams(); - - // This is the type of Context Node that the context menu was invoked on. - blink::mojom::ContextMenuDataMediaType media_type; - - // These values represent the coordinates of the mouse when the context menu - // was invoked. Coords are relative to the associated RenderView's origin. - int x; - int y; - - // This is the URL of the link that encloses the node the context menu was - // invoked on. - GURL link_url; - - // The text associated with the link. May be an empty string if the contents - // of the link are an image. - // Will be empty if |link_url| is empty. - base::string16 link_text; - - // The impression declared by the link. May be base::nullopt even if - // |link_url| is non-empty. - base::Optional<blink::Impression> impression; - - // The link URL to be used ONLY for "copy link address". We don't validate - // this field in the frontend process. - GURL unfiltered_link_url; - - // This is the source URL for the element that the context menu was - // invoked on. Example of elements with source URLs are img, audio, and - // video. - GURL src_url; - - // This is true if the context menu was invoked on an image which has - // non-empty contents. - bool has_image_contents; - - // These are the parameters for the media element that the context menu - // was invoked on. - int media_flags; - - // This is the text of the selection that the context menu was invoked on. - base::string16 selection_text; - - // This is the title text of the selection that the context menu was - // invoked on. - base::string16 title_text; - - // This is the alt text of the selection that the context menu was - // invoked on. - base::string16 alt_text; - - // This is the suggested filename to be used when saving file through "Save - // Link As" option of context menu. - base::string16 suggested_filename; - - // The misspelled word under the cursor, if any. Used to generate the - // |dictionary_suggestions| list. - base::string16 misspelled_word; - - // Suggested replacements for a misspelled word under the cursor. - // This vector gets populated in the render process host - // by intercepting ViewHostMsg_ContextMenu in ResourceMessageFilter - // and populating dictionary_suggestions if the type is EDITABLE - // and the misspelled_word is not empty. - std::vector<base::string16> dictionary_suggestions; - - // If editable, flag for whether spell check is enabled or not. - bool spellcheck_enabled; - - // Whether context is editable. - bool is_editable; - - // Writing direction menu items. - int writing_direction_default; - int writing_direction_left_to_right; - int writing_direction_right_to_left; - - // These flags indicate to the browser whether the renderer believes it is - // able to perform the corresponding action. - int edit_flags; - - // The character encoding of the frame on which the menu is invoked. - std::string frame_charset; - - // The referrer policy of the frame on which the menu is invoked. - network::mojom::ReferrerPolicy referrer_policy; - - GURL link_followed; - std::vector<blink::mojom::CustomContextMenuItemPtr> custom_items; - - ui::MenuSourceType source_type; - - // If this node is an input field, the type of that field. - blink::mojom::ContextMenuDataInputFieldType input_field_type; - - // Rect representing the coordinates in the document space of the selection. - gfx::Rect selection_rect; - - // Start position of the selection text. - int selection_start_offset; - - private: - void Assign(const UntrustworthyContextMenuParams& other); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_UNTRUSTWORTHY_CONTEXT_MENU_PARAMS_H_
diff --git a/chromium/src/third_party/blink/public/common/css/OWNERS b/chromium/src/third_party/blink/public/common/css/OWNERS deleted file mode 100644 index 315e3a9..0000000 --- a/chromium/src/third_party/blink/public/common/css/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/core/css/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h b/chromium/src/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h deleted file mode 100644 index c1d4a40..0000000 --- a/chromium/src/third_party/blink/public/common/custom_handlers/protocol_handler_utils.h +++ /dev/null
@@ -1,20 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_CUSTOM_HANDLERS_PROTOCOL_HANDLER_UTILS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_CUSTOM_HANDLERS_PROTOCOL_HANDLER_UTILS_H_ - -#include "base/strings/string_piece_forward.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -bool BLINK_COMMON_EXPORT -IsValidCustomHandlerScheme(const base::StringPiece scheme, - bool allow_ext_prefix, - bool& has_custom_scheme_prefix); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CUSTOM_HANDLERS_PROTOCOL_HANDLER_UTILS_H_
diff --git a/chromium/src/third_party/blink/public/common/experiments/memory_ablation_experiment.h b/chromium/src/third_party/blink/public/common/experiments/memory_ablation_experiment.h deleted file mode 100644 index 0159ebd..0000000 --- a/chromium/src/third_party/blink/public/common/experiments/memory_ablation_experiment.h +++ /dev/null
@@ -1,58 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_EXPERIMENTS_MEMORY_ABLATION_EXPERIMENT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_EXPERIMENTS_MEMORY_ABLATION_EXPERIMENT_H_ - -#include <memory> - -#include "base/feature_list.h" -#include "base/memory/ref_counted.h" -#include "third_party/blink/public/common/common_export.h" - -namespace base { -class SequencedTaskRunner; -} - -namespace blink { - -BLINK_COMMON_EXPORT extern const base::Feature kMemoryAblationFeature; -BLINK_COMMON_EXPORT extern const char kMemoryAblationFeatureSizeParam[]; -BLINK_COMMON_EXPORT extern const char kMemoryAblationFeatureMinRAMParam[]; -BLINK_COMMON_EXPORT extern const char kMemoryAblationFeatureMaxRAMParam[]; - -/* When enabled, this experiment allocates a chunk of memory to study - * correlation between memory usage and performance metrics. - */ -class BLINK_COMMON_EXPORT MemoryAblationExperiment { - public: - ~MemoryAblationExperiment(); - - // Starts the experiment if corresponding field trial is enabled - static void MaybeStart(scoped_refptr<base::SequencedTaskRunner> task_runner); - static void MaybeStartForRenderer( - scoped_refptr<base::SequencedTaskRunner> task_runner); - - private: - MemoryAblationExperiment(); - - static void MaybeStartInternal( - const base::Feature& memory_ablation_feature, - scoped_refptr<base::SequencedTaskRunner> task_runner); - void Start(scoped_refptr<base::SequencedTaskRunner> task_runner, size_t size); - - void AllocateMemory(size_t size); - void TouchMemory(size_t offset); - void ScheduleTouchMemory(size_t offset); - - static MemoryAblationExperiment* GetInstance(); - - scoped_refptr<base::SequencedTaskRunner> task_runner_; - size_t memory_size_ = 0; - std::unique_ptr<uint8_t[]> memory_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_EXPERIMENTS_MEMORY_ABLATION_EXPERIMENT_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/DIR_METADATA b/chromium/src/third_party/blink/public/common/feature_policy/DIR_METADATA deleted file mode 100644 index 3eb37bc..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/DIR_METADATA +++ /dev/null
@@ -1,3 +0,0 @@ -monorail { - component: "Blink>FeaturePolicy" -}
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/OWNERS b/chromium/src/third_party/blink/public/common/feature_policy/OWNERS deleted file mode 100644 index 3fd7667..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/OWNERS +++ /dev/null
@@ -1,11 +0,0 @@ -iclelland@chromium.org -raymes@chromium.org -loonybear@chromium.org - - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS -per-file *.typemap=set noparent -per-file *.typemap=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/document_policy.h b/chromium/src/third_party/blink/public/common/feature_policy/document_policy.h deleted file mode 100644 index 7dae83c..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/document_policy.h +++ /dev/null
@@ -1,154 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_H_ - -#include <memory> - -#include "base/containers/flat_map.h" -#include "base/macros.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/feature_policy/document_policy_features.h" -#include "third_party/blink/public/common/feature_policy/policy_value.h" -#include "third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom.h" -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom.h" - -namespace blink { - -// Document Policy is a mechanism for controlling the behaviour of web platform -// features in a document, and for requesting such changes in embedded frames. -// (The specific changes which are made depend on the feature; see the -// specification for details). -// -// Policies can be defined in the HTTP header stream, with the |Document-Policy| -// HTTP header, or can be set by the |policy| attributes on the iframe element -// which embeds the document. -// -// See -// https://github.com/w3c/webappsec-permissions-policy/blob/master/document-policy-explainer.md -// -// Key concepts: -// -// Features -// -------- -// Features which can be controlled by policy are defined by instances of enum -// mojom::DocumentPolicyFeature, declared in |document_policy_feature.mojom|. -// -// Declarations -// ------------ -// A document policy declaration is a mapping of a feature name to a policy -// value. A set of such declarations is a declared policy. The declared policy -// is attached to a document. -// -// Required Policy -// ---------------- -// In addition to the declared policy (which may be empty), every frame has -// an required policy, which is set by the embedding document (or inherited -// from its parent). Any document loaded into a frame with a required policy -// must have a declared policy which is compatible with it. Frames may add new -// requirements to their own subframes, but cannot relax any existing ones. -// -// Advertised Policy -// ----------------- -// If a frame has a non-empty required policy, the requirements will be -// advertised on the outgoing HTTP request for any document to be loaded in that -// frame, in the Sec-Required-Document-Policy HTTP header. -// -// Defaults -// -------- -// Each defined feature has a default policy, which determines the threshold -// value to use when no policy has been declared. - -class BLINK_COMMON_EXPORT DocumentPolicy { - public: - // Mapping of feature to endpoint group. - // https://w3c.github.io/reporting/#endpoint-group - using FeatureEndpointMap = - base::flat_map<mojom::DocumentPolicyFeature, std::string>; - - struct ParsedDocumentPolicy { - DocumentPolicyFeatureState feature_state; - FeatureEndpointMap endpoint_map; - }; - - static std::unique_ptr<DocumentPolicy> CreateWithHeaderPolicy( - const ParsedDocumentPolicy& header_policy); - - static std::unique_ptr<DocumentPolicy> CopyStateFrom(const DocumentPolicy*); - - // Returns true if the feature is unrestricted (has its default value for the - // platform) - bool IsFeatureEnabled(mojom::DocumentPolicyFeature feature) const; - - // Returns true if the feature is unrestricted, or is not restricted as much - // as the given threshold value. - bool IsFeatureEnabled(mojom::DocumentPolicyFeature feature, - const PolicyValue& threshold_value) const; - - // Returns the value of the given feature on the given origin. - PolicyValue GetFeatureValue(mojom::DocumentPolicyFeature feature) const; - - // Returns the endpoint the given feature should report to. - // Returns base::nullopt if the endpoint is unspecified for given feature. - const base::Optional<std::string> GetFeatureEndpoint( - mojom::DocumentPolicyFeature feature) const; - - // Returns true if the incoming policy is compatible with the given required - // policy, i.e. incoming policy is at least as strict as required policy. - static bool IsPolicyCompatible( - const DocumentPolicyFeatureState& required_policy, - const DocumentPolicyFeatureState& incoming_policy); - - // Serialize document policy according to http_structured_header. - // returns base::nullopt when http structured header serializer encounters - // problems, e.g. double value out of the range supported. - static base::Optional<std::string> Serialize( - const DocumentPolicyFeatureState& policy); - - static base::Optional<std::string> SerializeInternal( - const DocumentPolicyFeatureState& policy, - const DocumentPolicyFeatureInfoMap&); - - // Merge two FeatureState map. - // When there is conflict: - // - take the stricter value if PolicyValue is comparable - // - take override_policy's value if PolicyValue is not comparable - static DocumentPolicyFeatureState MergeFeatureState( - const DocumentPolicyFeatureState& base_policy, - const DocumentPolicyFeatureState& override_policy); - - private: - friend class DocumentPolicyTest; - - DocumentPolicy(const DocumentPolicyFeatureState& header_policy, - const FeatureEndpointMap& endpoint_map, - const DocumentPolicyFeatureState& defaults); - static std::unique_ptr<DocumentPolicy> CreateWithHeaderPolicy( - const DocumentPolicyFeatureState& header_policy, - const FeatureEndpointMap& endpoint_map, - const DocumentPolicyFeatureState& defaults); - - void UpdateFeatureState(const DocumentPolicyFeatureState& feature_state); - - // Internal feature state is represented as an array to avoid overhead - // of indexing into map like structure. - std::array<PolicyValue, - static_cast<size_t>(mojom::DocumentPolicyFeature::kMaxValue) + 1> - internal_feature_state_; - - FeatureEndpointMap endpoint_map_; - - DISALLOW_COPY_AND_ASSIGN(DocumentPolicy); -}; - -bool inline operator==(const DocumentPolicy::ParsedDocumentPolicy& lhs, - const DocumentPolicy::ParsedDocumentPolicy& rhs) { - return std::tie(lhs.feature_state, lhs.endpoint_map) == - std::tie(rhs.feature_state, rhs.endpoint_map); -} - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/document_policy_features.h b/chromium/src/third_party/blink/public/common/feature_policy/document_policy_features.h deleted file mode 100644 index 0e4e82f..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/document_policy_features.h +++ /dev/null
@@ -1,37 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_FEATURES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_FEATURES_H_ - -#include "base/containers/flat_map.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/feature_policy/policy_value.h" -#include "third_party/blink/public/mojom/feature_policy/document_policy_feature.mojom.h" - -namespace blink { - -struct DocumentPolicyFeatureInfo { - std::string feature_name; - PolicyValue default_value; -}; - -using DocumentPolicyFeatureInfoMap = - base::flat_map<mojom::DocumentPolicyFeature, DocumentPolicyFeatureInfo>; - -using DocumentPolicyFeatureState = - base::flat_map<mojom::DocumentPolicyFeature, PolicyValue>; - -using DocumentPolicyNameFeatureMap = - base::flat_map<std::string, mojom::DocumentPolicyFeature>; - -BLINK_COMMON_EXPORT const DocumentPolicyFeatureInfoMap& -GetDocumentPolicyFeatureInfoMap(); - -BLINK_COMMON_EXPORT const DocumentPolicyNameFeatureMap& -GetDocumentPolicyNameFeatureMap(); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_DOCUMENT_POLICY_FEATURES_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy.h b/chromium/src/third_party/blink/public/common/feature_policy/feature_policy.h deleted file mode 100644 index 9be48a3..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy.h +++ /dev/null
@@ -1,249 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_H_ - -#include <map> -#include <vector> - -#include "base/macros.h" -#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/feature_policy/feature_policy_features.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-forward.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom-forward.h" -#include "url/origin.h" - -namespace blink { - -// Feature Policy is a mechanism for controlling the availability of web -// platform features in a frame, including all embedded frames. It can be used -// to remove features, automatically refuse API permission requests, or modify -// the behaviour of features. (The specific changes which are made depend on the -// feature; see the specification for details). -// -// Policies can be defined in the HTTP header stream, with the |Feature-Policy| -// HTTP header, or can be set by the |allow| attributes on the iframe element -// which embeds the document. -// -// See https://w3c.github.io/webappsec-permissions-policy/ -// -// Key concepts: -// -// Features -// -------- -// Features which can be controlled by policy are defined by instances of enum -// mojom::FeaturePolicyFeature, declared in |feature_policy.mojom|. -// -// Allowlists -// ---------- -// Allowlists are collections of origins, although several special terms can be -// used when declaring them: -// "none" indicates that no origins should be included in the allowlist. -// "self" refers to the origin of the frame which is declaring the policy. -// "src" refers to the origin specified by the attributes of the iframe -// element which embeds the document. This incorporates the src, srcdoc, and -// sandbox attributes. -// "*" refers to all origins; any origin will match an allowlist which -// contains it. -// -// Declarations -// ------------ -// A feature policy declaration is a mapping of a feature name to an allowlist. -// A set of declarations is a declared policy. -// -// Inherited Policy -// ---------------- -// In addition to the declared policy (which may be empty), every frame has -// an inherited policy, which is determined by the context in which it is -// embedded, or by the defaults for each feature in the case of the top-level -// document. -// -// Container Policy -// ---------------- -// A declared policy can be set on a specific frame by the embedding page using -// the iframe "allow" attribute, or through attributes such as "allowfullscreen" -// or "allowpaymentrequest". This is the container policy for the embedded -// frame. -// -// Defaults -// -------- -// Each defined feature has a default policy, which determines whether the -// feature is available when no policy has been declared, and determines how the -// feature is inherited across origin boundaries. -// -// If the default policy is in effect for a frame, then it controls how the -// feature is inherited by any cross-origin iframes embedded by the frame. (See -// the comments in |FeaturePolicyFeatureDefault| in feature_policy_features.h -// for specifics.) -// -// Policy Inheritance -// ------------------ -// Policies in effect for a frame are inherited by any child frames it embeds. -// Unless another policy is declared in the child, all same-origin children will -// receive the same set of enabled features as the parent frame. Whether or not -// features are inherited by cross-origin iframes without an explicit policy is -// determined by the feature's default policy. (Again, see the comments in -// |FeaturePolicyFeatureDefault| in feature_policy_features.h for details) - -// This struct holds feature policy allowlist data that needs to be replicated -// between a RenderFrame and any of its associated RenderFrameProxies. A list of -// these form a ParsedFeaturePolicy. -// NOTE: These types are used for replication frame state between processes. -struct BLINK_COMMON_EXPORT ParsedFeaturePolicyDeclaration { - ParsedFeaturePolicyDeclaration(); - explicit ParsedFeaturePolicyDeclaration(mojom::FeaturePolicyFeature feature); - ParsedFeaturePolicyDeclaration(mojom::FeaturePolicyFeature feature, - const std::vector<url::Origin>& values, - bool matches_all_origins, - bool matches_opaque_src); - ParsedFeaturePolicyDeclaration(const ParsedFeaturePolicyDeclaration& rhs); - ParsedFeaturePolicyDeclaration& operator=( - const ParsedFeaturePolicyDeclaration& rhs); - ~ParsedFeaturePolicyDeclaration(); - - mojom::FeaturePolicyFeature feature; - - // An alphabetically sorted list of all the origins allowed. - std::vector<url::Origin> allowed_origins; - // Fallback value is used when feature is enabled for all or disabled for all. - bool matches_all_origins{false}; - // This flag is set true for a declared policy on an <iframe sandbox> - // container, for a feature which is supposed to be allowed in the sandboxed - // document. Usually, the 'src' keyword in a declaration will cause the origin - // of the iframe to be present in |origins|, but for sandboxed iframes, this - // flag is set instead. - bool matches_opaque_src{false}; -}; - -using ParsedFeaturePolicy = std::vector<ParsedFeaturePolicyDeclaration>; - -bool BLINK_COMMON_EXPORT operator==(const ParsedFeaturePolicyDeclaration& lhs, - const ParsedFeaturePolicyDeclaration& rhs); - -class BLINK_COMMON_EXPORT FeaturePolicy { - public: - // Represents a collection of origins which make up an allowlist in a feature - // policy. This collection may be set to match every origin (corresponding to - // the "*" syntax in the policy string, in which case the Contains() method - // will always return true. - class BLINK_COMMON_EXPORT Allowlist final { - public: - Allowlist(); - Allowlist(const Allowlist& rhs); - ~Allowlist(); - - // Adds a single origin to the allowlist. - void Add(const url::Origin& origin); - - // Adds all origins to the allowlist. - void AddAll(); - - // Sets the allowlist to match the opaque origin implied by the 'src' - // keyword. - void AddOpaqueSrc(); - - // Returns true if the given origin has been added to the allowlist. - bool Contains(const url::Origin& origin) const; - - // Returns true if the allowlist matches all origins. - bool MatchesAll() const; - - // Returns true if the allowlist should match the opaque origin implied by - // the 'src' keyword. - bool MatchesOpaqueSrc() const; - - const std::vector<url::Origin>& AllowedOrigins() const { - return allowed_origins_; - } - - private: - std::vector<url::Origin> allowed_origins_; - bool matches_all_origins_{false}; - bool matches_opaque_src_{false}; - }; - - ~FeaturePolicy(); - - static std::unique_ptr<FeaturePolicy> CreateFromParentPolicy( - const FeaturePolicy* parent_policy, - const ParsedFeaturePolicy& container_policy, - const url::Origin& origin); - - static std::unique_ptr<FeaturePolicy> CopyStateFrom(const FeaturePolicy*); - - bool IsFeatureEnabled(mojom::FeaturePolicyFeature feature) const; - - // Returns whether or not the given feature is enabled by this policy for a - // specific origin. - bool IsFeatureEnabledForOrigin(mojom::FeaturePolicyFeature feature, - const url::Origin& origin) const; - - const Allowlist GetAllowlistForDevTools( - mojom::FeaturePolicyFeature feature) const; - - // Returns the allowlist of a given feature by this policy. - // TODO(crbug.com/937131): Use |FeaturePolicy::GetAllowlistForDevTools| - // to replace this method. This method uses legacy |default_allowlist| - // calculation method. - const Allowlist GetAllowlistForFeature( - mojom::FeaturePolicyFeature feature) const; - - // Sets the declared policy from the parsed Feature-Policy HTTP header. - // Unrecognized features will be ignored. - void SetHeaderPolicy(const ParsedFeaturePolicy& parsed_header); - - // Returns the current state of feature policies for |origin_|. This includes - // the |inherited_policies_| as well as the header policies. - FeaturePolicyFeatureState GetFeatureState() const; - - const url::Origin& GetOriginForTest() const { return origin_; } - - // Returns the list of features which can be controlled by Feature Policy. - const FeaturePolicyFeatureList& GetFeatureList() const; - - bool IsFeatureEnabledByInheritedPolicy( - mojom::FeaturePolicyFeature feature) const; - - private: - friend class FeaturePolicyTest; - - FeaturePolicy(url::Origin origin, - const FeaturePolicyFeatureList& feature_list); - static std::unique_ptr<FeaturePolicy> CreateFromParentPolicy( - const FeaturePolicy* parent_policy, - const ParsedFeaturePolicy& container_policy, - const url::Origin& origin, - const FeaturePolicyFeatureList& features); - - bool InheritedValueForFeature( - const FeaturePolicy* parent_policy, - std::pair<mojom::FeaturePolicyFeature, FeaturePolicyFeatureDefault> - feature, - const ParsedFeaturePolicy& container_policy) const; - - // Returns the value of the given feature on the given origin. - bool GetFeatureValueForOrigin(mojom::FeaturePolicyFeature feature, - const url::Origin& origin) const; - - // The origin of the document with which this policy is associated. - url::Origin origin_; - - // Map of feature names to declared allowlists. Any feature which is missing - // from this map should use the inherited policy. - std::map<mojom::FeaturePolicyFeature, Allowlist> allowlists_; - - // Records whether or not each feature was enabled for this frame by its - // parent frame. - FeaturePolicyFeatureState inherited_policies_; - - const FeaturePolicyFeatureList& feature_list_; - - DISALLOW_COPY_AND_ASSIGN(FeaturePolicy); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_features.h b/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_features.h deleted file mode 100644 index 13884a3..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_features.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FEATURES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FEATURES_H_ - -#include "base/containers/flat_map.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom-forward.h" - -namespace blink { - -// The FeaturePolicyFeatureDefault enum defines the default enable state for -// a feature when the feature is not declared in iframe 'allow' attribute. -// See |FeaturePolicy::InheritedValueForFeature| for usage. -// -// The 2 possibilities map directly to Feature Policy Allowlist semantics. -// -// The default values for each feature are set in GetDefaultFeatureList. -enum class FeaturePolicyFeatureDefault { - // Equivalent to ["self"]. If this default policy is in effect for a frame, - // then the feature will be enabled for that frame, and any same-origin - // child frames, but not for any cross-origin child frames. - EnableForSelf, - - // Equivalent to ["*"]. If in effect for a frame, then the feature is - // enabled for that frame and all of its children. - EnableForAll -}; - -using FeaturePolicyFeatureList = - std::map<mojom::FeaturePolicyFeature, FeaturePolicyFeatureDefault>; - -BLINK_COMMON_EXPORT const FeaturePolicyFeatureList& -GetFeaturePolicyFeatureList(); - -// TODO(iclelland): Generate, instead of this map, a set of bool flags, one -// for each feature, as all features are supposed to be represented here. -using FeaturePolicyFeatureState = std::map<mojom::FeaturePolicyFeature, bool>; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FEATURES_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_forward.h b/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_forward.h deleted file mode 100644 index 99e41e4..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/feature_policy_forward.h +++ /dev/null
@@ -1,14 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FORWARD_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FORWARD_H_ - -namespace blink { - -struct ParsedFeaturePolicyDeclaration; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_FEATURE_POLICY_FORWARD_H_
diff --git a/chromium/src/third_party/blink/public/common/feature_policy/policy_value.h b/chromium/src/third_party/blink/public/common/feature_policy/policy_value.h deleted file mode 100644 index 60490d3..0000000 --- a/chromium/src/third_party/blink/public/common/feature_policy/policy_value.h +++ /dev/null
@@ -1,78 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_POLICY_VALUE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_POLICY_VALUE_H_ - -#include "base/macros.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/feature_policy/policy_value.mojom-shared.h" - -namespace blink { - -// ListValue (PolicyValue) -// ---------------------- -// PolicyValue is a union of types (int / double / set<int> / bool ) that can be -// used to specify the parameter of a policy. - -// TODO(crbug.com/1119481): Add the following types: enum, inc/dec int, inc -// double, set. -class BLINK_COMMON_EXPORT PolicyValue { - public: - PolicyValue(); - - static PolicyValue CreateBool(bool); - static PolicyValue CreateDecDouble(double); - static PolicyValue CreateEnum(int32_t); - - // A 'max' PolicyValue is the most permissive value for the policy. - static PolicyValue CreateMaxPolicyValue(mojom::PolicyValueType type); - // A 'min' PolicyValue is the most restrictive value for the policy. - static PolicyValue CreateMinPolicyValue(mojom::PolicyValueType type); - - mojom::PolicyValueType Type() const { return type_; } - void SetType(mojom::PolicyValueType type) { type_ = type; } - - // PolicyValue getters. - // Note the getters also DCHECKs that the type is correct. - bool BoolValue() const; - double DoubleValue() const; - int32_t IntValue() const; - - // PolicyValue setters. - // Note the getters also DCHECKs that the type is correct. - void SetBoolValue(bool bool_value); - void SetDoubleValue(double double_value); - void SetIntValue(int32_t int_value); - - // Operater overrides - PolicyValue& operator=(const PolicyValue& rhs); - - void SetToMax(); - void SetToMin(); - - // Test whether this policy value is compatible with required policy value. - // Note: a.IsCompatibleWith(b) == true does not necessary indicate - // b.IsCompatibleWith(a) == false, because not all policy value types support - // strictness comparison, e.g. enum. - bool IsCompatibleWith(const PolicyValue& required) const; - - private: - explicit PolicyValue(bool bool_value); - PolicyValue(int32_t int_value, mojom::PolicyValueType type); - PolicyValue(double double_value, mojom::PolicyValueType type); - - mojom::PolicyValueType type_; - bool bool_value_ = false; - double double_value_ = 0.0; - int32_t int_value_ = -1; -}; - -bool BLINK_COMMON_EXPORT operator==(const PolicyValue& lhs, - const PolicyValue& rhs); -bool BLINK_COMMON_EXPORT operator!=(const PolicyValue& lhs, - const PolicyValue& rhs); -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURE_POLICY_POLICY_VALUE_H_
diff --git a/chromium/src/third_party/blink/public/common/features.h b/chromium/src/third_party/blink/public/common/features.h deleted file mode 100644 index 2775c48..0000000 --- a/chromium/src/third_party/blink/public/common/features.h +++ /dev/null
@@ -1,368 +0,0 @@ -// Copyright 2018 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_ - -#include "base/feature_list.h" -#include "base/metrics/field_trial_params.h" -#include "media/media_buildflags.h" -#include "third_party/blink/public/common/buildflags.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/forcedark/forcedark_switches.h" - -namespace blink { -namespace features { - -BLINK_COMMON_EXPORT extern const base::Feature - kBlockingDownloadsInAdFrameWithoutUserActivation; -BLINK_COMMON_EXPORT extern const base::Feature kCOLRV1Fonts; -BLINK_COMMON_EXPORT extern const base::Feature kPaintHolding; -BLINK_COMMON_EXPORT extern const base::Feature kPaintHoldingCrossOrigin; -BLINK_COMMON_EXPORT extern const base::Feature - kEagerCacheStorageSetupForServiceWorkers; -BLINK_COMMON_EXPORT extern const base::Feature kScriptStreaming; -BLINK_COMMON_EXPORT extern const base::Feature kSmallScriptStreaming; -BLINK_COMMON_EXPORT extern const base::Feature kUserLevelMemoryPressureSignal; -BLINK_COMMON_EXPORT extern const base::Feature kFreezePurgeMemoryAllPagesFrozen; -BLINK_COMMON_EXPORT extern const base::Feature kFreezeUserAgent; -BLINK_COMMON_EXPORT extern const base::Feature - kFrequencyCappingForOverlayPopupDetection; -BLINK_COMMON_EXPORT extern const base::Feature - kFrequencyCappingForLargeStickyAdDetection; -BLINK_COMMON_EXPORT extern const base::Feature kFtpProtocol; -BLINK_COMMON_EXPORT extern const base::Feature kInsertKeyToggleMode; -BLINK_COMMON_EXPORT extern const base::Feature kDisplayLocking; -BLINK_COMMON_EXPORT extern const base::Feature kJSONModules; -BLINK_COMMON_EXPORT extern const base::Feature kForceSynchronousHTMLParsing; -BLINK_COMMON_EXPORT extern const base::Feature kTopLevelAwait; -BLINK_COMMON_EXPORT extern const base::Feature kEditingNG; -BLINK_COMMON_EXPORT extern const base::Feature kLayoutNG; -BLINK_COMMON_EXPORT extern const base::Feature kLayoutNGTable; -BLINK_COMMON_EXPORT extern const base::Feature kLayoutNGFieldset; -BLINK_COMMON_EXPORT extern const base::Feature kLayoutNGTextControl; -BLINK_COMMON_EXPORT extern const base::Feature kMixedContentAutoupgrade; -BLINK_COMMON_EXPORT extern const base::Feature kNavigationPredictor; -BLINK_COMMON_EXPORT extern const base::Feature kNavigatorPluginsEmpty; -BLINK_COMMON_EXPORT extern const base::Feature kPlzDedicatedWorker; -BLINK_COMMON_EXPORT extern const base::Feature kPortals; -BLINK_COMMON_EXPORT extern const base::Feature kPortalsCrossOrigin; - -// Prerender2: -BLINK_COMMON_EXPORT extern const base::Feature kPrerender2; -enum class Prerender2Implementation { kWebContents, kMPArch }; -BLINK_COMMON_EXPORT extern const base::FeatureParam<Prerender2Implementation> - kPrerender2ImplementationParam; - -// Returns true when Prerender2 feature is enabled. -BLINK_COMMON_EXPORT bool IsPrerender2Enabled(); - -BLINK_COMMON_EXPORT extern const base::Feature - kPreviewsResourceLoadingHintsSpecificResourceTypes; -BLINK_COMMON_EXPORT extern const base::Feature - kPurgeRendererMemoryWhenBackgrounded; -BLINK_COMMON_EXPORT extern const base::Feature kRawClipboard; -BLINK_COMMON_EXPORT extern const base::Feature - kRTCGetCurrentBrowsingContextMedia; -BLINK_COMMON_EXPORT extern const base::Feature kRTCUnifiedPlanByDefault; -BLINK_COMMON_EXPORT extern const base::Feature kRTCOfferExtmapAllowMixed; -BLINK_COMMON_EXPORT extern const base::Feature kRTCGpuCodecSupportWaiter; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kRTCGpuCodecSupportWaiterTimeoutParam; -BLINK_COMMON_EXPORT extern const base::Feature kV8OptimizeWorkersForPerformance; -BLINK_COMMON_EXPORT extern const base::Feature - kWebMeasureMemoryViaPerformanceManager; -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcMultiplexCodec; -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcHideLocalIpsWithMdns; -BLINK_COMMON_EXPORT extern const base::Feature - kWebRtcIgnoreUnspecifiedColorSpace; - -BLINK_COMMON_EXPORT extern const base::Feature kIntensiveWakeUpThrottling; -BLINK_COMMON_EXPORT extern const char - kIntensiveWakeUpThrottling_GracePeriodSeconds_Name[]; - -#if BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcH264WithOpenH264FFmpeg; -#endif // BUILDFLAG(RTC_USE_H264) && BUILDFLAG(ENABLE_FFMPEG_VIDEO_DECODERS) - -BLINK_COMMON_EXPORT extern const base::Feature kResourceLoadViaDataPipe; -BLINK_COMMON_EXPORT extern const base::Feature kServiceWorkerUpdateDelay; -BLINK_COMMON_EXPORT extern const base::Feature kStopInBackground; -BLINK_COMMON_EXPORT extern const base::Feature - kFreezeBackgroundTabOnNetworkIdle; -BLINK_COMMON_EXPORT extern const base::Feature kStorageAccessAPI; -BLINK_COMMON_EXPORT extern const base::Feature kTextFragmentAnchor; -BLINK_COMMON_EXPORT extern const base::Feature kFontAccess; -BLINK_COMMON_EXPORT extern const base::Feature kFontAccessPersistent; -BLINK_COMMON_EXPORT extern const base::Feature kComputePressure; -BLINK_COMMON_EXPORT extern const base::Feature kFileHandlingAPI; -BLINK_COMMON_EXPORT extern const base::Feature kAllowSyncXHRInPageDismissal; -BLINK_COMMON_EXPORT extern const base::Feature kPrefetchPrivacyChanges; - -BLINK_COMMON_EXPORT extern const base::Feature kDecodeJpeg420ImagesToYUV; -BLINK_COMMON_EXPORT extern const base::Feature kDecodeLossyWebPImagesToYUV; - -BLINK_COMMON_EXPORT extern const base::Feature - kWebFontsCacheAwareTimeoutAdaption; -BLINK_COMMON_EXPORT extern const base::Feature - kBlockingFocusWithoutUserActivation; - -BLINK_COMMON_EXPORT extern const base::Feature kAudioWorkletRealtimeThread; -BLINK_COMMON_EXPORT extern const base::Feature - kAudioWorkletThreadRealtimePriority; - -BLINK_COMMON_EXPORT extern const base::Feature kLightweightNoStatePrefetch; - -BLINK_COMMON_EXPORT extern const base::Feature kSaveDataImgSrcset; - -BLINK_COMMON_EXPORT extern const base::Feature kForceWebContentsDarkMode; -BLINK_COMMON_EXPORT extern const base::FeatureParam<ForceDarkInversionMethod> - kForceDarkInversionMethodParam; -BLINK_COMMON_EXPORT extern const base::FeatureParam<ForceDarkImageBehavior> - kForceDarkImageBehaviorParam; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kForceDarkTextLightnessThresholdParam; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kForceDarkBackgroundLightnessThresholdParam; - -// Returns true when PlzDedicatedWorker is enabled. -BLINK_COMMON_EXPORT bool IsPlzDedicatedWorkerEnabled(); - -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcUseMinMaxVEADimensions; - -// Blink garbage collection. -BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapCompaction; -BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentMarking; -BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapConcurrentSweeping; -BLINK_COMMON_EXPORT extern const base::Feature kBlinkHeapIncrementalMarking; -BLINK_COMMON_EXPORT extern const base::Feature - kBlinkHeapIncrementalMarkingStress; - -BLINK_COMMON_EXPORT extern const base::Feature - kVerifyHTMLFetchedFromAppCacheBeforeDelay; - -BLINK_COMMON_EXPORT extern const base::Feature - kBlinkCompositorUseDisplayThreadPriority; - -BLINK_COMMON_EXPORT extern const base::Feature - kIgnoreCrossOriginWindowWhenNamedAccessOnWindow; - -BLINK_COMMON_EXPORT extern const base::Feature kDisableForceDeferInChildFrames; - -BLINK_COMMON_EXPORT extern const base::Feature kTransformInterop; - -BLINK_COMMON_EXPORT extern const base::Feature kSubresourceRedirect; - -BLINK_COMMON_EXPORT extern const base::Feature kSetLowPriorityForBeacon; - -BLINK_COMMON_EXPORT extern const base::Feature kCacheStorageCodeCacheHintHeader; -BLINK_COMMON_EXPORT extern const base::FeatureParam<std::string> - kCacheStorageCodeCacheHintHeaderName; - -BLINK_COMMON_EXPORT extern const base::Feature kDispatchBeforeUnloadOnFreeze; - -BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyCanvas2dImageChromium; -BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyCanvas2dSwapChain; -BLINK_COMMON_EXPORT extern const base::Feature kLowLatencyWebGLSwapChain; - -BLINK_COMMON_EXPORT extern const base::Feature kDawn2dCanvas; - -BLINK_COMMON_EXPORT extern const base::Feature kWebviewAccelerateSmallCanvases; - -BLINK_COMMON_EXPORT extern const base::Feature kDiscardCodeCacheAfterFirstUse; - -BLINK_COMMON_EXPORT extern const base::Feature kBlockHTMLParserOnStyleSheets; - -BLINK_COMMON_EXPORT extern const base::Feature kLinkDisabledNewSpecBehavior; - -BLINK_COMMON_EXPORT extern const base::Feature kFontPreloadingDelaysRendering; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kFontPreloadingDelaysRenderingParam; - -BLINK_COMMON_EXPORT extern const base::Feature kKeepScriptResourceAlive; - -BLINK_COMMON_EXPORT extern const base::Feature kDelayAsyncScriptExecution; -enum class DelayAsyncScriptDelayType { - kFinishedParsing, - kFirstPaintOrFinishedParsing, - kUseOptimizationGuide, -}; -BLINK_COMMON_EXPORT extern const base::FeatureParam<DelayAsyncScriptDelayType> - kDelayAsyncScriptExecutionDelayParam; - -BLINK_COMMON_EXPORT extern const base::Feature - kDelayCompetingLowPriorityRequests; -enum class DelayCompetingLowPriorityRequestsDelayType { - kFirstPaint, - kFirstContentfulPaint, - kAlways, - kUseOptimizationGuide, -}; -BLINK_COMMON_EXPORT extern const base::FeatureParam< - DelayCompetingLowPriorityRequestsDelayType> - kDelayCompetingLowPriorityRequestsDelayParam; -enum class DelayCompetingLowPriorityRequestsThreshold { - kMedium, - kHigh, -}; -BLINK_COMMON_EXPORT extern const base::FeatureParam< - DelayCompetingLowPriorityRequestsThreshold> - kDelayCompetingLowPriorityRequestsThresholdParam; - -BLINK_COMMON_EXPORT extern const base::Feature kAppCache; -BLINK_COMMON_EXPORT extern const base::Feature kAppCacheRequireOriginTrial; - -BLINK_COMMON_EXPORT extern const base::Feature - kAlignFontDisplayAutoTimeoutWithLCPGoal; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kAlignFontDisplayAutoTimeoutWithLCPGoalTimeoutParam; -enum class AlignFontDisplayAutoTimeoutWithLCPGoalMode { - kToFailurePeriod, - kToSwapPeriod -}; -BLINK_COMMON_EXPORT extern const base::FeatureParam< - AlignFontDisplayAutoTimeoutWithLCPGoalMode> - kAlignFontDisplayAutoTimeoutWithLCPGoalModeParam; - -BLINK_COMMON_EXPORT extern const base::Feature kThrottleInstallingServiceWorker; -BLINK_COMMON_EXPORT extern const base::FeatureParam<int> - kInstallingServiceWorkerOutstandingThrottledLimit; - -// Enables storing and loading security policies (for now, referrer policy) in -// the policy container. The policy container for the current document is -// attached to the RenderFrameHost and mirrored to the LocalFrame in Blink. -BLINK_COMMON_EXPORT extern const base::Feature kPolicyContainer; - -// This flag is used to set field parameters to choose predictor we use when -// kResamplingInputEvents is disabled. It's used for gatherig accuracy metrics -// on finch and also for choosing predictor type for predictedEvents API without -// enabling resampling. It does not have any effect when the resampling flag is -// enabled. -BLINK_COMMON_EXPORT extern const base::Feature kInputPredictorTypeChoice; - -// Enables resampling input events on main thread. -BLINK_COMMON_EXPORT extern const base::Feature kResamplingInputEvents; - -// Enables resampling GestureScroll events on compositor thread. -// Uses the kPredictorName* values in ui_base_features.h as the 'predictor' -// feature param. -BLINK_COMMON_EXPORT extern const base::Feature kResamplingScrollEvents; - -// Enables the device-memory, resource-width, viewport-width and DPR client -// hints to be sent to third-party origins if the first-party has opted in to -// receiving client hints, regardless of Feature Policy. -BLINK_COMMON_EXPORT extern const base::Feature kAllowClientHintsToThirdParty; - -// Enables filtering of predicted scroll events on compositor thread. -// Uses the kFilterName* values in ui_base_features.h as the 'filter' feature -// param. -BLINK_COMMON_EXPORT extern const base::Feature kFilteringScrollPrediction; - -// Enables changing the influence of acceleration based on change of direction. -BLINK_COMMON_EXPORT extern const base::Feature kKalmanHeuristics; - -// Enables discarding the prediction if the predicted direction is opposite from -// the current direction. -BLINK_COMMON_EXPORT extern const base::Feature kKalmanDirectionCutOff; - -// Skips the browser touch event filter, ensuring that events that reach the -// queue and would otherwise be filtered out will instead be passed onto the -// renderer compositor process as long as the page hasn't timed out. If -// skip_filtering_process is browser_and_renderer, also skip the renderer cc -// touch event filter, ensuring that events will be passed onto the renderer -// main thread. Which event types will be always forwarded is controlled by the -// "type" FeatureParam, which can be either "discrete" (default) or "all". -BLINK_COMMON_EXPORT -extern const base::Feature kSkipTouchEventFilter; -BLINK_COMMON_EXPORT -extern const char kSkipTouchEventFilterTypeParamName[]; -BLINK_COMMON_EXPORT -extern const char kSkipTouchEventFilterTypeParamValueDiscrete[]; -BLINK_COMMON_EXPORT -extern const char kSkipTouchEventFilterTypeParamValueAll[]; -BLINK_COMMON_EXPORT -extern const char kSkipTouchEventFilterFilteringProcessParamName[]; -BLINK_COMMON_EXPORT -extern const char kSkipTouchEventFilterFilteringProcessParamValueBrowser[]; -BLINK_COMMON_EXPORT -extern const char - kSkipTouchEventFilterFilteringProcessParamValueBrowserAndRenderer[]; - -BLINK_COMMON_EXPORT extern const base::Feature kCompressParkableStrings; -BLINK_COMMON_EXPORT extern const base::Feature kParkableStringsToDisk; -BLINK_COMMON_EXPORT bool IsParkableStringsToDiskEnabled(); - -BLINK_COMMON_EXPORT extern const base::Feature kCrOSAutoSelect; - -BLINK_COMMON_EXPORT extern const base::Feature kCompositingOptimizations; - -BLINK_COMMON_EXPORT extern const base::Feature kReducedReferrerGranularity; - -BLINK_COMMON_EXPORT extern const base::Feature kContentCaptureConstantStreaming; - -BLINK_COMMON_EXPORT extern const base::Feature - kContentCaptureUserActivatedDelay; - -BLINK_COMMON_EXPORT extern const base::Feature kCheckOfflineCapability; -enum class CheckOfflineCapabilityMode { - kWarnOnly, - kEnforce, -}; -BLINK_COMMON_EXPORT extern const base::FeatureParam<CheckOfflineCapabilityMode> - kCheckOfflineCapabilityParam; - -BLINK_COMMON_EXPORT extern const base::Feature - kBackForwardCacheABExperimentControl; -BLINK_COMMON_EXPORT -extern const char kBackForwardCacheABExperimentGroup[]; - -BLINK_COMMON_EXPORT extern const base::Feature kPreferCompositingToLCDText; - -BLINK_COMMON_EXPORT extern const base::Feature - kLogUnexpectedIPCPostedToBackForwardCachedDocuments; - -BLINK_COMMON_EXPORT extern const base::Feature kWebAppEnableLinkCapturing; - -BLINK_COMMON_EXPORT extern const base::Feature kWebAppEnableUrlHandlers; - -BLINK_COMMON_EXPORT extern const base::Feature kWebAppEnableProtocolHandlers; - -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcLibvpxEncodeNV12; - -BLINK_COMMON_EXPORT extern const base::Feature kLoadingTasksUnfreezable; - -BLINK_COMMON_EXPORT extern const base::Feature kTargetBlankImpliesNoOpener; - -BLINK_COMMON_EXPORT extern const base::Feature - kMediaStreamTrackUseConfigMaxFrameRate; - -BLINK_COMMON_EXPORT extern const base::Feature kCloneSessionStorageForNoOpener; - -BLINK_COMMON_EXPORT extern const base::Feature kWebRtcDistinctWorkerThread; - -// Performs additional SubresourceFilter checks when CNAME aliases are found -// for the host of a requested URL. -BLINK_COMMON_EXPORT extern const base::Feature - kSendCnameAliasesToSubresourceFilterFromRenderer; - -BLINK_COMMON_EXPORT extern const base::Feature kDeclarativeShadowDOM; - -BLINK_COMMON_EXPORT extern const base::Feature kInterestCohortAPIOriginTrial; - -BLINK_COMMON_EXPORT extern const base::Feature kInterestCohortFeaturePolicy; - -BLINK_COMMON_EXPORT extern const base::Feature kTextFragmentColorChange; - -BLINK_COMMON_EXPORT extern const base::Feature kDisableDocumentDomainByDefault; - -BLINK_COMMON_EXPORT extern const base::Feature kScopeMemoryCachePerContext; - -BLINK_COMMON_EXPORT extern const base::Feature kEnablePenetratingImageSelection; - -BLINK_COMMON_EXPORT extern const base::Feature kCLSM90Improvements; - -} // namespace features -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FEATURES_H_
diff --git a/chromium/src/third_party/blink/public/common/fetch/OWNERS b/chromium/src/third_party/blink/public/common/fetch/OWNERS deleted file mode 100644 index fd7b644..0000000 --- a/chromium/src/third_party/blink/public/common/fetch/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://third_party/blink/renderer/core/fetch/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/font_access/OWNERS b/chromium/src/third_party/blink/public/common/font_access/OWNERS deleted file mode 100644 index 3378471..0000000 --- a/chromium/src/third_party/blink/public/common/font_access/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -oyiptong@chromium.org -jsbell@Chromium.org - - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/font_access/font_enumeration_table.proto b/chromium/src/third_party/blink/public/common/font_access/font_enumeration_table.proto deleted file mode 100644 index 5b85f57..0000000 --- a/chromium/src/third_party/blink/public/common/font_access/font_enumeration_table.proto +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2020 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. - -syntax = "proto2"; - -option optimize_for = LITE_RUNTIME; - -package blink; - -message FontEnumerationTable { - // Represents font metadata to be enumerated. - message FontMetadata { - required string postscript_name = 10; - required string full_name = 20; - required string family = 30; - required string style = 40; - } - - repeated FontMetadata fonts = 10; -}
diff --git a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/OWNERS b/chromium/src/third_party/blink/public/common/font_unique_name_lookup/OWNERS deleted file mode 100644 index 68b10d6..0000000 --- a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -drott@chromium.org - - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h b/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h deleted file mode 100644 index af7e0c8..0000000 --- a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_matcher.h +++ /dev/null
@@ -1,69 +0,0 @@ -// Copyright 2018 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_MATCHER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_MATCHER_H_ - -#include "base/memory/read_only_shared_memory_region.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/font_unique_name_lookup/font_unique_name_table.pb.h" - -#include <stddef.h> -#include <stdint.h> - -namespace blink { - -// Parses a protobuf received in memory_mapping to build a font lookup -// structure. Allows case-insensitively matching full font names or postscript -// font names against the parsed table by calling MatchName. Used in Blink for -// looking up -// @font-face { src: local(<font_name>) } CSS font face src references. -class BLINK_COMMON_EXPORT FontTableMatcher { - public: - // Constructs a FontTableMatcher from a ReadOnlySharedMemoryMapping returned - // by FontUniqueNameLookup. Internally parses the Protobuf structure in - // memory_mapping to build a list of unique font names, which can then be - // matched using the MatchName method. The ReadOnlySharedMemoryMapping passed - // in memory_mapping only needs to be alive for the initial construction of - // FontTableMatcher. After that, FontTableMatcher no longer accesses it. - explicit FontTableMatcher( - const base::ReadOnlySharedMemoryMapping& memory_mapping); - - // Takes a FontUniqueNameTable protobuf and serializes it into a newly created - // ReadonlySharedMemoryMapping. Used only for testing. - static base::ReadOnlySharedMemoryMapping MemoryMappingFromFontUniqueNameTable( - const FontUniqueNameTable& font_unique_name_table); - - struct MatchResult { - std::string font_path; - uint32_t ttc_index; - }; - - // Given a font full name or font potscript name, match case insensitively - // against the internal list of unique font names. - // Return a font filesystem path and a TrueType collection index to identify a - // font binary to uniquely identify instantiate a font. - base::Optional<MatchResult> MatchName(const std::string& name_request) const; - - // Returns the number of fonts available after parsing the - // ReadOnlySharedMemoryMapping. - size_t AvailableFonts() const; - - // Compares this FontTableMatcher to other for whether - // their internal list of fonts is disjoint. Used only for testing. - bool FontListIsDisjointFrom(const FontTableMatcher& other) const; - - // When building a FontUniqueNameTable, use this function to prepare and sort - // the font names in the protobuf datastructure so that the binary search used - // by calls to MatchName succeeds on ReadOnlySharedMemoryMappings that are - // handed out to renderers. - static void SortUniqueNameTableForSearch(FontUniqueNameTable* font_table); - - private: - FontUniqueNameTable font_table_; -}; - -} // namespace blink - -#endif // CONTENT_BROWSER_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_MATCHER_H_
diff --git a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_persistence.h b/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_persistence.h deleted file mode 100644 index 73e1478..0000000 --- a/chromium/src/third_party/blink/public/common/font_unique_name_lookup/font_table_persistence.h +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_PERSISTENCE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_PERSISTENCE_H_ - -#include "base/files/file.h" -#include "base/memory/read_only_shared_memory_region.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/font_unique_name_lookup/font_unique_name_table.pb.h" - -namespace blink { - -// Persistence functions for storing to and reading from disk the font table -// lookup structure. The storage format is a pickle of a PersistenceHash prefix -// computed over the protobuf, followed by a dump of the FontUniqueNameTable -// protobuf. The persistence functions ensure that the format is followed, that -// persisting stores the checksum and reading validates the checksum. -namespace font_table_persistence { - -// Load a FontUniqueNameTable protobuf from a persistence file, and if the -// checksum validates correctly, allocate the MappedReadOnlyRegion and copy the -// read ProtoBuf into it. Returns true on success, false on failures such as -// inabilitiy to access the file, empty file, incorrect checksum, or failing to -// parse the read dump as a FontUniqueNameTable protobuf. -bool BLINK_COMMON_EXPORT -LoadFromFile(base::FilePath file_path, - base::MappedReadOnlyRegion* name_table_region); - -// Store a FontUniqueNameTable protobuf to a dump file, prefixing the protobuf -// dump with a PersistenceHash checksum. Returns true on success, false on -// failures such as failing to open the file or failing to write the dump into -// it. -bool BLINK_COMMON_EXPORT -PersistToFile(const base::MappedReadOnlyRegion& name_table_region, - base::FilePath file_path); - -} // namespace font_table_persistence - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FONT_UNIQUE_NAME_LOOKUP_FONT_TABLE_PERSISTENCE_H_x
diff --git a/chromium/src/third_party/blink/public/common/forcedark/forcedark_switches.h b/chromium/src/third_party/blink/public/common/forcedark/forcedark_switches.h deleted file mode 100644 index f2fda3a..0000000 --- a/chromium/src/third_party/blink/public/common/forcedark/forcedark_switches.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FORCEDARK_FORCEDARK_SWITCHES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FORCEDARK_FORCEDARK_SWITCHES_H_ - -namespace blink { - -// Specifies algorithm for modifying how colors are rendered in Force Dark. -enum class ForceDarkInversionMethod { - // Use the value provided via command line with --blink_settings or, if that - // flag is absent, get the value from the defaults in - // renderer/core/frame/settings.json5. - kUseBlinkSettings, - - // Modify colors by converting them to the HSL color space and inverting the - // lightness (i.e. the "L" in HSL). - kHslBased, - - // Modify colors by converting them to CIE L*a*b color space and inverting the - // L value. - kCielabBased, - - // Modify colors by subtracting each of r, g, and b from their maximum value. - kRgbBased -}; - -// Specifies algorithm for determining which images to invert in Force Dark. -enum class ForceDarkImageBehavior { - // Same as ForceDarkInversionMethod::kUseBlinkSettings above. - kUseBlinkSettings, - - // Do not invert any images. - kInvertNone, - - // Invert only some images. Images that act as icons or text should be - // inverted, but photos, avatars, etc. should not be. - kInvertSelectively -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FORCEDARK_FORCEDARK_SWITCHES_H_
diff --git a/chromium/src/third_party/blink/public/common/frame/OWNERS b/chromium/src/third_party/blink/public/common/frame/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/frame/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/frame/frame_policy.h b/chromium/src/third_party/blink/public/common/frame/frame_policy.h deleted file mode 100644 index 724af48..0000000 --- a/chromium/src/third_party/blink/public/common/frame/frame_policy.h +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_POLICY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_POLICY_H_ - -#include "services/network/public/mojom/web_sandbox_flags.mojom-shared.h" -#include "third_party/blink/public/common/feature_policy/document_policy_features.h" -#include "third_party/blink/public/common/feature_policy/feature_policy.h" - -namespace blink { - -// This structure contains the attributes of a frame which determine what -// features are available during the lifetime of the framed document. Currently, -// this includes the sandbox flags, the feature policy container policy, and -// document policy required policy. Used in the frame tree to track sandbox, -// feature policy and document policy in the browser process, and transferred -// over IPC during frame replication when site isolation is enabled. -// -// Unlike the attributes in FrameOwnerProperties, these attributes are never -// updated after the framed document has been loaded, so two versions of this -// structure are kept in the frame tree for each frame -- the effective policy -// and the pending policy, which will take effect when the frame is next -// navigated. -struct BLINK_COMMON_EXPORT FramePolicy { - FramePolicy(); - FramePolicy(network::mojom::WebSandboxFlags sandbox_flags, - const ParsedFeaturePolicy& container_policy, - const DocumentPolicyFeatureState& required_document_policy, - bool disallow_document_access = false); - FramePolicy(const FramePolicy& lhs); - ~FramePolicy(); - - network::mojom::WebSandboxFlags sandbox_flags; - ParsedFeaturePolicy container_policy; - // |required_document_policy| is the combination of the following: - // - iframe 'policy' attribute - // - 'Require-Document-Policy' http header - // - |required_document_policy| of parent frame - DocumentPolicyFeatureState required_document_policy; - - // Whether or not a frame allows direct script access across frame - // boundaries. - bool disallow_document_access = false; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_POLICY_H_
diff --git a/chromium/src/third_party/blink/public/common/frame/frame_visual_properties_mojom_traits.h b/chromium/src/third_party/blink/public/common/frame/frame_visual_properties_mojom_traits.h deleted file mode 100644 index 815a7d9..0000000 --- a/chromium/src/third_party/blink/public/common/frame/frame_visual_properties_mojom_traits.h +++ /dev/null
@@ -1,97 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_VISUAL_PROPERTIES_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_VISUAL_PROPERTIES_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/frame/frame_visual_properties.h" -#include "third_party/blink/public/mojom/frame/frame_visual_properties.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::FrameVisualPropertiesDataView, - blink::FrameVisualProperties> { - static const blink::ScreenInfo& screen_info( - const blink::FrameVisualProperties& r) { - return r.screen_info; - } - - static bool auto_resize_enabled(const blink::FrameVisualProperties& r) { - return r.auto_resize_enabled; - } - - static bool is_pinch_gesture_active(const blink::FrameVisualProperties& r) { - return r.is_pinch_gesture_active; - } - - static uint32_t capture_sequence_number( - const blink::FrameVisualProperties& r) { - return r.capture_sequence_number; - } - - static double zoom_level(const blink::FrameVisualProperties& r) { - return r.zoom_level; - } - - static double page_scale_factor(const blink::FrameVisualProperties& r) { - DCHECK_GT(r.page_scale_factor, 0); - return r.page_scale_factor; - } - - static double compositing_scale_factor( - const blink::FrameVisualProperties& r) { - DCHECK_GT(r.compositing_scale_factor, 0); - return r.compositing_scale_factor; - } - - static const gfx::Size& visible_viewport_size( - const blink::FrameVisualProperties& r) { - return r.visible_viewport_size; - } - - static const gfx::Size& min_size_for_auto_resize( - const blink::FrameVisualProperties& r) { - return r.min_size_for_auto_resize; - } - - static const gfx::Size& max_size_for_auto_resize( - const blink::FrameVisualProperties& r) { - return r.max_size_for_auto_resize; - } - - static const std::vector<gfx::Rect>& root_widget_window_segments( - const blink::FrameVisualProperties& r) { - return r.root_widget_window_segments; - } - - static const gfx::Rect& compositor_viewport( - const blink::FrameVisualProperties& r) { - return r.compositor_viewport; - } - - static const gfx::Rect& screen_space_rect( - const blink::FrameVisualProperties& r) { - return r.screen_space_rect; - } - - static const gfx::Size& local_frame_size( - const blink::FrameVisualProperties& r) { - return r.local_frame_size; - } - - static base::Optional<viz::LocalSurfaceId> local_surface_id( - const blink::FrameVisualProperties& r) { - return r.local_surface_id; - } - - static bool Read(blink::mojom::FrameVisualPropertiesDataView r, - blink::FrameVisualProperties* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_FRAME_VISUAL_PROPERTIES_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/frame/sandbox_flags.h b/chromium/src/third_party/blink/public/common/frame/sandbox_flags.h deleted file mode 100644 index ddd105e..0000000 --- a/chromium/src/third_party/blink/public/common/frame/sandbox_flags.h +++ /dev/null
@@ -1,37 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_SANDBOX_FLAGS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_SANDBOX_FLAGS_H_ - -#include <bitset> -#include "third_party/blink/public/mojom/feature_policy/feature_policy.mojom-shared.h" - -namespace blink { -namespace mojom { - -inline constexpr WebSandboxFlags operator&(WebSandboxFlags a, - WebSandboxFlags b) { - return static_cast<WebSandboxFlags>(static_cast<int>(a) & - static_cast<int>(b)); -} - -inline constexpr WebSandboxFlags operator|(WebSandboxFlags a, - WebSandboxFlags b) { - return static_cast<WebSandboxFlags>(static_cast<int>(a) | - static_cast<int>(b)); -} - -inline WebSandboxFlags& operator|=(WebSandboxFlags& a, WebSandboxFlags b) { - return a = a | b; -} - -inline constexpr WebSandboxFlags operator~(WebSandboxFlags flags) { - return static_cast<WebSandboxFlags>(~static_cast<int>(flags)); -} - -} // namespace mojom -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_FRAME_SANDBOX_FLAGS_H_
diff --git a/chromium/src/third_party/blink/public/common/indexeddb/OWNERS b/chromium/src/third_party/blink/public/common/indexeddb/OWNERS deleted file mode 100644 index 01bf15f..0000000 --- a/chromium/src/third_party/blink/public/common/indexeddb/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/indexed_db/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/indexeddb/indexed_db_default_mojom_traits.h b/chromium/src/third_party/blink/public/common/indexeddb/indexed_db_default_mojom_traits.h deleted file mode 100644 index 8101faf..0000000 --- a/chromium/src/third_party/blink/public/common/indexeddb/indexed_db_default_mojom_traits.h +++ /dev/null
@@ -1,176 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXED_DB_DEFAULT_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXED_DB_DEFAULT_MOJOM_TRAITS_H_ - -#include "base/containers/span.h" -#include "mojo/public/cpp/bindings/array_traits_span.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_key.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_key_range.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_metadata.h" -#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-forward.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::IDBDatabaseMetadataDataView, - blink::IndexedDBDatabaseMetadata> { - static int64_t id(const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.id; - } - static const base::string16& name( - const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.name; - } - static int64_t version(const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.version; - } - static int64_t max_object_store_id( - const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.max_object_store_id; - } - static std::map<int64_t, blink::IndexedDBObjectStoreMetadata> object_stores( - const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.object_stores; - } - static bool was_cold_open(const blink::IndexedDBDatabaseMetadata& metadata) { - return metadata.was_cold_open; - } - static bool Read(blink::mojom::IDBDatabaseMetadataDataView data, - blink::IndexedDBDatabaseMetadata* out); -}; - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::IDBIndexKeysDataView, - blink::IndexedDBIndexKeys> { - static int64_t index_id(const blink::IndexedDBIndexKeys& index_keys) { - return index_keys.id; - } - static const std::vector<blink::IndexedDBKey>& index_keys( - const blink::IndexedDBIndexKeys& index_keys) { - return index_keys.keys; - } - static bool Read(blink::mojom::IDBIndexKeysDataView data, - blink::IndexedDBIndexKeys* out); -}; - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::IDBIndexMetadataDataView, - blink::IndexedDBIndexMetadata> { - static int64_t id(const blink::IndexedDBIndexMetadata& metadata) { - return metadata.id; - } - static const base::string16& name( - const blink::IndexedDBIndexMetadata& metadata) { - return metadata.name; - } - static const blink::IndexedDBKeyPath& key_path( - const blink::IndexedDBIndexMetadata& metadata) { - return metadata.key_path; - } - static bool unique(const blink::IndexedDBIndexMetadata& metadata) { - return metadata.unique; - } - static bool multi_entry(const blink::IndexedDBIndexMetadata& metadata) { - return metadata.multi_entry; - } - static bool Read(blink::mojom::IDBIndexMetadataDataView data, - blink::IndexedDBIndexMetadata* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey> { - static blink::mojom::IDBKeyDataView::Tag GetTag( - const blink::IndexedDBKey& key); - static bool Read(blink::mojom::IDBKeyDataView data, blink::IndexedDBKey* out); - static const std::vector<blink::IndexedDBKey>& key_array( - const blink::IndexedDBKey& key) { - return key.array(); - } - static base::span<const uint8_t> binary(const blink::IndexedDBKey& key) { - return base::make_span( - reinterpret_cast<const uint8_t*>(key.binary().data()), - key.binary().size()); - } - static const base::string16& string(const blink::IndexedDBKey& key) { - return key.string(); - } - static double date(const blink::IndexedDBKey& key) { return key.date(); } - static double number(const blink::IndexedDBKey& key) { return key.number(); } - static bool other_invalid(const blink::IndexedDBKey& key) { - return key.type() == blink::mojom::IDBKeyType::Invalid; - } - static bool other_none(const blink::IndexedDBKey& key) { - return key.type() == blink::mojom::IDBKeyType::None; - } -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::IDBKeyPathDataView, blink::IndexedDBKeyPath> { - static blink::mojom::IDBKeyPathDataPtr data( - const blink::IndexedDBKeyPath& key_path); - static bool Read(blink::mojom::IDBKeyPathDataView data, - blink::IndexedDBKeyPath* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::IDBKeyRangeDataView, blink::IndexedDBKeyRange> { - static const blink::IndexedDBKey& lower( - const blink::IndexedDBKeyRange& key_range) { - return key_range.lower(); - } - static const blink::IndexedDBKey& upper( - const blink::IndexedDBKeyRange& key_range) { - return key_range.upper(); - } - static bool lower_open(const blink::IndexedDBKeyRange& key_range) { - return key_range.lower_open(); - } - static bool upper_open(const blink::IndexedDBKeyRange& key_range) { - return key_range.upper_open(); - } - static bool Read(blink::mojom::IDBKeyRangeDataView data, - blink::IndexedDBKeyRange* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::IDBObjectStoreMetadataDataView, - blink::IndexedDBObjectStoreMetadata> { - static int64_t id(const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.id; - } - static const base::string16& name( - const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.name; - } - static const blink::IndexedDBKeyPath& key_path( - const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.key_path; - } - static bool auto_increment( - const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.auto_increment; - } - static int64_t max_index_id( - const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.max_index_id; - } - static std::map<int64_t, blink::IndexedDBIndexMetadata> indexes( - const blink::IndexedDBObjectStoreMetadata& metadata) { - return metadata.indexes; - } - static bool Read(blink::mojom::IDBObjectStoreMetadataDataView data, - blink::IndexedDBObjectStoreMetadata* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXED_DB_DEFAULT_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key.h b/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key.h deleted file mode 100644 index c3ca520..0000000 --- a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key.h +++ /dev/null
@@ -1,100 +0,0 @@ -// Copyright (c) 2012 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_H_ - -#include <stddef.h> - -#include <string> -#include <vector> - -#include "base/check_op.h" -#include "base/strings/string16.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/indexeddb/web_idb_types.h" - -namespace blink { - -class BLINK_COMMON_EXPORT IndexedDBKey { - public: - typedef std::vector<IndexedDBKey> KeyArray; - - // Non-standard limits, selected to avoid breaking real-world use of the API - // while also preventing buggy (or malicious) code from causing crashes. - static constexpr size_t kMaximumDepth = 2000; - static constexpr size_t kMaximumArraySize = 1000000; - - IndexedDBKey(); // Defaults to mojom::IDBKeyType::Invalid. - explicit IndexedDBKey(mojom::IDBKeyType); // must be Null or Invalid - explicit IndexedDBKey(KeyArray array); - explicit IndexedDBKey(std::string binary); - explicit IndexedDBKey(base::string16 string); - IndexedDBKey(double number, - mojom::IDBKeyType type); // must be date or number - IndexedDBKey(const IndexedDBKey& other); - ~IndexedDBKey(); - IndexedDBKey& operator=(const IndexedDBKey& other); - - bool IsValid() const; - - bool IsLessThan(const IndexedDBKey& other) const; - bool Equals(const IndexedDBKey& other) const; - - mojom::IDBKeyType type() const { return type_; } - const std::vector<IndexedDBKey>& array() const { - DCHECK_EQ(type_, mojom::IDBKeyType::Array); - return array_; - } - const std::string& binary() const { - DCHECK_EQ(type_, mojom::IDBKeyType::Binary); - return binary_; - } - const base::string16& string() const { - DCHECK_EQ(type_, mojom::IDBKeyType::String); - return string_; - } - double date() const { - DCHECK_EQ(type_, mojom::IDBKeyType::Date); - return number_; - } - double number() const { - DCHECK_EQ(type_, mojom::IDBKeyType::Number); - return number_; - } - - size_t size_estimate() const { return size_estimate_; } - - // Tests if this array-type key has "holes". Used in cases where a compound - // key references an auto-generated primary key. - bool HasHoles() const; - - // Returns a copy of this array-type key, but with "holes" replaced by the - // given primary key. Used in cases where a compound key references an - // auto-generated primary key. - IndexedDBKey FillHoles(const IndexedDBKey&) const WARN_UNUSED_RESULT; - - std::string DebugString() const; - - private: - int CompareTo(const IndexedDBKey& other) const; - - mojom::IDBKeyType type_; - std::vector<IndexedDBKey> array_; - std::string binary_; - base::string16 string_; - double number_ = 0; - - size_t size_estimate_; -}; - -// An index id, and corresponding set of keys to insert. -struct IndexedDBIndexKeys { - int64_t id; - std::vector<IndexedDBKey> keys; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_H_
diff --git a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key_path.h b/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key_path.h deleted file mode 100644 index 973c4c4..0000000 --- a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_key_path.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright (c) 2012 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_PATH_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_PATH_H_ - -#include <string> -#include <vector> - -#include "base/strings/string16.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/indexeddb/web_idb_types.h" -#include "third_party/blink/public/mojom/indexeddb/indexeddb.mojom-shared.h" - -namespace blink { - -class BLINK_COMMON_EXPORT IndexedDBKeyPath { - public: - IndexedDBKeyPath(); // Defaults to blink::WebIDBKeyPathTypeNull. - explicit IndexedDBKeyPath(const base::string16&); - explicit IndexedDBKeyPath(const std::vector<base::string16>&); - IndexedDBKeyPath(const IndexedDBKeyPath& other); - IndexedDBKeyPath(IndexedDBKeyPath&& other); - ~IndexedDBKeyPath(); - IndexedDBKeyPath& operator=(const IndexedDBKeyPath& other); - IndexedDBKeyPath& operator=(IndexedDBKeyPath&& other); - - bool IsNull() const { return type_ == blink::mojom::IDBKeyPathType::Null; } - bool operator==(const IndexedDBKeyPath& other) const; - - mojom::IDBKeyPathType type() const { return type_; } - const std::vector<base::string16>& array() const; - const base::string16& string() const; - - private: - mojom::IDBKeyPathType type_; - base::string16 string_; - std::vector<base::string16> array_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_KEY_PATH_H_
diff --git a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_metadata.h b/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_metadata.h deleted file mode 100644 index 7bb37c9..0000000 --- a/chromium/src/third_party/blink/public/common/indexeddb/indexeddb_metadata.h +++ /dev/null
@@ -1,97 +0,0 @@ -// Copyright (c) 2013 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_METADATA_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_METADATA_H_ - -#include <stdint.h> - -#include <map> -#include <string> - -#include "base/strings/string16.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/indexeddb/indexeddb_key_path.h" - -namespace blink { - -struct BLINK_COMMON_EXPORT IndexedDBIndexMetadata { - static const int64_t kInvalidId = -1; - - IndexedDBIndexMetadata(); - IndexedDBIndexMetadata(const base::string16& name, - int64_t id, - const blink::IndexedDBKeyPath& key_path, - bool unique, - bool multi_entry); - IndexedDBIndexMetadata(const IndexedDBIndexMetadata& other); - IndexedDBIndexMetadata(IndexedDBIndexMetadata&& other); - ~IndexedDBIndexMetadata(); - IndexedDBIndexMetadata& operator=(const IndexedDBIndexMetadata& other); - IndexedDBIndexMetadata& operator=(IndexedDBIndexMetadata&& other); - bool operator==(const IndexedDBIndexMetadata& other) const; - - base::string16 name; - int64_t id; - blink::IndexedDBKeyPath key_path; - bool unique; - bool multi_entry; -}; - -struct BLINK_COMMON_EXPORT IndexedDBObjectStoreMetadata { - static const int64_t kInvalidId = -1; - static const int64_t kMinimumIndexId = 30; - - IndexedDBObjectStoreMetadata(); - IndexedDBObjectStoreMetadata(const base::string16& name, - int64_t id, - const blink::IndexedDBKeyPath& key_path, - bool auto_increment, - int64_t max_index_id); - IndexedDBObjectStoreMetadata(const IndexedDBObjectStoreMetadata& other); - IndexedDBObjectStoreMetadata(IndexedDBObjectStoreMetadata&& other); - ~IndexedDBObjectStoreMetadata(); - IndexedDBObjectStoreMetadata& operator=( - const IndexedDBObjectStoreMetadata& other); - IndexedDBObjectStoreMetadata& operator=(IndexedDBObjectStoreMetadata&& other); - bool operator==(const IndexedDBObjectStoreMetadata& other) const; - - base::string16 name; - int64_t id; - blink::IndexedDBKeyPath key_path; - bool auto_increment; - int64_t max_index_id; - - std::map<int64_t, IndexedDBIndexMetadata> indexes; -}; - -struct BLINK_COMMON_EXPORT IndexedDBDatabaseMetadata { - // TODO(jsbell): These can probably be collapsed into 0. - enum { NO_VERSION = -1, DEFAULT_VERSION = 0 }; - - IndexedDBDatabaseMetadata(); - IndexedDBDatabaseMetadata(const base::string16& name, - int64_t id, - int64_t version, - int64_t max_object_store_id); - IndexedDBDatabaseMetadata(const IndexedDBDatabaseMetadata& other); - IndexedDBDatabaseMetadata(IndexedDBDatabaseMetadata&& other); - ~IndexedDBDatabaseMetadata(); - IndexedDBDatabaseMetadata& operator=(const IndexedDBDatabaseMetadata& other); - IndexedDBDatabaseMetadata& operator=(IndexedDBDatabaseMetadata&& other); - bool operator==(const IndexedDBDatabaseMetadata& other) const; - - base::string16 name; - int64_t id; - int64_t version; - int64_t max_object_store_id; - - std::map<int64_t, IndexedDBObjectStoreMetadata> object_stores; - - bool was_cold_open; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INDEXEDDB_INDEXEDDB_METADATA_H_
diff --git a/chromium/src/third_party/blink/public/common/input/OWNERS b/chromium/src/third_party/blink/public/common/input/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/input/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/input/synthetic_web_input_event_builders.h b/chromium/src/third_party/blink/public/common/input/synthetic_web_input_event_builders.h deleted file mode 100644 index 27201ad..0000000 --- a/chromium/src/third_party/blink/public/common/input/synthetic_web_input_event_builders.h +++ /dev/null
@@ -1,116 +0,0 @@ -// Copyright 2013 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_ - -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/input/web_gesture_event.h" -#include "third_party/blink/public/common/input/web_input_event.h" -#include "third_party/blink/public/common/input/web_keyboard_event.h" -#include "third_party/blink/public/common/input/web_mouse_wheel_event.h" -#include "third_party/blink/public/common/input/web_touch_event.h" -#include "ui/events/types/scroll_types.h" - -// Provides sensible creation of default WebInputEvents for testing purposes. - -namespace blink { - -class BLINK_COMMON_EXPORT SyntheticWebMouseEventBuilder { - public: - static blink::WebMouseEvent Build(blink::WebInputEvent::Type type); - static blink::WebMouseEvent Build( - blink::WebInputEvent::Type type, - float window_x, - float window_y, - int modifiers, - blink::WebPointerProperties::PointerType pointer_type = - blink::WebPointerProperties::PointerType::kMouse); -}; - -class BLINK_COMMON_EXPORT SyntheticWebMouseWheelEventBuilder { - public: - static blink::WebMouseWheelEvent Build( - blink::WebMouseWheelEvent::Phase phase); - static blink::WebMouseWheelEvent Build(float x, - float y, - float dx, - float dy, - int modifiers, - ui::ScrollGranularity delta_units); - static blink::WebMouseWheelEvent Build(float x, - float y, - float global_x, - float global_y, - float dx, - float dy, - int modifiers, - ui::ScrollGranularity delta_units); -}; - -class BLINK_COMMON_EXPORT SyntheticWebGestureEventBuilder { - public: - static blink::WebGestureEvent Build(blink::WebInputEvent::Type type, - blink::WebGestureDevice source_device, - int modifiers = 0); - static blink::WebGestureEvent BuildScrollBegin( - float dx_hint, - float dy_hint, - blink::WebGestureDevice source_device, - int pointer_count = 1); - static blink::WebGestureEvent BuildScrollUpdate( - float dx, - float dy, - int modifiers, - blink::WebGestureDevice source_device); - static blink::WebGestureEvent BuildPinchUpdate( - float scale, - float anchor_x, - float anchor_y, - int modifiers, - blink::WebGestureDevice source_device); - static blink::WebGestureEvent BuildFling( - float velocity_x, - float velocity_y, - blink::WebGestureDevice source_device); -}; - -class BLINK_COMMON_EXPORT SyntheticWebTouchEvent : public blink::WebTouchEvent { - public: - SyntheticWebTouchEvent(); - - // Mark all the points as stationary, and remove any released points. - void ResetPoints(); - - // Adds an additional point to the touch list, returning the point's index. - int PressPoint(float x, - float y, - float radius_x = 20.f, - float radius_y = 20.f, - float rotation_angle = 0.f, - float force = 1.f); - void MovePoint(int index, - float x, - float y, - float radius_x = 20.f, - float radius_y = 20.f, - float rotation_angle = 0.f, - float force = 1.f); - void ReleasePoint(int index); - void CancelPoint(int index); - - void SetTimestamp(base::TimeTicks timestamp); - - int FirstFreeIndex(); - - private: - // A pointer id of each touch pointer. Every time when a pointer is pressed - // the screen, it will be assigned to a new pointer id. - unsigned pointer_id_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_SYNTHETIC_WEB_INPUT_EVENT_BUILDERS_H_
diff --git a/chromium/src/third_party/blink/public/common/input/web_coalesced_input_event.h b/chromium/src/third_party/blink/public/common/input/web_coalesced_input_event.h deleted file mode 100644 index f169511..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_coalesced_input_event.h +++ /dev/null
@@ -1,67 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_COALESCED_INPUT_EVENT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_COALESCED_INPUT_EVENT_H_ - -#include <memory> -#include <vector> - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/input/web_input_event.h" -#include "third_party/blink/public/common/input/web_pointer_event.h" -#include "ui/latency/latency_info.h" - -namespace blink { - -// This class represents a polymorphic WebInputEvent structure with its -// coalesced events. The event could be any event defined in web_input_event.h, -// including those that cannot be coalesced. -class BLINK_COMMON_EXPORT WebCoalescedInputEvent { - public: - WebCoalescedInputEvent(const WebInputEvent&, const ui::LatencyInfo&); - WebCoalescedInputEvent(std::unique_ptr<WebInputEvent>, - const ui::LatencyInfo&); - WebCoalescedInputEvent(std::unique_ptr<WebInputEvent>, - std::vector<std::unique_ptr<WebInputEvent>>, - std::vector<std::unique_ptr<WebInputEvent>>, - const ui::LatencyInfo&); - // Copy constructor to deep copy the event. - WebCoalescedInputEvent(const WebCoalescedInputEvent&); - ~WebCoalescedInputEvent(); - - WebInputEvent* EventPointer(); - void AddCoalescedEvent(const blink::WebInputEvent&); - const WebInputEvent& Event() const; - size_t CoalescedEventSize() const; - const WebInputEvent& CoalescedEvent(size_t index) const; - const std::vector<std::unique_ptr<WebInputEvent>>& - GetCoalescedEventsPointers() const; - - void AddPredictedEvent(const blink::WebInputEvent&); - size_t PredictedEventSize() const; - const WebInputEvent& PredictedEvent(size_t index) const; - const std::vector<std::unique_ptr<WebInputEvent>>& - GetPredictedEventsPointers() const; - - const ui::LatencyInfo& latency_info() const { return latency_; } - ui::LatencyInfo& latency_info() { return latency_; } - - bool CanCoalesceWith(const WebCoalescedInputEvent& other) const - WARN_UNUSED_RESULT; - - // Coalesce with the |newer_event|. This object will be updated to take into - // account |newer_event|'s fields. - void CoalesceWith(const WebCoalescedInputEvent& newer_event); - - private: - std::unique_ptr<WebInputEvent> event_; - std::vector<std::unique_ptr<WebInputEvent>> coalesced_events_; - std::vector<std::unique_ptr<WebInputEvent>> predicted_events_; - ui::LatencyInfo latency_; -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/input/web_gesture_event.h b/chromium/src/third_party/blink/public/common/input/web_gesture_event.h deleted file mode 100644 index a4fcd34..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_gesture_event.h +++ /dev/null
@@ -1,361 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_GESTURE_EVENT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_GESTURE_EVENT_H_ - -#include <memory> - -#include "base/check.h" -#include "base/notreached.h" -#include "cc/paint/element_id.h" -#include "third_party/blink/public/common/input/web_gesture_device.h" -#include "third_party/blink/public/common/input/web_input_event.h" -#include "third_party/blink/public/common/input/web_pointer_properties.h" -#include "third_party/blink/public/mojom/input/gesture_event.mojom-shared.h" -#include "ui/events/types/scroll_types.h" -#include "ui/gfx/geometry/point_f.h" -#include "ui/gfx/geometry/size_f.h" - -namespace blink { - -// WebGestureEvent --------------------------------------------------------- - -class BLINK_COMMON_EXPORT WebGestureEvent : public WebInputEvent { - public: - using InertialPhaseState = mojom::InertialPhaseState; - - bool is_source_touch_event_set_blocking = false; - - // The pointer type for the first touch point in the gesture. - WebPointerProperties::PointerType primary_pointer_type = - WebPointerProperties::PointerType::kUnknown; - - // If the WebGestureEvent has source_device == - // mojom::GestureDevice::kTouchscreen, this field contains the unique - // identifier for the touch event that released this event at - // TouchDispositionGestureFilter. If the WebGestureEvents was not released - // through a touch event (e.g. timer-released gesture events or gesture events - // with source_device != mojom::GestureDevice::kTouchscreen), the field - // contains 0. See crbug.com/618738. - uint32_t unique_touch_event_id = 0; - - union { - // Tap information must be set for GestureTap, GestureTapUnconfirmed, - // and GestureDoubleTap events. - struct { - int tap_count; - float width; - float height; - // |needs_wheel_event| for touchpad GestureDoubleTap has the same - // semantics as |needs_wheel_event| for touchpad pinch described below. - bool needs_wheel_event; - } tap; - - struct { - float width; - float height; - } tap_down; - - struct { - float width; - float height; - } show_press; - - // This is used for both GestureLongPress and GestureLongTap. - struct { - float width; - float height; - } long_press; - - struct { - float first_finger_width; - float first_finger_height; - } two_finger_tap; - - struct { - // If set, used to target a scrollable area directly instead of performing - // a hit-test. Should be used for gestures queued up internally within - // the renderer process. This is an ElementIdType instead of ElementId - // due to the fact that ElementId has a non-trivial constructor that - // can't easily participate in this union of structs. Note that while - // this is used in scroll unification to perform a main thread hit test, - // in which case |main_thread_hit_tested| is true, it is also used in - // other cases like scroll events reinjected for scrollbar scrolling. - cc::ElementIdType scrollable_area_element_id; - // Initial motion that triggered the scroll. - float delta_x_hint; - float delta_y_hint; - // number of pointers down. - int pointer_count; - // Default initialized to kScrollByPrecisePixel. - ui::ScrollGranularity delta_hint_units; - // The state of inertial phase scrolling. OSX has unique phases for normal - // and momentum scroll events. Should always be kUnknownMomentumPhase for - // touch based input as it generates GestureFlingStart instead. - InertialPhaseState inertial_phase; - // If true, this event will skip hit testing to find a scroll - // target and instead just scroll the viewport. - bool target_viewport; - // True if this event is generated from a wheel event with synthetic - // phase. - bool synthetic; - // If true, this event has been hit tested by the main thread and the - // result is stored in scrollable_area_element_id. Used only in scroll - // unification when the event is sent back the the compositor for a - // second time after the main thread hit test is complete. - bool main_thread_hit_tested; - // If true, this event will be used for cursor control instead of - // scrolling. the entire scroll sequence will be used for cursor control. - bool cursor_control; - } scroll_begin; - - struct { - float delta_x; - float delta_y; - float velocity_x; - float velocity_y; - InertialPhaseState inertial_phase; - // Default initialized to kScrollByPrecisePixel. - ui::ScrollGranularity delta_units; - } scroll_update; - - struct { - // The original delta units the ScrollBegin and ScrollUpdates - // were sent as. - ui::ScrollGranularity delta_units; - // The state of inertial phase scrolling. OSX has unique phases for normal - // and momentum scroll events. Should always be kUnknownMomentumPhase for - // touch based input as it generates GestureFlingStart instead. - InertialPhaseState inertial_phase; - // True if this event is generated from a wheel event with synthetic - // phase. - bool synthetic; - // True if this event is generated by the fling controller. The GSE - // generated at the end of a fling should not get pushed to the - // debouncing_deferral_queue_. This attribute is not mojofied and will not - // get transferred across since it is only used on the browser. - bool generated_by_fling_controller; - } scroll_end; - - struct { - float velocity_x; - float velocity_y; - // If true, this event will skip hit testing to find a scroll - // target and instead just scroll the viewport. - bool target_viewport; - } fling_start; - - struct { - bool target_viewport; - // If set to true, don't treat fling_cancel - // as a part of fling boost events sequence. - bool prevent_boosting; - } fling_cancel; - - // Note that for the pinch event types, |needs_wheel_event| and - // |zoom_disabled| are browser side implementation details for touchpad - // pinch zoom. From the renderer's perspective, both are always false. - // TODO(mcnee): Remove these implementation details once the browser has its - // own representation of a touchpad pinch event. See - // https://crbug.com/563730 - struct { - // |needs_wheel_event| is used to indicate the phase of handling a - // touchpad pinch. When the event is created it is set to true, so that - // the InputRouter knows to offer the event to the renderer as a wheel - // event. Once the wheel event is acknowledged, |needs_wheel_event| is set - // to false and the event is resent. When the InputRouter receives it the - // second time, it knows to send the real gesture event to the renderer. - bool needs_wheel_event; - // If true, this event will not cause a change in page scale, but will - // still be offered as a wheel event to any handlers. - bool zoom_disabled; - float scale; - } pinch_update; - - struct { - bool needs_wheel_event; - } pinch_begin; - - struct { - bool needs_wheel_event; - } pinch_end; - } data; - - private: - // Widget coordinate, which is relative to the bound of current RenderWidget - // (e.g. a plugin or OOPIF inside a RenderView). Similar to viewport - // coordinates but without DevTools emulation transform or overscroll applied. - gfx::PointF position_in_widget_; - - // Screen coordinate - gfx::PointF position_in_screen_; - - mojom::GestureDevice source_device_ = mojom::GestureDevice::kUninitialized; - - public: - WebGestureEvent( - Type type, - int modifiers, - base::TimeTicks time_stamp, - mojom::GestureDevice device = mojom::GestureDevice::kUninitialized) - : WebInputEvent(type, modifiers, time_stamp), source_device_(device) { - memset(&data, 0, sizeof(data)); - } - - WebGestureEvent() { memset(&data, 0, sizeof(data)); } - - const gfx::PointF& PositionInWidget() const { return position_in_widget_; } - const gfx::PointF& PositionInScreen() const { return position_in_screen_; } - - std::unique_ptr<WebInputEvent> Clone() const override; - bool CanCoalesce(const WebInputEvent& event) const override; - void Coalesce(const WebInputEvent& event) override; - base::Optional<ui::ScrollInputType> GetScrollInputType() const override; - - void SetPositionInWidget(const gfx::PointF& point) { - position_in_widget_ = point; - } - - void SetPositionInScreen(const gfx::PointF& point) { - position_in_screen_ = point; - } - - mojom::GestureDevice SourceDevice() const { return source_device_; } - void SetSourceDevice(mojom::GestureDevice device) { source_device_ = device; } - - float DeltaXInRootFrame() const; - float DeltaYInRootFrame() const; - ui::ScrollGranularity DeltaUnits() const; - gfx::PointF PositionInRootFrame() const; - InertialPhaseState InertialPhase() const; - bool Synthetic() const; - - float VelocityX() const; - float VelocityY() const; - - gfx::SizeF TapAreaInRootFrame() const; - int TapCount() const; - - void ApplyTouchAdjustment(const gfx::PointF& root_frame_coords); - - // Sets any scaled values to be their computed values and sets |frame_scale_| - // back to 1 and |frame_translate_| X and Y coordinates back to 0. - void FlattenTransform(); - - bool IsScrollEvent() const { - switch (type_) { - case Type::kGestureScrollBegin: - case Type::kGestureScrollEnd: - case Type::kGestureScrollUpdate: - case Type::kGestureFlingStart: - case Type::kGestureFlingCancel: - case Type::kGesturePinchBegin: - case Type::kGesturePinchEnd: - case Type::kGesturePinchUpdate: - return true; - case Type::kGestureTap: - case Type::kGestureTapUnconfirmed: - case Type::kGestureTapDown: - case Type::kGestureShowPress: - case Type::kGestureTapCancel: - case Type::kGestureTwoFingerTap: - case Type::kGestureLongPress: - case Type::kGestureLongTap: - return false; - default: - NOTREACHED(); - return false; - } - } - - bool IsTargetViewport() const { - switch (type_) { - case Type::kGestureScrollBegin: - return data.scroll_begin.target_viewport; - case Type::kGestureFlingStart: - return data.fling_start.target_viewport; - case Type::kGestureFlingCancel: - return data.fling_cancel.target_viewport; - default: - return false; - } - } - - bool IsTouchpadZoomEvent() const { - // Touchpad GestureDoubleTap also causes a page scale change like a touchpad - // pinch gesture. - return source_device_ == mojom::GestureDevice::kTouchpad && - (WebInputEvent::IsPinchGestureEventType(type_) || - type_ == Type::kGestureDoubleTap); - } - - bool NeedsWheelEvent() const { - DCHECK(IsTouchpadZoomEvent()); - switch (type_) { - case Type::kGesturePinchBegin: - return data.pinch_begin.needs_wheel_event; - case Type::kGesturePinchUpdate: - return data.pinch_update.needs_wheel_event; - case Type::kGesturePinchEnd: - return data.pinch_end.needs_wheel_event; - case Type::kGestureDoubleTap: - return data.tap.needs_wheel_event; - default: - NOTREACHED(); - return false; - } - } - - void SetNeedsWheelEvent(bool needs_wheel_event) { - DCHECK(!needs_wheel_event || IsTouchpadZoomEvent()); - switch (type_) { - case Type::kGesturePinchBegin: - data.pinch_begin.needs_wheel_event = needs_wheel_event; - break; - case Type::kGesturePinchUpdate: - data.pinch_update.needs_wheel_event = needs_wheel_event; - break; - case Type::kGesturePinchEnd: - data.pinch_end.needs_wheel_event = needs_wheel_event; - break; - case Type::kGestureDoubleTap: - data.tap.needs_wheel_event = needs_wheel_event; - break; - default: - break; - } - } - - // Coalesce the |new_event| with |last_event| and optionally - // |second_last_event|. Scroll and pinch are two separate gestures so they - // would need separate events that is why this method returns a pair. - static std::pair<std::unique_ptr<WebGestureEvent>, - std::unique_ptr<WebGestureEvent>> - CoalesceScrollAndPinch(const WebGestureEvent* second_last_event, - const WebGestureEvent& last_event, - const WebGestureEvent& new_event); - - // Whether |event_in_queue| is a touchscreen GesturePinchUpdate or - // GestureScrollUpdate and has the same modifiers/source as the new - // scroll/pinch event. Compatible touchscreen scroll and pinch event pairs - // can be logically coalesced. - static bool IsCompatibleScrollorPinch(const WebGestureEvent& new_event, - const WebGestureEvent& event_in_queue); - - // Generate a scroll gesture event (begin, update, or end), based on the - // parameters passed in. Populates the data field of the created - // WebGestureEvent based on the type. - static std::unique_ptr<blink::WebGestureEvent> GenerateInjectedScrollGesture( - WebInputEvent::Type type, - base::TimeTicks timestamp, - WebGestureDevice device, - gfx::PointF position_in_widget, - gfx::Vector2dF scroll_delta, - ui::ScrollGranularity granularity); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_GESTURE_EVENT_H_
diff --git a/chromium/src/third_party/blink/public/common/input/web_input_event.h b/chromium/src/third_party/blink/public/common/input/web_input_event.h deleted file mode 100644 index c599513..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_input_event.h +++ /dev/null
@@ -1,367 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_INPUT_EVENT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_INPUT_EVENT_H_ - -#include <string.h> - -#include <memory> - -#include "base/notreached.h" -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/input/input_event.mojom-shared.h" -#include "ui/events/types/event_type.h" -#include "ui/events/types/scroll_input_type.h" -#include "ui/gfx/geometry/point_f.h" -#include "ui/gfx/geometry/vector2d_f.h" - -namespace blink { - -// WebInputEvent -------------------------------------------------------------- - -class BLINK_COMMON_EXPORT WebInputEvent { - public: - // When we use an input method (or an input method editor), we receive - // two events for a keypress. The former event is a keydown, which - // provides a keycode, and the latter is a textinput, which provides - // a character processed by an input method. (The mapping from a - // keycode to a character code is not trivial for non-English - // keyboards.) - // To support input methods, Safari sends keydown events to WebKit for - // filtering. WebKit sends filtered keydown events back to Safari, - // which sends them to input methods. - // Unfortunately, it is hard to apply this design to Chrome because of - // our multiprocess architecture. An input method is running in a - // browser process. On the other hand, WebKit is running in a renderer - // process. So, this design results in increasing IPC messages. - // To support input methods without increasing IPC messages, Chrome - // handles keyboard events in a browser process and send asynchronous - // input events (to be translated to DOM events) to a renderer - // process. - // This design is mostly the same as the one of Windows and Mac Carbon. - // So, for what it's worth, our Linux and Mac front-ends emulate our - // Windows front-end. To emulate our Windows front-end, we can share - // our back-end code among Windows, Linux, and Mac. - // TODO(hbono): Issue 18064: remove the KeyDown type since it isn't - // used in Chrome any longer. - - using Type = blink::mojom::EventType; - - // The modifier constants cannot change their values since pepper - // does a 1-1 mapping of its values; see - // content/renderer/pepper/event_conversion.cc - // - // A Java counterpart will be generated for this enum. - // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.blink_public.web - // GENERATED_JAVA_CLASS_NAME_OVERRIDE: WebInputEventModifier - enum Modifiers { - // modifiers for all events: - kShiftKey = 1 << 0, - kControlKey = 1 << 1, - kAltKey = 1 << 2, - kMetaKey = 1 << 3, - - // modifiers for keyboard events: - kIsKeyPad = 1 << 4, - kIsAutoRepeat = 1 << 5, - - // modifiers for mouse events: - kLeftButtonDown = 1 << 6, - kMiddleButtonDown = 1 << 7, - kRightButtonDown = 1 << 8, - - // Toggle modifers for all events. - kCapsLockOn = 1 << 9, - kNumLockOn = 1 << 10, - - kIsLeft = 1 << 11, - kIsRight = 1 << 12, - - // Indicates that an event was generated on the touch screen while - // touch accessibility is enabled, so the event should be handled - // by accessibility code first before normal input event processing. - kIsTouchAccessibility = 1 << 13, - - kIsComposing = 1 << 14, - - kAltGrKey = 1 << 15, - kFnKey = 1 << 16, - kSymbolKey = 1 << 17, - - kScrollLockOn = 1 << 18, - - // Whether this is a compatibility event generated due to a - // native touch event. Mouse events generated from touch - // events will set this. - kIsCompatibilityEventForTouch = 1 << 19, - - kBackButtonDown = 1 << 20, - kForwardButtonDown = 1 << 21, - - // Represents movement as a result of content changing under the cursor, - // not actual physical movement of the pointer - kRelativeMotionEvent = 1 << 22, - - // Indication this event was injected by the devtools. - // TODO(dtapuska): Remove this flag once we are able to bind callbacks - // in event sending. - kFromDebugger = 1 << 23, - - // Indicates this event is targeting an OOPIF, and the iframe or one of its - // ancestor frames moved within its embedding page's viewport recently. - kTargetFrameMovedRecently = 1 << 24, - - // When an event is forwarded to the main thread, this modifier will tell if - // the event was already handled by the compositor thread or not. Based on - // this, the decision of whether or not the main thread should handle this - // event for the scrollbar can then be made. - kScrollbarManipulationHandledOnCompositorThread = 1 << 25, - - // The set of non-stateful modifiers that specifically change the - // interpretation of the key being pressed. For example; IsLeft, - // IsRight, IsComposing don't change the meaning of the key - // being pressed. NumLockOn, ScrollLockOn, CapsLockOn are stateful - // and don't indicate explicit depressed state. - kKeyModifiers = kSymbolKey | kFnKey | kAltGrKey | kMetaKey | kAltKey | - kControlKey | kShiftKey, - - kNoModifiers = 0, - }; - - using DispatchType = mojom::DispatchType; - - // The rail mode for a wheel event specifies the axis on which scrolling is - // expected to stick. If this axis is set to Free, then scrolling is not - // stuck to any axis. - enum RailsMode { - kRailsModeFree = 0, - kRailsModeHorizontal = 1, - kRailsModeVertical = 2, - }; - - static const int kInputModifiers = - kShiftKey | kControlKey | kAltKey | kMetaKey; - - static constexpr base::TimeTicks GetStaticTimeStampForTests() { - // Note: intentionally use a relatively large delta from base::TimeTicks == - // 0. Otherwise, code that tracks the time ticks of the last event that - // happened and computes a delta might get confused when the testing - // timestamp is near 0, as the computed delta may very well be under the - // delta threshhold. - // - // TODO(dcheng): This really shouldn't use FromInternalValue(), but - // constexpr support for time operations is a bit busted... - return base::TimeTicks::FromInternalValue(123'000'000); - } - - // Returns true if the WebInputEvent |type| is a mouse event. - static bool IsMouseEventType(WebInputEvent::Type type) { - return Type::kMouseTypeFirst <= type && type <= Type::kMouseTypeLast; - } - - // Returns true if the WebInputEvent |type| is a keyboard event. - static bool IsKeyboardEventType(WebInputEvent::Type type) { - return Type::kKeyboardTypeFirst <= type && type <= Type::kKeyboardTypeLast; - } - - // Returns true if the WebInputEvent |type| is a touch event. - static bool IsTouchEventType(WebInputEvent::Type type) { - return Type::kTouchTypeFirst <= type && type <= Type::kTouchTypeLast; - } - - // Returns true if the WebInputEvent is a gesture event. - static bool IsGestureEventType(WebInputEvent::Type type) { - return Type::kGestureTypeFirst <= type && type <= Type::kGestureTypeLast; - } - - // Returns true if the WebInputEvent |type| is a pointer event. - static bool IsPointerEventType(WebInputEvent::Type type) { - return Type::kPointerTypeFirst <= type && type <= Type::kPointerTypeLast; - } - - bool IsSameEventClass(const WebInputEvent& other) const { - if (IsMouseEventType(type_)) - return IsMouseEventType(other.type_); - if (IsGestureEventType(type_)) - return IsGestureEventType(other.type_); - if (IsTouchEventType(type_)) - return IsTouchEventType(other.type_); - if (IsKeyboardEventType(type_)) - return IsKeyboardEventType(other.type_); - if (IsPointerEventType(type_)) - return IsPointerEventType(other.type_); - return type_ == other.type_; - } - - bool IsGestureScroll() const { - switch (type_) { - case Type::kGestureScrollBegin: - case Type::kGestureScrollUpdate: - case Type::kGestureScrollEnd: - return true; - default: - return false; - } - } - - // Returns true if the WebInputEvent |type| is a pinch gesture event. - static bool IsPinchGestureEventType(WebInputEvent::Type type) { - return Type::kGesturePinchTypeFirst <= type && - type <= Type::kGesturePinchTypeLast; - } - - // Returns true if the WebInputEvent |type| is a fling gesture event. - static bool IsFlingGestureEventType(WebInputEvent::Type type) { - return Type::kGestureFlingStart <= type && - type <= Type::kGestureFlingCancel; - } - - static const char* GetName(WebInputEvent::Type type) { -#define CASE_TYPE(t) \ - case WebInputEvent::Type::k##t: \ - return #t - switch (type) { - CASE_TYPE(Undefined); - CASE_TYPE(MouseDown); - CASE_TYPE(MouseUp); - CASE_TYPE(MouseMove); - CASE_TYPE(MouseEnter); - CASE_TYPE(MouseLeave); - CASE_TYPE(ContextMenu); - CASE_TYPE(MouseWheel); - CASE_TYPE(RawKeyDown); - CASE_TYPE(KeyDown); - CASE_TYPE(KeyUp); - CASE_TYPE(Char); - CASE_TYPE(GestureScrollBegin); - CASE_TYPE(GestureScrollEnd); - CASE_TYPE(GestureScrollUpdate); - CASE_TYPE(GestureFlingStart); - CASE_TYPE(GestureFlingCancel); - CASE_TYPE(GestureShowPress); - CASE_TYPE(GestureTap); - CASE_TYPE(GestureTapUnconfirmed); - CASE_TYPE(GestureTapDown); - CASE_TYPE(GestureTapCancel); - CASE_TYPE(GestureDoubleTap); - CASE_TYPE(GestureTwoFingerTap); - CASE_TYPE(GestureLongPress); - CASE_TYPE(GestureLongTap); - CASE_TYPE(GesturePinchBegin); - CASE_TYPE(GesturePinchEnd); - CASE_TYPE(GesturePinchUpdate); - CASE_TYPE(TouchStart); - CASE_TYPE(TouchMove); - CASE_TYPE(TouchEnd); - CASE_TYPE(TouchCancel); - CASE_TYPE(TouchScrollStarted); - CASE_TYPE(PointerDown); - CASE_TYPE(PointerUp); - CASE_TYPE(PointerMove); - CASE_TYPE(PointerRawUpdate); - CASE_TYPE(PointerCancel); - CASE_TYPE(PointerCausedUaAction); - } -#undef CASE_TYPE - NOTREACHED(); - return ""; - } - - float FrameScale() const { return frame_scale_; } - void SetFrameScale(float scale) { frame_scale_ = scale; } - - gfx::Vector2dF FrameTranslate() const { return frame_translate_; } - void SetFrameTranslate(const gfx::Vector2dF& translate) { - frame_translate_ = translate; - } - - Type GetType() const { return type_; } - void SetType(Type type_param) { type_ = type_param; } - - int GetModifiers() const { return modifiers_; } - void SetModifiers(int modifiers_param) { modifiers_ = modifiers_param; } - - base::TimeTicks TimeStamp() const { return time_stamp_; } - void SetTimeStamp(base::TimeTicks time_stamp) { time_stamp_ = time_stamp; } - - void SetTargetFrameMovedRecently() { - modifiers_ |= kTargetFrameMovedRecently; - } - - void SetScrollbarManipulationHandledOnCompositorThread() { - modifiers_ |= kScrollbarManipulationHandledOnCompositorThread; - } - - virtual ~WebInputEvent() = default; - - virtual std::unique_ptr<WebInputEvent> Clone() const = 0; - - // Returns whether the current event can be merged with the provided - // |event|. - virtual bool CanCoalesce(const blink::WebInputEvent& event) const = 0; - - // Merge the current event with attributes from |event|. - virtual void Coalesce(const WebInputEvent& event) = 0; - - // Returns the scroll input type if this is a scroll event; otherwise, - // returns base::nullopt. - virtual base::Optional<ui::ScrollInputType> GetScrollInputType() const; - - // Convert this WebInputEvent::Type to a ui::EventType. Note that this is - // not a 1:1 relationship. Multiple blink types convert to the same - // ui::EventType and not all types do convert. - ui::EventType GetTypeAsUiEventType() const; - - protected: - // The root frame scale. - float frame_scale_ = 1; - - // The root frame translation (applied post scale). - gfx::Vector2dF frame_translate_; - - WebInputEvent(Type type, int modifiers, base::TimeTicks time_stamp) - : time_stamp_(time_stamp), type_(type), modifiers_(modifiers) {} - - WebInputEvent() { time_stamp_ = base::TimeTicks(); } - - static DispatchType MergeDispatchTypes(DispatchType type_1, - DispatchType type_2); - - // Event time since platform start with microsecond resolution. - base::TimeTicks time_stamp_; - Type type_ = Type::kUndefined; - int modifiers_ = kNoModifiers; -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/input/web_keyboard_event.h b/chromium/src/third_party/blink/public/common/input/web_keyboard_event.h deleted file mode 100644 index 5bd16ca..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_keyboard_event.h +++ /dev/null
@@ -1,91 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_KEYBOARD_EVENT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_KEYBOARD_EVENT_H_ - -#include "base/strings/string16.h" -#include "third_party/blink/public/common/input/web_input_event.h" - -namespace blink { - -// WebKeyboardEvent ----------------------------------------------------------- - -class BLINK_COMMON_EXPORT WebKeyboardEvent : public WebInputEvent { - public: - // Caps on string lengths so we can make them static arrays and keep - // them PODs. - static const size_t kTextLengthCap = 4; - - // |windows_key_code| is the Windows key code associated with this key - // event. Sometimes it's direct from the event (i.e. on Windows), - // sometimes it's via a mapping function. If you want a list, see - // ui/events/keycodes/keyboard_codes_* . Note that this should - // ALWAYS store the non-locational version of a keycode as this is - // what is returned by the Windows API. For example, it should - // store VK_SHIFT instead of VK_RSHIFT. The location information - // should be stored in |modifiers|. - int windows_key_code = 0; - - // The actual key code genenerated by the platform. The DOM spec runs - // on Windows-equivalent codes (thus |windows_key_code| above) but it - // doesn't hurt to have this one around. - int native_key_code = 0; - - // The DOM code enum of the key pressed as passed by the embedder. DOM code - // enums are defined in ui/events/keycodes/dom/dom_code_data.inc. - int dom_code = 0; - - // The DOM key enum of the key pressed as passed by the embedder. DOM - // key enums are defined in ui/events/keycodes/dom/dom_key_data.inc. - int dom_key = 0; - - // This identifies whether this event was tagged by the system as being a - // "system key" event (see - // https://docs.microsoft.com/en-us/windows/desktop/inputdev/wm-syskeydown for - // details). Other platforms don't have this concept, but it's just - // easier to leave it always false than ifdef. - bool is_system_key = false; - - // Whether the event forms part of a browser-handled keyboard shortcut. - // This can be used to conditionally suppress Char events after a - // shortcut-triggering RawKeyDown goes unhandled. - bool is_browser_shortcut = false; - - // |text| is the text generated by this keystroke. |unmodified_text| is - // |text|, but unmodified by an concurrently-held modifiers (except - // shift). This is useful for working out shortcut keys. Linux and - // Windows guarantee one character per event. The Mac does not, but in - // reality that's all it ever gives. We're generous, and cap it a bit - // longer. - base::char16 text[kTextLengthCap] = {}; - base::char16 unmodified_text[kTextLengthCap] = {}; - - WebKeyboardEvent(Type type, int modifiers, base::TimeTicks time_stamp) - : WebInputEvent(type, modifiers, time_stamp) {} - - WebKeyboardEvent() = default; - - std::unique_ptr<WebInputEvent> Clone() const override; - bool CanCoalesce(const WebInputEvent& event) const override; - void Coalesce(const WebInputEvent& event) override; - - // Please refer to bug http://b/issue?id=961192, which talks about Webkit - // keyboard event handling changes. It also mentions the list of keys - // which don't have associated character events. - bool IsCharacterKey() const { - // TODO(dtapuska): Determine if we can remove this method and just - // not actually generate events for these instead of filtering them out. - switch (windows_key_code) { - case 0x08: // VK_BACK - case 0x1b: // VK_ESCAPE - return false; - } - return true; - } -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_KEYBOARD_EVENT_H_
diff --git a/chromium/src/third_party/blink/public/common/input/web_menu_source_type.h b/chromium/src/third_party/blink/public/common/input/web_menu_source_type.h deleted file mode 100644 index bf82c61..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_menu_source_type.h +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_MENU_SOURCE_TYPE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_MENU_SOURCE_TYPE_H_ - -namespace blink { - -enum WebMenuSourceType { - kMenuSourceNone, - kMenuSourceMouse, - kMenuSourceKeyboard, - kMenuSourceTouch, - kMenuSourceTouchEditMenu, - kMenuSourceLongPress, - kMenuSourceLongTap, - kMenuSourceTouchHandle, - kMenuSourceStylus, - kMenuSourceAdjustSelection, - kMenuSourceAdjustSelectionReset, - kMenuSourceTypeLast = kMenuSourceAdjustSelectionReset -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/input/web_pointer_properties.h b/chromium/src/third_party/blink/public/common/input/web_pointer_properties.h deleted file mode 100644 index b276d63..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_pointer_properties.h +++ /dev/null
@@ -1,124 +0,0 @@ -// Copyright (c) 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_POINTER_PROPERTIES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_POINTER_PROPERTIES_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/input/pointer_id.h" -#include "third_party/blink/public/mojom/input/input_event.mojom-shared.h" -#include "ui/events/event_constants.h" -#include "ui/gfx/geometry/point_f.h" - -#include <limits> - -namespace blink { - -// This class encapsulates the properties that are common between mouse and -// pointer events and touch points as we transition towards the unified pointer -// event model. -// TODO(mustaq): Unify WebTouchPoint & WebMouseEvent into WebPointerEvent. -// crbug.com/508283 -class WebPointerProperties { - public: - using Button = mojom::Button; - - using PointerType = ui::EventPointerType; - - enum class Buttons : unsigned { - kNoButton = 0, - kLeft = 1 << 0, - kRight = 1 << 1, - kMiddle = 1 << 2, - kBack = 1 << 3, - kForward = 1 << 4, - kEraser = 1 << 5 - }; - - explicit WebPointerProperties( - PointerId id_param, - PointerType pointer_type_param = PointerType::kUnknown, - Button button_param = Button::kNoButton, - gfx::PointF position_in_widget = gfx::PointF(), - gfx::PointF position_in_screen = gfx::PointF(), - int movement_x = 0, - int movement_y = 0) - : id(id_param), - button(button_param), - pointer_type(pointer_type_param), - movement_x(movement_x), - movement_y(movement_y), - position_in_widget_(position_in_widget), - position_in_screen_(position_in_screen) {} - - const gfx::PointF& PositionInWidget() const { return position_in_widget_; } - const gfx::PointF& PositionInScreen() const { return position_in_screen_; } - - void SetPositionInWidget(float x, float y) { - position_in_widget_ = gfx::PointF(x, y); - } - - void SetPositionInScreen(float x, float y) { - position_in_screen_ = gfx::PointF(x, y); - } - - void SetPositionInWidget(const gfx::PointF& point) { - position_in_widget_ = point; - } - - void SetPositionInScreen(const gfx::PointF& point) { - position_in_screen_ = point; - } - - PointerId id; - - // The valid range is [0,1], with NaN meaning pressure is not supported by - // the input device. - float force = std::numeric_limits<float>::quiet_NaN(); - - // Tilt of a pen stylus from surface normal as plane angles in degrees, - // Values lie in [-90,90]. A positive tiltX is to the right and a positive - // tiltY is towards the user. - int tilt_x = 0; - int tilt_y = 0; - - // The normalized tangential pressure (or barrel pressure), typically set by - // an additional control of the stylus, which has a range of [-1,1], where 0 - // is the neutral position of the control. Always 0 if the device does not - // support it. - float tangential_pressure = 0.0f; - - // The clockwise rotation of a pen stylus around its own major axis, in - // degrees in the range [0,359]. Always 0 if the device does not support it. - int twist = 0; - - // - For pointerup/down events, the button of pointing device that triggered - // the event. - // - For other events, the button that was depressed during the move event. If - // multiple buttons were depressed, one of the depressed buttons (platform - // dependent). - Button button; - - PointerType pointer_type; - - int movement_x; - int movement_y; - - // True if this event has raw movement value from OS. - // TODO(crbug.com/982379): Figure out how to avoid using this boolean. - bool is_raw_movement_event = false; - - protected: - // Widget coordinate, which is relative to the bound of current RenderWidget - // (e.g. a plugin or OOPIF inside a RenderView). Similar to viewport - // coordinates but without DevTools emulation transform or overscroll applied. - gfx::PointF position_in_widget_; - - // Screen coordinate - gfx::PointF position_in_screen_; -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/input/web_touch_point.h b/chromium/src/third_party/blink/public/common/input/web_touch_point.h deleted file mode 100644 index 63b4f1a..0000000 --- a/chromium/src/third_party/blink/public/common/input/web_touch_point.h +++ /dev/null
@@ -1,60 +0,0 @@ -/* - * Copyright (C) 2010 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_TOUCH_POINT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_INPUT_WEB_TOUCH_POINT_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/input/web_pointer_properties.h" -#include "third_party/blink/public/mojom/input/touch_event.mojom-shared.h" - -namespace blink { - -// TODO(mustaq): Unify WebTouchPoint & WebMouseEvent into WebPointerEvent. -// crbug.com/508283 -class BLINK_COMMON_EXPORT WebTouchPoint : public WebPointerProperties { - public: - WebTouchPoint() : WebTouchPoint(WebPointerProperties(0)) {} - - WebTouchPoint(WebPointerProperties web_pointer_properties) - : WebPointerProperties(web_pointer_properties) {} - - using State = mojom::TouchState; - - State state = State::kStateUndefined; - - float radius_x = 0.0f; - float radius_y = 0.0f; - float rotation_angle = 0.0f; -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/loader/OWNERS b/chromium/src/third_party/blink/public/common/loader/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/loader/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/loader/mime_sniffing_throttle.h b/chromium/src/third_party/blink/public/common/loader/mime_sniffing_throttle.h deleted file mode 100644 index 06cc811..0000000 --- a/chromium/src/third_party/blink/public/common/loader/mime_sniffing_throttle.h +++ /dev/null
@@ -1,43 +0,0 @@ -// Copyright 2018 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_THROTTLE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_THROTTLE_H_ - -#include "base/memory/weak_ptr.h" -#include "services/network/public/mojom/url_response_head.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/loader/url_loader_throttle.h" - -namespace blink { - -// Throttle for mime type sniffing. This may intercept the request and -// modify the response's mime type in the response head. -class BLINK_COMMON_EXPORT MimeSniffingThrottle : public URLLoaderThrottle { - public: - // |task_runner| is used to bind the right task runner for handling incoming - // IPC in MimeSniffingLoader. |task_runner| is supposed to be bound to the - // current sequence. - explicit MimeSniffingThrottle( - scoped_refptr<base::SequencedTaskRunner> task_runner); - ~MimeSniffingThrottle() override; - - // Implements blink::URLLoaderThrottle. - void DetachFromCurrentSequence() override; - void WillProcessResponse(const GURL& response_url, - network::mojom::URLResponseHead* response_head, - bool* defer) override; - - // Called from MimeSniffingURLLoader once mime type is ready. - void ResumeWithNewResponseHead( - network::mojom::URLResponseHeadPtr new_response_head); - - private: - scoped_refptr<base::SequencedTaskRunner> task_runner_; - base::WeakPtrFactory<MimeSniffingThrottle> weak_factory_{this}; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_THROTTLE_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/mime_sniffing_url_loader.h b/chromium/src/third_party/blink/public/common/loader/mime_sniffing_url_loader.h deleted file mode 100644 index 64b294c..0000000 --- a/chromium/src/third_party/blink/public/common/loader/mime_sniffing_url_loader.h +++ /dev/null
@@ -1,159 +0,0 @@ -// Copyright 2018 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_URL_LOADER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_URL_LOADER_H_ - -#include <tuple> - -#include "base/callback.h" -#include "base/memory/ref_counted.h" -#include "base/memory/weak_ptr.h" -#include "base/strings/string_piece.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/receiver.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "mojo/public/cpp/system/data_pipe.h" -#include "mojo/public/cpp/system/simple_watcher.h" -#include "services/network/public/cpp/shared_url_loader_factory.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "services/network/public/mojom/url_loader_factory.mojom-forward.h" -#include "services/network/public/mojom/url_response_head.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/loader/url_loader_throttle.h" - -namespace blink { - -class MimeSniffingThrottle; - -// Reads the response body and determines its mime type. This url loader buffers -// the response body until the mime type is decided. MimeSniffingURLLoader -// is expected to be created just after receiving OnReceiveResponse(), so this -// handles only OnStartLoadingResponseBody() and OnComplete() as a -// network::mojom::URLLoaderClient. -// -// This loader has five states: -// kWaitForBody: The initial state until the body is received (= -// OnStartLoadingResponseBody() is called) or the response is -// finished (= OnComplete() is called). When body is provided, the -// state is changed to kSniffing. Otherwise the state goes to -// kCompleted. -// kSniffing: Receives the body from the source loader and estimate the mime -// type. The received body is kept in this loader until the mime type -// is decided. When the mime type is decided or all body has been -// received, this loader will dispatch queued messages like -// OnStartLoadingResponseBody() to the destination -// loader client, and then the state is changed to kSending. -// kSending: Receives the body and sends it to the destination loader client. -// The state changes to kCompleted after all data is sent. -// kCompleted: All data has been sent to the destination loader. -// kAborted: Unexpected behavior happens. Watchers, pipes and the binding from -// the source loader to |this| are stopped. All incoming messages from -// the destination (through network::mojom::URLLoader) are ignored in -// this state. -class BLINK_COMMON_EXPORT MimeSniffingURLLoader - : public network::mojom::URLLoaderClient, - public network::mojom::URLLoader { - public: - ~MimeSniffingURLLoader() override; - - // Start waiting for the body. - void Start( - mojo::PendingRemote<network::mojom::URLLoader> source_url_loader_remote, - mojo::PendingReceiver<network::mojom::URLLoaderClient> - source_url_client_receiver); - - // mojo::PendingRemote<network::mojom::URLLoader> controls the lifetime of the - // loader. - static std::tuple<mojo::PendingRemote<network::mojom::URLLoader>, - mojo::PendingReceiver<network::mojom::URLLoaderClient>, - MimeSniffingURLLoader*> - CreateLoader(base::WeakPtr<MimeSniffingThrottle> throttle, - const GURL& response_url, - network::mojom::URLResponseHeadPtr response_head, - scoped_refptr<base::SequencedTaskRunner> task_runner); - - private: - MimeSniffingURLLoader(base::WeakPtr<MimeSniffingThrottle> throttle, - const GURL& response_url, - network::mojom::URLResponseHeadPtr response_head, - mojo::PendingRemote<network::mojom::URLLoaderClient> - destination_url_loader_client, - scoped_refptr<base::SequencedTaskRunner> task_runner); - - // network::mojom::URLLoaderClient implementation (called from the source of - // the response): - void OnReceiveResponse( - network::mojom::URLResponseHeadPtr response_head) override; - void OnReceiveRedirect( - const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr response_head) override; - void OnUploadProgress(int64_t current_position, - int64_t total_size, - OnUploadProgressCallback ack_callback) override; - void OnReceiveCachedMetadata(mojo_base::BigBuffer data) override; - void OnTransferSizeUpdated(int32_t transfer_size_diff) override; - void OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) override; - void OnComplete(const network::URLLoaderCompletionStatus& status) override; - - // network::mojom::URLLoader implementation (called from the destination of - // the response): - void FollowRedirect( - const std::vector<std::string>& removed_headers, - const net::HttpRequestHeaders& modified_headers, - const net::HttpRequestHeaders& modified_cors_exempt_headers, - const base::Optional<GURL>& new_url) override; - void SetPriority(net::RequestPriority priority, - int32_t intra_priority_value) override; - void PauseReadingBodyFromNet() override; - void ResumeReadingBodyFromNet() override; - - void OnBodyReadable(MojoResult); - void OnBodyWritable(MojoResult); - void CompleteSniffing(); - void CompleteSending(); - void SendReceivedBodyToClient(); - void ForwardBodyToClient(); - - void Abort(); - - static const char kDefaultMimeType[]; - - base::WeakPtr<MimeSniffingThrottle> throttle_; - - mojo::Receiver<network::mojom::URLLoaderClient> source_url_client_receiver_{ - this}; - mojo::Remote<network::mojom::URLLoader> source_url_loader_; - mojo::Remote<network::mojom::URLLoaderClient> destination_url_loader_client_; - - GURL response_url_; - - // Capture the response head to defer to send it to the destination until the - // mime type is decided. - network::mojom::URLResponseHeadPtr response_head_; - - scoped_refptr<base::SequencedTaskRunner> task_runner_; - - enum class State { kWaitForBody, kSniffing, kSending, kCompleted, kAborted }; - State state_ = State::kWaitForBody; - - // Set if OnComplete() is called during sniffing. - base::Optional<network::URLLoaderCompletionStatus> complete_status_; - - std::vector<char> buffered_body_; - size_t bytes_remaining_in_buffer_; - - mojo::ScopedDataPipeConsumerHandle body_consumer_handle_; - mojo::ScopedDataPipeProducerHandle body_producer_handle_; - mojo::SimpleWatcher body_consumer_watcher_; - mojo::SimpleWatcher body_producer_watcher_; - - DISALLOW_COPY_AND_ASSIGN(MimeSniffingURLLoader); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_MIME_SNIFFING_URL_LOADER_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/network_utils.h b/chromium/src/third_party/blink/public/common/loader/network_utils.h deleted file mode 100644 index d622257..0000000 --- a/chromium/src/third_party/blink/public/common/loader/network_utils.h +++ /dev/null
@@ -1,33 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_NETWORK_UTILS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_NETWORK_UTILS_H_ - -#include "base/memory/scoped_refptr.h" -#include "net/http/http_response_headers.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/gurl.h" - -namespace blink { -namespace network_utils { - -// Returns true if the headers indicate that this resource should always be -// revalidated or not cached. -BLINK_COMMON_EXPORT bool AlwaysAccessNetwork( - const scoped_refptr<net::HttpResponseHeaders>& headers); - -// Helper function to determine if a request for |url| refers to a network -// resource (as opposed to a local browser resource like files or blobs). Used -// when the Network Service is enabled. -// -// Note that this is not equivalent to the -// content::IsURLHandledByNetworkStack(), as several non-network schemes are -// handled by the network stack when the Network Service is disabled. -BLINK_COMMON_EXPORT bool IsURLHandledByNetworkService(const GURL& url); - -} // namespace network_utils -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_NETWORK_UTILS_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/previews_state.h b/chromium/src/third_party/blink/public/common/loader/previews_state.h deleted file mode 100644 index 1236426..0000000 --- a/chromium/src/third_party/blink/public/common/loader/previews_state.h +++ /dev/null
@@ -1,78 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_PREVIEWS_STATE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_PREVIEWS_STATE_H_ - -namespace blink { - -typedef int PreviewsState; - -// The Previews types which determines whether to request a Preview version of -// the resource. Previews are optimizations that change the format and -// content of web pages to improve data savings and / or performance. This enum -// determines which Previews types to request. -// Deprecated values should be commented out and not reused since this bitmask -// is persisted on disk. -// TODO(nhiroki): Remove snake-case enum values (e.g., PREVIEWS_UNSPECIFIED) in -// favor of camel-case enum values (e.g., kPreviewsUnspecified). -enum PreviewsTypes { - PREVIEWS_UNSPECIFIED = 0, // Let the browser process decide whether or - // not to request Preview types. - kPreviewsUnspecified = PREVIEWS_UNSPECIFIED, - - // DEPRECATED: SERVER_LOFI_ON = 1 << 0, Request a Lo-Fi version of the - // resource from the server. This preview type has been deprecated and should - // no longer be used. - // DEPRECATED: CLIENT_LOFI_ON = 1 << 1, Request a Lo-Fi version of the - // resource from the client. This preview type has been deprecated and should - // no longer be used. - // DEPRECATED: CLIENT_LOFI_AUTO_RELOAD = 1 << 2, // Request the original - // version of the resource after a decoding error occurred when attempting to - // use Client Lo-Fi. - // kClientLoFiAutoReload = CLIENT_LOFI_AUTO_RELOAD, - - // DEPRECATED: SERVER_LITE_PAGE_ON = 1 << 3, // Request a Lite Page version - // of the resource from the server. - // kServiceLitePageOn = SERVER_LITE_PAGE_ON, - - PREVIEWS_NO_TRANSFORM = 1 << 4, // Explicitly forbid Previews - // transformations. - kPreviewsNoTransform = PREVIEWS_NO_TRANSFORM, - - PREVIEWS_OFF = 1 << 5, // Request a normal (non-Preview) version of - // the resource. Server transformations may - // still happen if the page is heavy. - kPreviewsOff = PREVIEWS_OFF, - - // DEPRECATED: NOSCRIPT_ON = 1 << 6, // Request that script be disabled for - // page load. kNoScriptOn = NOSCRIPT_ON, - - // DEPRECATED: RESOURCE_LOADING_HINTS_ON = - // 1 << 7, // Request that resource loading hints be used during pageload. - // kResourceLoadingHintsOn = RESOURCE_LOADING_HINTS_ON, - - // DEPRECATED: OFFLINE_PAGE_ON = - // 1 << 8, // Request that an offline page be used if one is stored. - // kOfflinePageOn = OFFLINE_PAGE_ON, - - // DEPRECATED: LITE_PAGE_REDIRECT_ON = 1 << 9, // Allow the browser to - // redirect the resource to a Lite Page server. Support for this functionality - // has been removed. - DEFER_ALL_SCRIPT_ON = 1 << 10, // Request that script execution be deferred - // until parsing completes. - kDeferAllScriptOn = DEFER_ALL_SCRIPT_ON, - - SUBRESOURCE_REDIRECT_ON = - 1 << 11, // Allow the subresources in the page to be redirected to - // serve better optimized resources. Set on subresources. - kSubresourceRedirectOn = SUBRESOURCE_REDIRECT_ON, - - PREVIEWS_STATE_LAST = SUBRESOURCE_REDIRECT_ON, - kPreviewsStateLast = PREVIEWS_STATE_LAST -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_PREVIEWS_STATE_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/throttling_url_loader.h b/chromium/src/third_party/blink/public/common/loader/throttling_url_loader.h deleted file mode 100644 index 08d6e8c..0000000 --- a/chromium/src/third_party/blink/public/common/loader/throttling_url_loader.h +++ /dev/null
@@ -1,322 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_THROTTLING_URL_LOADER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_THROTTLING_URL_LOADER_H_ - -#include <memory> - -#include "base/callback.h" -#include "base/memory/ref_counted.h" -#include "base/memory/weak_ptr.h" -#include "base/optional.h" -#include "base/strings/string_piece.h" -#include "base/threading/thread_task_runner_handle.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/receiver.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "services/network/public/cpp/shared_url_loader_factory.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "services/network/public/mojom/url_loader_factory.mojom-forward.h" -#include "services/network/public/mojom/url_response_head.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/loader/url_loader_throttle.h" - -namespace base { -class SingleThreadTaskRunner; -} - -namespace blink { - -// ThrottlingURLLoader is a wrapper around the -// network::mojom::URLLoader[Factory] interfaces. It applies a list of -// URLLoaderThrottle instances which could defer, resume restart or cancel the -// URL loading. If the Mojo connection fails during the request it is canceled -// with net::ERR_ABORTED. -class BLINK_COMMON_EXPORT ThrottlingURLLoader - : public network::mojom::URLLoaderClient { - public: - // Reason used when resetting the URLLoader to follow a redirect. - static const char kFollowRedirectReason[]; - - // |url_request| can be mutated by this function, and doesn't need to stay - // alive after calling this function. - // - // |client| must stay alive during the lifetime of the returned object. Please - // note that the request may not start immediately since it could be deferred - // by throttles. - static std::unique_ptr<ThrottlingURLLoader> CreateLoaderAndStart( - scoped_refptr<network::SharedURLLoaderFactory> factory, - std::vector<std::unique_ptr<URLLoaderThrottle>> throttles, - int32_t routing_id, - int32_t request_id, - uint32_t options, - network::ResourceRequest* url_request, - network::mojom::URLLoaderClient* client, - const net::NetworkTrafficAnnotationTag& traffic_annotation, - scoped_refptr<base::SingleThreadTaskRunner> task_runner, - base::Optional<std::vector<std::string>> cors_exempt_header_list = - base::nullopt); - - ~ThrottlingURLLoader() override; - - // Follows a redirect, calling CreateLoaderAndStart() on the factory. This - // is useful if the factory uses different loaders for different URLs. - void FollowRedirectForcingRestart(); - // This should be called if the loader will be recreated to follow a redirect - // instead of calling FollowRedirect(). This can be used if a loader is - // implementing similar logic to FollowRedirectForcingRestart(). If this is - // called, a future request for the redirect should be guaranteed to be sent - // with the same request_id. - void ResetForFollowRedirect(); - - void FollowRedirect( - const std::vector<std::string>& removed_headers, - const net::HttpRequestHeaders& modified_headers, - const net::HttpRequestHeaders& modified_cors_exempt_headers); - void SetPriority(net::RequestPriority priority, int32_t intra_priority_value); - void PauseReadingBodyFromNet(); - void ResumeReadingBodyFromNet(); - - // Restarts the load immediately with |factory| and |url_loader_options|. - // It must only be called when the following conditions are met: - // 1. The request already started and the original factory decided to not - // handle the request. This condition is required because throttles are not - // consulted prior to restarting. - // 2. The original factory did not call URLLoaderClient callbacks (e.g., - // OnReceiveResponse). - // This function is useful in the case of service worker network fallback. - void RestartWithFactory( - scoped_refptr<network::SharedURLLoaderFactory> factory, - uint32_t url_loader_options); - - // Disconnect the forwarding URLLoaderClient and the URLLoader. Returns the - // datapipe endpoints. - network::mojom::URLLoaderClientEndpointsPtr Unbind(); - - void CancelWithError(int error_code, base::StringPiece custom_reason); - - // Sets the forwarding client to receive all subsequent notifications. - void set_forwarding_client(network::mojom::URLLoaderClient* client) { - forwarding_client_ = client; - } - - bool response_intercepted() const { return response_intercepted_; } - - private: - class ForwardingThrottleDelegate; - - ThrottlingURLLoader( - std::vector<std::unique_ptr<URLLoaderThrottle>> throttles, - network::mojom::URLLoaderClient* client, - const net::NetworkTrafficAnnotationTag& traffic_annotation); - - void Start(scoped_refptr<network::SharedURLLoaderFactory> factory, - int32_t routing_id, - int32_t request_id, - uint32_t options, - network::ResourceRequest* url_request, - scoped_refptr<base::SingleThreadTaskRunner> task_runner, - base::Optional<std::vector<std::string>> cors_exempt_header_list); - - void StartNow(); - void RestartWithFlagsNow(); - - // Processes the result of a URLLoaderThrottle call, adding the throttle to - // the blocking set if it deferred and updating |*should_defer| accordingly. - // Returns |true| if the request should continue to be processed (regardless - // of whether it's been deferred) or |false| if it's been cancelled. - bool HandleThrottleResult(URLLoaderThrottle* throttle, - bool throttle_deferred, - bool* should_defer); - - // Stops a given throttle from deferring the request. If this was not the last - // deferring throttle, the request remains deferred. Otherwise it resumes - // progress. - void StopDeferringForThrottle(URLLoaderThrottle* throttle); - - void RestartWithFlags(int additional_load_flags); - - // Restart the request using |original_url_|. - void RestartWithURLResetAndFlags(int additional_load_flags); - - // Restart the request immediately if the response has not started yet. - void RestartWithURLResetAndFlagsNow(int additional_load_flags); - - // Restart the request immediately with modified headers. - void RestartWithModifiedHeadersNow( - const net::HttpRequestHeaders& modified_headers); - - // network::mojom::URLLoaderClient implementation: - void OnReceiveResponse( - network::mojom::URLResponseHeadPtr response_head) override; - void OnReceiveRedirect( - const net::RedirectInfo& redirect_info, - network::mojom::URLResponseHeadPtr response_head) override; - void OnUploadProgress(int64_t current_position, - int64_t total_size, - OnUploadProgressCallback ack_callback) override; - void OnReceiveCachedMetadata(mojo_base::BigBuffer data) override; - void OnTransferSizeUpdated(int32_t transfer_size_diff) override; - void OnStartLoadingResponseBody( - mojo::ScopedDataPipeConsumerHandle body) override; - void OnComplete(const network::URLLoaderCompletionStatus& status) override; - - void OnClientConnectionError(); - - void Resume(); - void SetPriority(net::RequestPriority priority); - void UpdateDeferredRequestHeaders( - const net::HttpRequestHeaders& modified_request_headers, - const net::HttpRequestHeaders& modified_cors_exempt_request_headers); - void UpdateDeferredResponseHead( - network::mojom::URLResponseHeadPtr new_response_head); - void PauseReadingBodyFromNet(URLLoaderThrottle* throttle); - void ResumeReadingBodyFromNet(URLLoaderThrottle* throttle); - void InterceptResponse( - mojo::PendingRemote<network::mojom::URLLoader> new_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient> - new_client_receiver, - mojo::PendingRemote<network::mojom::URLLoader>* original_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient>* - original_client_receiver); - - // Disconnects the client connection and releases the URLLoader. - void DisconnectClient(base::StringPiece custom_description); - - enum DeferredStage { - DEFERRED_NONE, - DEFERRED_START, - DEFERRED_REDIRECT, - DEFERRED_BEFORE_RESPONSE, - DEFERRED_RESPONSE, - DEFERRED_COMPLETE - }; - const char* GetStageNameForHistogram(DeferredStage stage); - - DeferredStage deferred_stage_ = DEFERRED_NONE; - bool loader_completed_ = false; - bool did_receive_response_ = false; - - struct ThrottleEntry { - ThrottleEntry(ThrottlingURLLoader* loader, - std::unique_ptr<URLLoaderThrottle> the_throttle); - ThrottleEntry(ThrottleEntry&& other); - ~ThrottleEntry(); - - ThrottleEntry& operator=(ThrottleEntry&& other); - - std::unique_ptr<ForwardingThrottleDelegate> delegate; - std::unique_ptr<URLLoaderThrottle> throttle; - - private: - DISALLOW_COPY_AND_ASSIGN(ThrottleEntry); - }; - - std::vector<ThrottleEntry> throttles_; - std::map<URLLoaderThrottle*, /*start=*/base::Time> deferring_throttles_; - // nullptr is used when this loader is directly requested to pause reading - // body from net by calling PauseReadingBodyFromNet(). - std::set<URLLoaderThrottle*> pausing_reading_body_from_net_throttles_; - - // NOTE: This may point to a native implementation (instead of a Mojo proxy - // object). And it is possible that the implementation of |forwarding_client_| - // destroys this object synchronously when this object is calling into it. - network::mojom::URLLoaderClient* forwarding_client_; - mojo::Remote<network::mojom::URLLoader> url_loader_; - - mojo::Receiver<network::mojom::URLLoaderClient> client_receiver_{this}; - - struct StartInfo { - StartInfo( - scoped_refptr<network::SharedURLLoaderFactory> in_url_loader_factory, - int32_t in_routing_id, - int32_t in_request_id, - uint32_t in_options, - network::ResourceRequest* in_url_request, - scoped_refptr<base::SingleThreadTaskRunner> in_task_runner, - base::Optional<std::vector<std::string>> in_cors_exempt_header_list); - ~StartInfo(); - - scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory; - int32_t routing_id; - int32_t request_id; - uint32_t options; - - network::ResourceRequest url_request; - // |task_runner| is used to set up |client_receiver_|. - scoped_refptr<base::SingleThreadTaskRunner> task_runner; - base::Optional<std::vector<std::string>> cors_exempt_header_list; - }; - // Holds any info needed to start or restart the request. Used when start is - // deferred or when FollowRedirectForcingRestart() is called. - std::unique_ptr<StartInfo> start_info_; - - struct ResponseInfo { - explicit ResponseInfo(network::mojom::URLResponseHeadPtr in_response_head); - ~ResponseInfo(); - - network::mojom::URLResponseHeadPtr response_head; - }; - // Set if response is deferred. - std::unique_ptr<ResponseInfo> response_info_; - - struct RedirectInfo { - RedirectInfo(const net::RedirectInfo& in_redirect_info, - network::mojom::URLResponseHeadPtr in_response_head); - ~RedirectInfo(); - - net::RedirectInfo redirect_info; - network::mojom::URLResponseHeadPtr response_head; - }; - // Set if redirect is deferred. - std::unique_ptr<RedirectInfo> redirect_info_; - - struct PriorityInfo { - PriorityInfo(net::RequestPriority in_priority, - int32_t in_intra_priority_value); - - net::RequestPriority priority; - int32_t intra_priority_value; - }; - // Set if request is deferred and SetPriority() is called. - std::unique_ptr<PriorityInfo> priority_info_; - - // Set if a throttle changed the URL in WillStartRequest. - GURL throttle_will_start_redirect_url_; - - // Set if a throttle changed the URL in WillRedirectRequest. - // Only supported with the network service. - GURL throttle_will_redirect_redirect_url_; - - // Set if the request should be made using the |original_url_|. - bool throttle_will_start_original_url_ = false; - // The first URL seen by the throttle. - GURL original_url_; - - const net::NetworkTrafficAnnotationTag traffic_annotation_; - - uint32_t inside_delegate_calls_ = 0; - - // The latest request URL from where we expect a response - GURL response_url_; - - bool response_intercepted_ = false; - - std::vector<std::string> removed_headers_; - net::HttpRequestHeaders modified_headers_; - net::HttpRequestHeaders modified_cors_exempt_headers_; - - int pending_restart_flags_ = 0; - bool has_pending_restart_ = false; - - base::WeakPtrFactory<ThrottlingURLLoader> weak_factory_{this}; - - DISALLOW_COPY_AND_ASSIGN(ThrottlingURLLoader); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_THROTTLING_URL_LOADER_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/url_loader_factory_bundle.h b/chromium/src/third_party/blink/public/common/loader/url_loader_factory_bundle.h deleted file mode 100644 index 4361ec8..0000000 --- a/chromium/src/third_party/blink/public/common/loader/url_loader_factory_bundle.h +++ /dev/null
@@ -1,178 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_FACTORY_BUNDLE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_FACTORY_BUNDLE_H_ - -#include <map> -#include <memory> -#include <string> -#include <utility> - -#include "base/macros.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "services/network/public/cpp/shared_url_loader_factory.h" -#include "services/network/public/mojom/url_loader_factory.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/origin.h" - -namespace network { -struct ResourceRequest; -} - -namespace blink { - -// Holds the internal state of a URLLoaderFactoryBundle in a form that is safe -// to pass across sequences. -class BLINK_COMMON_EXPORT PendingURLLoaderFactoryBundle - : public network::PendingSharedURLLoaderFactory { - public: - // Map from URL scheme to PendingRemote<URLLoaderFactory> for handling URL - // requests for schemes not handled by the |pending_default_factory|. See also - // URLLoaderFactoryBundle::SchemeMap. - using SchemeMap = - std::map<std::string, - mojo::PendingRemote<network::mojom::URLLoaderFactory>>; - - // Map from origin of isolated world to PendingRemote<URLLoaderFactory> for - // handling this isolated world's requests (e.g., for relaxing CORB for - // requests initiated from content scripts). - using OriginMap = - std::map<url::Origin, - mojo::PendingRemote<network::mojom::URLLoaderFactory>>; - - PendingURLLoaderFactoryBundle(); - PendingURLLoaderFactoryBundle( - mojo::PendingRemote<network::mojom::URLLoaderFactory> - pending_default_factory, - SchemeMap scheme_specific_pending_factories, - OriginMap isolated_world_pending_factories, - bool bypass_redirect_checks); - ~PendingURLLoaderFactoryBundle() override; - - mojo::PendingRemote<network::mojom::URLLoaderFactory>& - pending_default_factory() { - return pending_default_factory_; - } - - mojo::PendingRemote<network::mojom::URLLoaderFactory>& - pending_appcache_factory() { - return pending_appcache_factory_; - } - - SchemeMap& pending_scheme_specific_factories() { - return pending_scheme_specific_factories_; - } - OriginMap& pending_isolated_world_factories() { - return pending_isolated_world_factories_; - } - - bool bypass_redirect_checks() const { return bypass_redirect_checks_; } - void set_bypass_redirect_checks(bool bypass_redirect_checks) { - bypass_redirect_checks_ = bypass_redirect_checks; - } - - protected: - // PendingSharedURLLoaderFactory implementation. - scoped_refptr<network::SharedURLLoaderFactory> CreateFactory() override; - - mojo::PendingRemote<network::mojom::URLLoaderFactory> - pending_default_factory_; - mojo::PendingRemote<network::mojom::URLLoaderFactory> - pending_appcache_factory_; - SchemeMap pending_scheme_specific_factories_; - OriginMap pending_isolated_world_factories_; - bool bypass_redirect_checks_ = false; - - DISALLOW_COPY_AND_ASSIGN(PendingURLLoaderFactoryBundle); -}; - -// Encapsulates a collection of URLLoaderFactoryPtrs which can be usd to acquire -// loaders for various types of resource requests. -class BLINK_COMMON_EXPORT URLLoaderFactoryBundle - : public network::SharedURLLoaderFactory { - public: - URLLoaderFactoryBundle(); - - explicit URLLoaderFactoryBundle( - std::unique_ptr<PendingURLLoaderFactoryBundle> pending_factories); - - // SharedURLLoaderFactory implementation. - void CreateLoaderAndStart( - mojo::PendingReceiver<network::mojom::URLLoader> loader, - int32_t routing_id, - int32_t request_id, - uint32_t options, - const network::ResourceRequest& request, - mojo::PendingRemote<network::mojom::URLLoaderClient> client, - const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) - override; - void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) - override; - std::unique_ptr<network::PendingSharedURLLoaderFactory> Clone() override; - bool BypassRedirectChecks() const override; - - // The |pending_factories| contains replacement factories for a subset of the - // existing bundle. - void Update(std::unique_ptr<PendingURLLoaderFactoryBundle> pending_factories); - - bool HasBoundDefaultFactory() const { return default_factory_.is_bound(); } - - protected: - ~URLLoaderFactoryBundle() override; - - // Returns a factory which can be used to acquire a loader for |request|. - virtual network::mojom::URLLoaderFactory* GetFactory( - const network::ResourceRequest& request); - - template <typename TKey> - static std::map<TKey, mojo::PendingRemote<network::mojom::URLLoaderFactory>> - CloneRemoteMapToPendingRemoteMap( - const std::map<TKey, mojo::Remote<network::mojom::URLLoaderFactory>>& - input) { - std::map<TKey, mojo::PendingRemote<network::mojom::URLLoaderFactory>> - output; - for (const auto& it : input) { - const TKey& key = it.first; - const mojo::Remote<network::mojom::URLLoaderFactory>& factory = it.second; - mojo::PendingRemote<network::mojom::URLLoaderFactory> pending_factory; - factory->Clone(pending_factory.InitWithNewPipeAndPassReceiver()); - output.emplace(key, std::move(pending_factory)); - } - return output; - } - - // |default_factory_| is the default factory used by the bundle. It usually - // goes to "network", but it's possible it was overriden in case when the - // context should not be given access to the network. - mojo::Remote<network::mojom::URLLoaderFactory> default_factory_; - - // |appcache_factory_| is a special loader factory that intercepts - // requests when the context has AppCache. See also - // AppCacheSubresourceURLFactory. - mojo::Remote<network::mojom::URLLoaderFactory> appcache_factory_; - - // Map from URL scheme to Remote<URLLoaderFactory> for handling URL requests - // for schemes not handled by the |default_factory_|. See also - // PendingURLLoaderFactoryBundle::SchemeMap and - // ContentBrowserClient::SchemeToURLLoaderFactoryMap. - using SchemeMap = - std::map<std::string, mojo::Remote<network::mojom::URLLoaderFactory>>; - SchemeMap scheme_specific_factories_; - - // Map from origin of isolated world to Remote<URLLoaderFactory> for handling - // this isolated world's requests. See also - // PendingURLLoaderFactoryBundle::OriginMap. - using OriginMap = - std::map<url::Origin, mojo::Remote<network::mojom::URLLoaderFactory>>; - OriginMap isolated_world_factories_; - - bool bypass_redirect_checks_ = false; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_FACTORY_BUNDLE_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/url_loader_throttle.h b/chromium/src/third_party/blink/public/common/loader/url_loader_throttle.h deleted file mode 100644 index 9af0909..0000000 --- a/chromium/src/third_party/blink/public/common/loader/url_loader_throttle.h +++ /dev/null
@@ -1,225 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_THROTTLE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_THROTTLE_H_ - -#include <string> -#include <vector> - -#include "base/strings/string_piece.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "net/base/request_priority.h" -#include "services/network/public/mojom/url_loader.mojom-forward.h" -#include "services/network/public/mojom/url_response_head.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" - -class GURL; - -namespace net { -class HttpRequestHeaders; -struct RedirectInfo; -} - -namespace network { -struct ResourceRequest; -struct URLLoaderCompletionStatus; -} // namespace network - -namespace blink { - -// A URLLoaderThrottle gets notified at various points during the process of -// loading a resource. At each stage, it has the opportunity to defer the -// resource load. -// -// Note that while a single throttle deferring a load at any given step will -// block the load from progressing further until a subsequent Delegate::Resume() -// call is made, it does NOT prevent subsequent throttles from processing the -// same step of the request if multiple throttles are affecting the load. -class BLINK_COMMON_EXPORT URLLoaderThrottle { - public: - // An interface for the throttle implementation to resume (when deferred) or - // cancel the resource load. Please note that these methods could be called - // in-band (i.e., inside URLLoaderThrottle notification methods such as - // WillStartRequest), or out-of-band. - // - // It is guaranteed that throttles calling these methods won't be destroyed - // synchronously. - class BLINK_COMMON_EXPORT Delegate { - public: - // Cancels the resource load with the specified error code and an optional, - // application-defined reason description. - virtual void CancelWithError(int error_code, - base::StringPiece custom_reason = "") = 0; - - // Resumes the deferred resource load. It is a no-op if the resource load is - // not deferred or has already been canceled. - virtual void Resume() = 0; - - virtual void SetPriority(net::RequestPriority priority); - - // Updates the request headers which is deferred to be sent. This method - // needs to be called when the response is deferred on WillStartRequest or - // WillRedirectRequest and before calling Delegate::Resume(). - virtual void UpdateDeferredRequestHeaders( - const net::HttpRequestHeaders& modified_request_headers, - const net::HttpRequestHeaders& modified_cors_exempt_request_headers); - - // Updates the response head which is deferred to be sent. This method needs - // to be called when the response is deferred on - // URLLoaderThrottle::WillProcessResponse() and before calling - // Delegate::Resume(). - virtual void UpdateDeferredResponseHead( - network::mojom::URLResponseHeadPtr new_response_head); - - // Pauses/resumes reading response body if the resource is fetched from - // network. - virtual void PauseReadingBodyFromNet(); - virtual void ResumeReadingBodyFromNet(); - - // Replaces the URLLoader and URLLoaderClient endpoints held by the - // ThrottlingURLLoader instance. - virtual void InterceptResponse( - mojo::PendingRemote<network::mojom::URLLoader> new_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient> - new_client_receiver, - mojo::PendingRemote<network::mojom::URLLoader>* original_loader, - mojo::PendingReceiver<network::mojom::URLLoaderClient>* - original_client_receiver); - - // Restarts the URL loader using |additional_load_flags|. - // - // Restarting is only valid while executing within - // BeforeWillProcessResponse(), or during its deferred handling (before - // having called Resume()). - // - // When a URL loader is restarted, throttles will NOT have their - // WillStartRequest() method called again - that is only called for the - // initial request start. - // - // If multiple throttles call RestartWithFlags() then the URL loader will be - // restarted using a combined value of all of the |additional_load_flags|. - virtual void RestartWithFlags(int additional_load_flags); - - // Restarts the URL loader using |additional_load_flags| and the unmodified - // URL if it was changed in WillStartRequest(). - // - // If called on an URL loader that did not modify the URL in - // WillStartRequest(), this method has the same outcome as - // RestartWithFlags(). - // - // Restarting is only valid while executing within - // BeforeWillProcessResponse(), or during its deferred handling (before - // having called Resume()). - // - // When a URL loader is restarted, throttles will NOT have their - // WillStartRequest() method called again - that is only called for the - // initial request start. - // - // If multiple throttles call RestartWithFlags() and - // RestartWithURLResetAndFlags() then the URL loader will be restarted - // using a combined value of all of the |additional_load_flags|. - virtual void RestartWithURLResetAndFlags(int additional_load_flags); - - // Restarts the URL loader immediately using |additional_load_flags| and the - // unmodified URL if it was changed in WillStartRequest(). - // - // Restarting is only valid before BeforeWillProcessResponse() is called. - virtual void RestartWithURLResetAndFlagsNow(int additional_load_flags); - - // Restarts the URL loader immediately after adding the provided headers to - // the new request. - virtual void RestartWithModifiedHeadersNow( - const net::HttpRequestHeaders& modified_headers); - - protected: - virtual ~Delegate(); - }; - - virtual ~URLLoaderThrottle(); - - // Detaches this object from the current sequence in preparation for a move to - // a different sequence. If this method is called it must be before any of the - // Will* methods below and may only be called once. - virtual void DetachFromCurrentSequence(); - - // Called exactly once before the resource request is started. - // - // |request| needs to be modified before the callback returns (i.e. - // asynchronously touching the pointer in defer case is not valid) - // When |request->url| is modified it will make an internal redirect, which - // might have some side-effects: drop upload streams data might be dropped, - // redirect count may be reached. - // - // Implementations should be aware that throttling can happen multiple times - // for the same |request|, even after one instance of the same throttle - // subclass already modified the request. This happens, e.g., when a service - // worker initially elects to handle a request but then later falls back to - // network, so new throttles are created for another URLLoaderFactory to - // handle the request. - virtual void WillStartRequest(network::ResourceRequest* request, bool* defer); - - // Called when the request was redirected. |redirect_info| contains the - // redirect responses's HTTP status code and some information about the new - // request that will be sent if the redirect is followed, including the new - // URL and new method. - // - // Request headers added to |to_be_removed_request_headers| will be removed - // before the redirect is followed. Headers added to - // |modified_request_headers| and |modified_cors_exempt_request_headers| will - // be merged into the existing request headers and cors_exempt_headers before - // the redirect is followed. - // - // If |redirect_info->new_url| is modified by a throttle, the request will be - // redirected to the new URL. Only one throttle can update this and it must - // have the same origin as |redirect_info->new_url|. See the comments for - // WillStartRequest on possible side-effects. - virtual void WillRedirectRequest( - net::RedirectInfo* redirect_info, - const network::mojom::URLResponseHead& response_head, - bool* defer, - std::vector<std::string>* to_be_removed_request_headers, - net::HttpRequestHeaders* modified_request_headers, - net::HttpRequestHeaders* modified_cors_exempt_request_headers); - - // Called when the response headers and meta data are available. - // TODO(776312): Migrate this URL to URLResponseHead. - virtual void WillProcessResponse( - const GURL& response_url, - network::mojom::URLResponseHead* response_head, - bool* defer); - - // Called prior WillProcessResponse() to allow throttles to restart the URL - // load by calling delegate_->RestartWithFlags(). - // - // Having this method separate from WillProcessResponse() ensures that - // WillProcessResponse() is called at most once even in the presence of - // restarts. - virtual void BeforeWillProcessResponse( - const GURL& response_url, - const network::mojom::URLResponseHead& response_head, - bool* defer); - - // Called if there is a non-OK net::Error in the completion status. - virtual void WillOnCompleteWithError( - const network::URLLoaderCompletionStatus& status, - bool* defer); - - // Must return true if the throttle may make cross-scheme redirects - // (which is usually considered unsafe, so allowed only if the setting - // is made very explicitly). - virtual bool makes_unsafe_redirect(); - - void set_delegate(Delegate* delegate) { delegate_ = delegate; } - - protected: - URLLoaderThrottle(); - - Delegate* delegate_ = nullptr; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_URL_LOADER_THROTTLE_H_
diff --git a/chromium/src/third_party/blink/public/common/loader/worker_main_script_load_parameters.h b/chromium/src/third_party/blink/public/common/loader/worker_main_script_load_parameters.h deleted file mode 100644 index 0cf4f3a..0000000 --- a/chromium/src/third_party/blink/public/common/loader/worker_main_script_load_parameters.h +++ /dev/null
@@ -1,36 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_WORKER_MAIN_SCRIPT_LOAD_PARAMETERS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_WORKER_MAIN_SCRIPT_LOAD_PARAMETERS_H_ - -#include <vector> - -#include "net/url_request/redirect_info.h" -#include "services/network/public/mojom/url_loader.mojom.h" -#include "services/network/public/mojom/url_response_head.mojom.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/gurl.h" - -namespace blink { - -// Used to load the main script for dedicated workers (PlzDedicatedWorker), -// service workers (PlzServiceWorker), and shared workers, which is -// pre-requested by browser process. -struct BLINK_COMMON_EXPORT WorkerMainScriptLoadParameters { - public: - WorkerMainScriptLoadParameters() = default; - ~WorkerMainScriptLoadParameters() = default; - - std::vector<GURL> redirects; - std::vector<network::mojom::URLResponseHeadPtr> redirect_responses; - std::vector<net::RedirectInfo> redirect_infos; - network::mojom::URLResponseHeadPtr response_head; - mojo::ScopedDataPipeConsumerHandle response_body; - network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_LOADER_WORKER_MAIN_SCRIPT_LOAD_PARAMETERS_H_
diff --git a/chromium/src/third_party/blink/public/common/manifest/OWNERS b/chromium/src/third_party/blink/public/common/manifest/OWNERS deleted file mode 100644 index aa75e14..0000000 --- a/chromium/src/third_party/blink/public/common/manifest/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -file://third_party/blink/renderer/modules/manifest/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS - -# Component: Blink>AppManifest
diff --git a/chromium/src/third_party/blink/public/common/manifest/manifest.h b/chromium/src/third_party/blink/public/common/manifest/manifest.h deleted file mode 100644 index 370844b..0000000 --- a/chromium/src/third_party/blink/public/common/manifest/manifest.h +++ /dev/null
@@ -1,242 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_H_ - -#include <stddef.h> -#include <stdint.h> - -#include <vector> - -#include "base/optional.h" -#include "base/strings/string16.h" -#include "services/device/public/mojom/screen_orientation_lock_types.mojom-shared.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h" -#include "third_party/blink/public/mojom/manifest/manifest.mojom-shared.h" -#include "third_party/skia/include/core/SkColor.h" -#include "ui/gfx/geometry/size.h" -#include "url/gurl.h" -#include "url/origin.h" - -namespace blink { - -// The Manifest structure is an internal representation of the Manifest file -// described in the "Manifest for Web Application" document: -// http://w3c.github.io/manifest/ -struct BLINK_COMMON_EXPORT Manifest { - // Structure representing an icon as per the Manifest specification, see: - // https://w3c.github.io/manifest/#dom-imageresource - struct BLINK_COMMON_EXPORT ImageResource { - ImageResource(); - ImageResource(const ImageResource& other); - ~ImageResource(); - - bool operator==(const ImageResource& other) const; - - // MUST be a valid url. If an icon doesn't have a valid URL, it will not be - // successfully parsed, thus will not be represented in the Manifest. - GURL src; - - // Empty if the parsing failed or the field was not present. The type can be - // any string and doesn't have to be a valid image MIME type at this point. - // It is up to the consumer of the object to check if the type matches a - // supported type. - base::string16 type; - - // Empty if the parsing failed, the field was not present or empty. - // The special value "any" is represented by gfx::Size(0, 0). - std::vector<gfx::Size> sizes; - - // Never empty. Defaults to a vector with a single value, IconPurpose::ANY, - // if not explicitly specified in the manifest. - std::vector<mojom::ManifestImageResource_Purpose> purpose; - }; - - // Structure representing a shortcut as per the Manifest specification, see: - // https://w3c.github.io/manifest/#shortcuts-member - struct BLINK_COMMON_EXPORT ShortcutItem { - ShortcutItem(); - ~ShortcutItem(); - - base::string16 name; - base::Optional<base::string16> short_name; - base::Optional<base::string16> description; - GURL url; - std::vector<ImageResource> icons; - }; - - struct BLINK_COMMON_EXPORT FileFilter { - base::string16 name; - std::vector<base::string16> accept; - }; - - // Structure representing a Web Share target's query parameter keys. - struct BLINK_COMMON_EXPORT ShareTargetParams { - ShareTargetParams(); - ~ShareTargetParams(); - - base::Optional<base::string16> title; - base::Optional<base::string16> text; - base::Optional<base::string16> url; - std::vector<FileFilter> files; - }; - - // Structure representing how a Web Share target handles an incoming share. - struct BLINK_COMMON_EXPORT ShareTarget { - ShareTarget(); - ~ShareTarget(); - - // The URL used for sharing. Query parameters are added to this comprised of - // keys from |params| and values from the shared data. - GURL action; - - // The HTTP request method for the web share target. - blink::mojom::ManifestShareTarget_Method method; - - // The way that share data is encoded in "POST" request. - blink::mojom::ManifestShareTarget_Enctype enctype; - - ShareTargetParams params; - }; - - // Structure representing a File Handler. - struct BLINK_COMMON_EXPORT FileHandler { - // The URL which will be opened when the file handler is invoked. - GURL action; - base::string16 name; - std::map<base::string16, std::vector<base::string16>> accept; - }; - - // Structure representing a Protocol Handler. - struct BLINK_COMMON_EXPORT ProtocolHandler { - base::string16 protocol; - GURL url; - }; - - struct BLINK_COMMON_EXPORT UrlHandler { - url::Origin origin; - }; - - // Structure representing a related application. - struct BLINK_COMMON_EXPORT RelatedApplication { - RelatedApplication(); - ~RelatedApplication(); - - // The platform on which the application can be found. This can be any - // string, and is interpreted by the consumer of the object. Empty if the - // parsing failed. - base::Optional<base::string16> platform; - - // URL at which the application can be found. One of |url| and |id| must be - // present. Empty if the parsing failed or the field was not present. - GURL url; - - // An id which is used to represent the application on the platform. One of - // |url| and |id| must be present. Empty if the parsing failed or the field - // was not present. - base::Optional<base::string16> id; - }; - - Manifest(); - Manifest(const Manifest& other); - ~Manifest(); - - // Returns whether this Manifest had no attribute set. A newly created - // Manifest is always empty. - bool IsEmpty() const; - - // Null if the parsing failed or the field was not present. - base::Optional<base::string16> name; - - // Null if the parsing failed or the field was not present. - base::Optional<base::string16> short_name; - - // Null if the parsing failed or the field was not present. - base::Optional<base::string16> description; - - // Empty if the parsing failed or the field was not present. - GURL start_url; - - // Set to DisplayMode::kUndefined if the parsing failed or the field was not - // present. - blink::mojom::DisplayMode display = blink::mojom::DisplayMode::kUndefined; - - // Empty if the parsing failed, the field was not present, or all the - // values inside the JSON array were invalid. - std::vector<blink::mojom::DisplayMode> display_override; - - // Set to device::mojom::ScreenOrientationLockType::DEFAULT if the parsing - // failed or the field was not present. - device::mojom::ScreenOrientationLockType orientation = - device::mojom::ScreenOrientationLockType::DEFAULT; - - // Empty if the parsing failed, the field was not present, or all the - // icons inside the JSON array were invalid. - std::vector<ImageResource> icons; - - // Empty if the parsing failed, the field was not present, or all the - // screenshots inside the JSON array were invalid. - std::vector<ImageResource> screenshots; - - // Empty if the parsing failed, the field was not present, or all the - // icons inside the JSON array were invalid. - std::vector<ShortcutItem> shortcuts; - - // Null if parsing failed or the field was not present. - base::Optional<ShareTarget> share_target; - - // Empty if parsing failed or the field was not present. - // TODO(crbug.com/829689): This field is non-standard and part of a Chrome - // experiment. See: - // https://github.com/WICG/file-handling/blob/master/explainer.md - std::vector<FileHandler> file_handlers; - - // Empty if parsing failed or the field was not present. - // TODO(crbug.com/1019239): This is going into the mainline manifest spec, - // remove the TODO once that PR goes in. - // The URLProtocolHandler explainer can be found here: - // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/URLProtocolHandler/explainer.md - std::vector<ProtocolHandler> protocol_handlers; - - // TODO(crbug.com/1072058): This field is non-standard and part of an - // experiment. See: - // https://github.com/WICG/pwa-url-handler/blob/master/explainer.md - // Empty if the parsing failed, the field was not present, empty or all the - // entries inside the array were invalid. - std::vector<UrlHandler> url_handlers; - - // Empty if the parsing failed, the field was not present, empty or all the - // applications inside the array were invalid. The order of the array - // indicates the priority of the application to use. - std::vector<RelatedApplication> related_applications; - - // A boolean that is used as a hint for the user agent to say that related - // applications should be preferred over the web application. False if missing - // or there is a parsing failure. - bool prefer_related_applications = false; - - // Null if field is not present or parsing failed. - base::Optional<SkColor> theme_color; - - // Null if field is not present or parsing failed. - base::Optional<SkColor> background_color; - - // This is a proprietary extension of the web Manifest, double-check that it - // is okay to use this entry. - // Null if parsing failed or the field was not present. - base::Optional<base::string16> gcm_sender_id; - - // Empty if the parsing failed. Otherwise defaults to the start URL (or - // document URL if start URL isn't present) with filename, query, and fragment - // removed. - GURL scope; - - mojom::CaptureLinks capture_links = mojom::CaptureLinks::kUndefined; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_H_
diff --git a/chromium/src/third_party/blink/public/common/manifest/manifest_mojom_traits.h b/chromium/src/third_party/blink/public/common/manifest/manifest_mojom_traits.h deleted file mode 100644 index 855ace6..0000000 --- a/chromium/src/third_party/blink/public/common/manifest/manifest_mojom_traits.h +++ /dev/null
@@ -1,363 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/manifest/manifest.h" - -#include <vector> - -#include "base/optional.h" -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/manifest/manifest.mojom.h" - -namespace mojo { -namespace internal { - -inline base::StringPiece16 TruncateString16(const base::string16& string) { - // We restrict the maximum length for all the strings inside the Manifest - // when it is sent over Mojo. The renderer process truncates the strings - // before sending the Manifest and the browser process validates that. - return base::StringPiece16(string).substr(0, 4 * 1024); -} - -inline base::Optional<base::StringPiece16> TruncateOptionalString16( - const base::Optional<base::string16>& string) { - if (!string) - return base::nullopt; - - return TruncateString16(*string); -} - -} // namespace internal - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestDataView, ::blink::Manifest> { - static bool IsNull(const ::blink::Manifest& manifest) { - return manifest.IsEmpty(); - } - - static void SetToNull(::blink::Manifest* manifest) { - *manifest = ::blink::Manifest(); - } - - static base::Optional<base::StringPiece16> name( - const ::blink::Manifest& manifest) { - return internal::TruncateOptionalString16(manifest.name); - } - - static base::Optional<base::StringPiece16> short_name( - const ::blink::Manifest& manifest) { - return internal::TruncateOptionalString16(manifest.short_name); - } - - static base::Optional<base::StringPiece16> description( - const ::blink::Manifest& manifest) { - return internal::TruncateOptionalString16(manifest.description); - } - - static base::Optional<base::StringPiece16> gcm_sender_id( - const ::blink::Manifest& manifest) { - return internal::TruncateOptionalString16(manifest.gcm_sender_id); - } - - static const GURL& start_url(const ::blink::Manifest& manifest) { - return manifest.start_url; - } - - static const GURL& scope(const ::blink::Manifest& manifest) { - return manifest.scope; - } - - static blink::mojom::DisplayMode display(const ::blink::Manifest& manifest) { - return manifest.display; - } - - static const std::vector<blink::mojom::DisplayMode> display_override( - const ::blink::Manifest& manifest) { - return manifest.display_override; - } - - static device::mojom::ScreenOrientationLockType orientation( - const ::blink::Manifest& manifest) { - return manifest.orientation; - } - - static bool has_theme_color(const ::blink::Manifest& m) { - return m.theme_color.has_value(); - } - - static uint32_t theme_color(const ::blink::Manifest& m) { - return m.theme_color.value_or(0); - } - - static bool has_background_color(const ::blink::Manifest& m) { - return m.background_color.has_value(); - } - - static uint32_t background_color(const ::blink::Manifest& m) { - return m.background_color.value_or(0); - } - - static const std::vector<::blink::Manifest::ImageResource>& icons( - const ::blink::Manifest& manifest) { - return manifest.icons; - } - - static const std::vector<::blink::Manifest::ImageResource>& screenshots( - const ::blink::Manifest& manifest) { - return manifest.screenshots; - } - - static const std::vector<::blink::Manifest::ShortcutItem>& shortcuts( - const ::blink::Manifest& manifest) { - return manifest.shortcuts; - } - - static const base::Optional<::blink::Manifest::ShareTarget>& share_target( - const ::blink::Manifest& manifest) { - return manifest.share_target; - } - - static const std::vector<::blink::Manifest::FileHandler>& file_handlers( - const ::blink::Manifest& manifest) { - return manifest.file_handlers; - } - - static const std::vector<::blink::Manifest::ProtocolHandler>& - protocol_handlers(const ::blink::Manifest& manifest) { - return manifest.protocol_handlers; - } - - static const std::vector<::blink::Manifest::UrlHandler>& url_handlers( - const ::blink::Manifest& manifest) { - return manifest.url_handlers; - } - - static const std::vector<::blink::Manifest::RelatedApplication>& - related_applications(const ::blink::Manifest& manifest) { - return manifest.related_applications; - } - - static bool prefer_related_applications(const ::blink::Manifest& manifest) { - return manifest.prefer_related_applications; - } - - static blink::mojom::CaptureLinks capture_links( - const ::blink::Manifest& manifest) { - return manifest.capture_links; - } - - static bool Read(blink::mojom::ManifestDataView data, ::blink::Manifest* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestImageResourceDataView, - ::blink::Manifest::ImageResource> { - static const GURL& src(const ::blink::Manifest::ImageResource& icon) { - return icon.src; - } - - static base::StringPiece16 type( - const ::blink::Manifest::ImageResource& icon) { - return internal::TruncateString16(icon.type); - } - static const std::vector<gfx::Size>& sizes( - const ::blink::Manifest::ImageResource& icon) { - return icon.sizes; - } - - static const std::vector<::blink::mojom::ManifestImageResource_Purpose>& - purpose(const ::blink::Manifest::ImageResource& icon) { - return icon.purpose; - } - - static bool Read(blink::mojom::ManifestImageResourceDataView data, - ::blink::Manifest::ImageResource* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestShortcutItemDataView, - ::blink::Manifest::ShortcutItem> { - static base::StringPiece16 name( - const ::blink::Manifest::ShortcutItem& shortcut) { - return internal::TruncateString16(shortcut.name); - } - - static base::Optional<base::StringPiece16> short_name( - const ::blink::Manifest::ShortcutItem& shortcut) { - return internal::TruncateOptionalString16(shortcut.short_name); - } - - static base::Optional<base::StringPiece16> description( - const ::blink::Manifest::ShortcutItem& shortcut) { - return internal::TruncateOptionalString16(shortcut.description); - } - - static const GURL& url(const ::blink::Manifest::ShortcutItem& shortcut) { - return shortcut.url; - } - - static const std::vector<::blink::Manifest::ImageResource>& icons( - const ::blink::Manifest::ShortcutItem& shortcut) { - return shortcut.icons; - } - - static bool Read(blink::mojom::ManifestShortcutItemDataView data, - ::blink::Manifest::ShortcutItem* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestRelatedApplicationDataView, - ::blink::Manifest::RelatedApplication> { - static base::Optional<base::StringPiece16> platform( - const ::blink::Manifest::RelatedApplication& related_application) { - return internal::TruncateOptionalString16(related_application.platform); - } - - static const GURL& url( - const ::blink::Manifest::RelatedApplication& related_application) { - return related_application.url; - } - - static base::Optional<base::StringPiece16> id( - const ::blink::Manifest::RelatedApplication& related_application) { - return internal::TruncateOptionalString16(related_application.id); - } - - static bool Read(blink::mojom::ManifestRelatedApplicationDataView data, - ::blink::Manifest::RelatedApplication* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestFileFilterDataView, - ::blink::Manifest::FileFilter> { - static base::StringPiece16 name( - const ::blink::Manifest::FileFilter& share_target_file) { - return internal::TruncateString16(share_target_file.name); - } - - static const std::vector<base::StringPiece16> accept( - const ::blink::Manifest::FileFilter& share_target_file) { - std::vector<base::StringPiece16> accept_types; - - for (const base::string16& accept_type : share_target_file.accept) - accept_types.push_back(internal::TruncateString16(accept_type)); - - return accept_types; - } - - static bool Read(blink::mojom::ManifestFileFilterDataView data, - ::blink::Manifest::FileFilter* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestUrlHandlerDataView, - ::blink::Manifest::UrlHandler> { - static const url::Origin& origin( - const ::blink::Manifest::UrlHandler& url_handler) { - return url_handler.origin; - } - - static bool Read(blink::mojom::ManifestUrlHandlerDataView data, - ::blink::Manifest::UrlHandler* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestShareTargetParamsDataView, - ::blink::Manifest::ShareTargetParams> { - static const base::Optional<base::StringPiece16> text( - const ::blink::Manifest::ShareTargetParams& share_target_params) { - return internal::TruncateOptionalString16(share_target_params.text); - } - static const base::Optional<base::StringPiece16> title( - const ::blink::Manifest::ShareTargetParams& share_target_params) { - return internal::TruncateOptionalString16(share_target_params.title); - } - static const base::Optional<base::StringPiece16> url( - const ::blink::Manifest::ShareTargetParams& share_target_params) { - return internal::TruncateOptionalString16(share_target_params.url); - } - static const std::vector<blink::Manifest::FileFilter>& files( - const ::blink::Manifest::ShareTargetParams& share_target_params) { - return share_target_params.files; - } - - static bool Read(blink::mojom::ManifestShareTargetParamsDataView data, - ::blink::Manifest::ShareTargetParams* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestShareTargetDataView, - ::blink::Manifest::ShareTarget> { - static const GURL& action( - const ::blink::Manifest::ShareTarget& share_target) { - return share_target.action; - } - static ::blink::mojom::ManifestShareTarget_Method method( - const ::blink::Manifest::ShareTarget& share_target) { - return share_target.method; - } - static ::blink::mojom::ManifestShareTarget_Enctype enctype( - const ::blink::Manifest::ShareTarget& share_target) { - return share_target.enctype; - } - static const ::blink::Manifest::ShareTargetParams& params( - const ::blink::Manifest::ShareTarget& share_target) { - return share_target.params; - } - static bool Read(blink::mojom::ManifestShareTargetDataView data, - ::blink::Manifest::ShareTarget* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestFileHandlerDataView, - ::blink::Manifest::FileHandler> { - static const GURL& action(const ::blink::Manifest::FileHandler& entry) { - return entry.action; - } - - static const base::string16& name( - const ::blink::Manifest::FileHandler& entry) { - return entry.name; - } - - static const std::map<base::string16, std::vector<base::string16>>& accept( - const ::blink::Manifest::FileHandler& entry) { - return entry.accept; - } - - static bool Read(blink::mojom::ManifestFileHandlerDataView data, - ::blink::Manifest::FileHandler* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ManifestProtocolHandlerDataView, - ::blink::Manifest::ProtocolHandler> { - static base::StringPiece16 protocol( - const ::blink::Manifest::ProtocolHandler& protocol) { - return internal::TruncateString16(protocol.protocol); - } - static const GURL& url(const ::blink::Manifest::ProtocolHandler& protocol) { - return protocol.url; - } - static bool Read(blink::mojom::ManifestProtocolHandlerDataView data, - ::blink::Manifest::ProtocolHandler* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MANIFEST_MANIFEST_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/media/OWNERS b/chromium/src/third_party/blink/public/common/media/OWNERS deleted file mode 100644 index 168af18..0000000 --- a/chromium/src/third_party/blink/public/common/media/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://media/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/media/video_capture.h b/chromium/src/third_party/blink/public/common/media/video_capture.h deleted file mode 100644 index a7e49af..0000000 --- a/chromium/src/third_party/blink/public/common/media/video_capture.h +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright (c) 2011 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. -// -// This file contains commonly used definitions of video capture. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_VIDEO_CAPTURE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_VIDEO_CAPTURE_H_ - -#include "base/callback.h" -#include "media/base/video_frame_feedback.h" -#include "media/capture/video_capture_types.h" -#include "media/capture/video_capturer_source.h" - -namespace blink { - -using VideoCaptureDeviceFormatsCB = - media::VideoCapturerSource::VideoCaptureDeviceFormatsCB; - -using VideoCaptureDeliverFrameCB = - media::VideoCapturerSource::VideoCaptureDeliverFrameCB; - -using VideoCaptureFeedbackCB = media::VideoCaptureFeedbackCB; - -// Current status of the video capture device. It's used by multiple classes in -// browser process and renderer process. Browser process sends information about -// the current capture state and error to the renderer process using this type. -enum VideoCaptureState { - VIDEO_CAPTURE_STATE_STARTING, - VIDEO_CAPTURE_STATE_STARTED, - VIDEO_CAPTURE_STATE_PAUSED, - VIDEO_CAPTURE_STATE_RESUMED, - VIDEO_CAPTURE_STATE_STOPPING, - VIDEO_CAPTURE_STATE_STOPPED, - VIDEO_CAPTURE_STATE_ERROR, - VIDEO_CAPTURE_STATE_ENDED, - VIDEO_CAPTURE_STATE_LAST = VIDEO_CAPTURE_STATE_ENDED -}; - -using VideoCaptureStateUpdateCB = - base::RepeatingCallback<void(VideoCaptureState)>; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_VIDEO_CAPTURE_H_
diff --git a/chromium/src/third_party/blink/public/common/media/watch_time_reporter.h b/chromium/src/third_party/blink/public/common/media/watch_time_reporter.h deleted file mode 100644 index 6ae896c..0000000 --- a/chromium/src/third_party/blink/public/common/media/watch_time_reporter.h +++ /dev/null
@@ -1,273 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_REPORTER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_REPORTER_H_ - -#include <vector> - -#include "base/callback.h" -#include "base/power_monitor/power_observer.h" -#include "base/sequenced_task_runner.h" -#include "base/time/time.h" -#include "base/timer/timer.h" -#include "media/base/audio_codecs.h" -#include "media/base/media_log.h" -#include "media/base/timestamp_constants.h" -#include "media/base/video_codecs.h" -#include "media/mojo/mojom/media_metrics_provider.mojom.h" -#include "media/mojo/mojom/watch_time_recorder.mojom.h" -#include "mojo/public/cpp/bindings/remote.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/media/display_type.h" -#include "third_party/blink/public/common/media/watch_time_component.h" -#include "ui/gfx/geometry/size.h" -#include "url/origin.h" - -namespace media { -class WatchTimeReporterTest; -} - -namespace blink { - -// Class for monitoring and reporting watch time in response to various state -// changes during the playback of media. We record metrics for audio only -// playbacks as well as video only or audio+video playbacks of sufficient size. -// -// Watch time for our purposes is defined as the amount of elapsed media time. -// Any amount of elapsed time is reported to the WatchTimeRecorder, but only -// amounts above limits::kMinimumElapsedWatchTimeSecs are reported to UMA. Watch -// time is checked every 5 seconds from then on and reported to multiple -// buckets: All, MSE, SRC, EME, AC, and battery. -// -// Either of paused or muted is sufficient to stop watch time metric reports. -// Each of these has a hysteresis where if the state change is undone within 5 -// seconds, the watch time will be counted as uninterrupted. -// -// There are both foreground and background buckets for watch time. E.g., when -// media goes into the background foreground collection stops and background -// collection starts. As with other events, there is hysteresis on change -// between the foreground and background. -// -// Similarly, there are both muted and unmuted buckets for watch time. E.g., if -// a playback is muted the unmuted collection stops and muted collection starts. -// As with other events, there is hysteresis between mute and unmute. -// -// Power events (on/off battery power), native controls changes, or display type -// changes have a similar hysteresis, but unlike the aforementioned properties, -// will not stop metric collection. -// -// Each seek event will result in a new watch time metric being started and the -// old metric finalized as accurately as possible. -class BLINK_COMMON_EXPORT WatchTimeReporter : base::PowerObserver { - public: - using GetMediaTimeCB = base::RepeatingCallback<base::TimeDelta(void)>; - using GetPipelineStatsCB = - base::RepeatingCallback<media::PipelineStatistics(void)>; - - // Constructor for the reporter; all requested metadata should be fully known - // before attempting construction as incorrect values will result in the wrong - // watch time metrics being reported. - // - // |properties| Properties describing the playback; these are considered - // immutable over the lifetime of the reporter. If any of them change a new - // WatchTimeReporter should be created with updated properties. - // - // |get_media_time_cb| must return the current playback time in terms of media - // time, not wall clock time! Using media time instead of wall clock time - // allows us to avoid a whole class of issues around clock changes during - // suspend and resume. - // - // |provider| A provider of mojom::WatchTimeRecorder instances which will be - // created and used to handle caching of metrics outside of the current - // process. - // - // TODO(dalecurtis): Should we only report when rate == 1.0? Should we scale - // the elapsed media time instead? - WatchTimeReporter(media::mojom::PlaybackPropertiesPtr properties, - const gfx::Size& natural_size, - GetMediaTimeCB get_media_time_cb, - GetPipelineStatsCB get_pipeline_stats_cb, - media::mojom::MediaMetricsProvider* provider, - scoped_refptr<base::SequencedTaskRunner> task_runner, - const base::TickClock* tick_clock = nullptr); - ~WatchTimeReporter() override; - - // These methods are used to ensure that watch time is only reported for media - // that is actually playing. They should be called whenever the media starts - // or stops playing for any reason. If the media is currently hidden, - // OnPlaying() will start background watch time reporting. - void OnPlaying(); - void OnPaused(); - - // This will immediately finalize any outstanding watch time reports and stop - // the reporting timer. Clients should call OnPlaying() upon seek completion - // to restart the reporting timer. - void OnSeeking(); - - // This method is used to ensure that watch time is only reported for media - // that is actually audible to the user. It should be called whenever the - // volume changes. - // - // Note: This does not catch all cases. E.g., headphones that are not being - // listened too, or even OS level volume state. - void OnVolumeChange(double volume); - - // These methods are used to ensure that watch time is only reported for media - // that is actually visible to the user. They should be called when the media - // is shown or hidden respectively. OnHidden() will start background watch - // time reporting. - void OnShown(); - void OnHidden(); - - // Called when a playback ends in error. - void OnError(media::PipelineStatus status); - - // Indicates a rebuffering event occurred during playback. When watch time is - // finalized the total watch time for a given category will be divided by the - // number of rebuffering events. Reset to zero after a finalize event. - void OnUnderflow(); - void OnUnderflowComplete(base::TimeDelta elapsed); - - // These methods are used to ensure that the watch time is reported relative - // to whether the media is using native controls. - void OnNativeControlsEnabled(); - void OnNativeControlsDisabled(); - - // These methods are used to ensure that the watch time is reported relative - // to the display type of the media. - void OnDisplayTypeInline(); - void OnDisplayTypeFullscreen(); - void OnDisplayTypePictureInPicture(); - - // Mutates various properties that may change over the lifetime of a playback - // but for which we don't want to interrupt reporting for. UMA watch time will - // not be interrupted by changes to these properties, while UKM will. - // - // Note: Both UMA and UMK watch time will be interrupted if the natural size - // transitions above/below kMinimumVideoSize. - void UpdateSecondaryProperties( - media::mojom::SecondaryPlaybackPropertiesPtr secondary_properties); - - // Notifies the autoplay status of the playback. Must not be called multiple - // times with different values. - void SetAutoplayInitiated(bool autoplay_initiated); - - // Updates the duration maintained by the recorder. May be called any number - // of times during playback. - void OnDurationChanged(base::TimeDelta duration); - - private: - friend class media::WatchTimeReporterTest; - - // Internal constructor for marking background status. - WatchTimeReporter(media::mojom::PlaybackPropertiesPtr properties, - bool is_background, - bool is_muted, - const gfx::Size& natural_size, - GetMediaTimeCB get_media_time_cb, - GetPipelineStatsCB get_pipeline_stats_cb, - media::mojom::MediaMetricsProvider* provider, - scoped_refptr<base::SequencedTaskRunner> task_runner, - const base::TickClock* tick_clock); - - // base::PowerObserver implementation. - // - // We only observe power source changes. We don't need to observe suspend and - // resume events because we report watch time in terms of elapsed media time - // and not in terms of elapsed real time. - void OnPowerStateChange(bool on_battery_power) override; - void OnNativeControlsChanged(bool has_native_controls); - void OnDisplayTypeChanged(DisplayType display_type); - - bool ShouldReportWatchTime() const; - bool ShouldReportingTimerRun() const; - void MaybeStartReportingTimer(base::TimeDelta start_timestamp); - enum class FinalizeTime { IMMEDIATELY, ON_NEXT_UPDATE }; - void MaybeFinalizeWatchTime(FinalizeTime finalize_time); - void RestartTimerForHysteresis(); - - // UpdateWatchTime() both records watch time and processes any finalize event. - void RecordWatchTime(); - void UpdateWatchTime(); - - void ResetUnderflowState(); - - // Helper methods for creating the components that make up the watch time - // report. All components except the base component require a creation method - // and a conversion method to get the correct WatchTimeKey. - std::unique_ptr<WatchTimeComponent<bool>> CreateBaseComponent(); - std::unique_ptr<WatchTimeComponent<bool>> CreatePowerComponent(); - media::WatchTimeKey GetPowerKey(bool is_on_battery_power); - std::unique_ptr<WatchTimeComponent<bool>> CreateControlsComponent(); - media::WatchTimeKey GetControlsKey(bool has_native_controls); - std::unique_ptr<WatchTimeComponent<DisplayType>> CreateDisplayTypeComponent(); - media::WatchTimeKey GetDisplayTypeKey(DisplayType display_type); - - // Initialized during construction. - const media::mojom::PlaybackPropertiesPtr properties_; - const bool is_background_; - const bool is_muted_; - const GetMediaTimeCB get_media_time_cb_; - const GetPipelineStatsCB get_pipeline_stats_cb_; - mojo::Remote<media::mojom::WatchTimeRecorder> recorder_; - - // The amount of time between each UpdateWatchTime(); this is the frequency by - // which the watch times are updated. In the event of a process crash or kill - // this is also the most amount of watch time that we might lose. - base::TimeDelta reporting_interval_ = base::TimeDelta::FromSeconds(5); - - base::RepeatingTimer reporting_timer_; - - // Updated by the OnXXX() methods above; controls timer state. - bool is_playing_ = false; - bool is_visible_ = true; - bool is_seeking_ = false; - bool in_shutdown_ = false; - bool has_valid_start_timestamp_ = false; - double volume_ = 1.0; - - // Updated by UpdateSecondaryProperties(); controls timer state when - // transitioning above/below kMinimumVideoSize. - gfx::Size natural_size_; - - int total_underflow_count_ = 0; - int total_completed_underflow_count_ = 0; - base::TimeDelta total_underflow_duration_; - struct UnderflowEvent { - bool reported = false; - base::TimeDelta timestamp = media::kNoTimestamp; - base::TimeDelta duration = media::kNoTimestamp; - }; - std::vector<UnderflowEvent> pending_underflow_events_; - - media::PipelineStatistics initial_stats_; - media::PipelineStatistics last_stats_; - - // The various components making up WatchTime. If the |base_component_| is - // finalized, all reporting will be stopped and finalized using its ending - // timestamp. - // - // Note: If you are adding a new type of component (i.e., one that is not - // bool, etc) you must also update the end of the WatchTimeComponent .cc file - // to add a new template class definition or you will get linking errors. - std::unique_ptr<WatchTimeComponent<bool>> base_component_; - std::unique_ptr<WatchTimeComponent<bool>> power_component_; - std::unique_ptr<WatchTimeComponent<DisplayType>> display_type_component_; - std::unique_ptr<WatchTimeComponent<bool>> controls_component_; - - // Special case reporter for handling background video watch time. Configured - // as an audio only WatchTimeReporter with |is_background_| set to true. - std::unique_ptr<WatchTimeReporter> background_reporter_; - - // Similar to the above, but for muted audio+video watch time. Configured as - // an audio+video WatchTimeReporter with |is_muted_| set to true. - std::unique_ptr<WatchTimeReporter> muted_reporter_; - - DISALLOW_COPY_AND_ASSIGN(WatchTimeReporter); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_REPORTER_H_
diff --git a/chromium/src/third_party/blink/public/common/mediastream/OWNERS b/chromium/src/third_party/blink/public/common/mediastream/OWNERS deleted file mode 100644 index 7653ee4..0000000 --- a/chromium/src/third_party/blink/public/common/mediastream/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -guidou@chromium.org -hbos@chromium.org - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/mediastream/media_devices.h b/chromium/src/third_party/blink/public/common/mediastream/media_devices.h deleted file mode 100644 index 5719648..0000000 --- a/chromium/src/third_party/blink/public/common/mediastream/media_devices.h +++ /dev/null
@@ -1,57 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_DEVICES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_DEVICES_H_ - -#include <string> -#include <vector> - -#include "base/optional.h" -#include "media/base/video_facing.h" -#include "media/capture/video/video_capture_device_descriptor.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/mediastream/media_devices.mojom-shared.h" - -namespace blink { - -struct BLINK_COMMON_EXPORT WebMediaDeviceInfo { - WebMediaDeviceInfo(); - WebMediaDeviceInfo(const WebMediaDeviceInfo& other); - WebMediaDeviceInfo(WebMediaDeviceInfo&& other); - WebMediaDeviceInfo( - const std::string& device_id, - const std::string& label, - const std::string& group_id, - const media::VideoCaptureControlSupport& video_control_support = - media::VideoCaptureControlSupport(), - blink::mojom::FacingMode video_facing = blink::mojom::FacingMode::NONE); - explicit WebMediaDeviceInfo( - const media::VideoCaptureDeviceDescriptor& descriptor); - ~WebMediaDeviceInfo(); - WebMediaDeviceInfo& operator=(const WebMediaDeviceInfo& other); - WebMediaDeviceInfo& operator=(WebMediaDeviceInfo&& other); - - std::string device_id; - std::string label; - std::string group_id; - media::VideoCaptureControlSupport video_control_support; - blink::mojom::FacingMode video_facing = blink::mojom::FacingMode::NONE; -}; - -using WebMediaDeviceInfoArray = std::vector<WebMediaDeviceInfo>; - -BLINK_COMMON_EXPORT bool operator==(const WebMediaDeviceInfo& first, - const WebMediaDeviceInfo& second); - -inline bool IsValidMediaDeviceType(mojom::MediaDeviceType type) { - return static_cast<size_t>(type) >= 0 && - static_cast<size_t>(type) < - static_cast<size_t>( - mojom::MediaDeviceType::NUM_MEDIA_DEVICE_TYPES); -} - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_DEVICES_H_
diff --git a/chromium/src/third_party/blink/public/common/mediastream/media_stream_mojom_traits.h b/chromium/src/third_party/blink/public/common/mediastream/media_stream_mojom_traits.h deleted file mode 100644 index 03fc263..0000000 --- a/chromium/src/third_party/blink/public/common/mediastream/media_stream_mojom_traits.h +++ /dev/null
@@ -1,117 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/mediastream/media_stream_controls.h" -#include "third_party/blink/public/common/mediastream/media_stream_request.h" -#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-forward.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::MediaStreamDeviceDataView, - blink::MediaStreamDevice> { - static const blink::mojom::MediaStreamType& type( - const blink::MediaStreamDevice& device) { - return device.type; - } - - static const std::string& id(const blink::MediaStreamDevice& device) { - return device.id; - } - - static const media::VideoFacingMode& video_facing( - const blink::MediaStreamDevice& device) { - return device.video_facing; - } - - static const base::Optional<std::string>& group_id( - const blink::MediaStreamDevice& device) { - return device.group_id; - } - - static const base::Optional<std::string>& matched_output_device_id( - const blink::MediaStreamDevice& device) { - return device.matched_output_device_id; - } - - static const std::string& name(const blink::MediaStreamDevice& device) { - return device.name; - } - - static const media::AudioParameters& input( - const blink::MediaStreamDevice& device) { - return device.input; - } - - static const base::Optional<base::UnguessableToken>& session_id( - const blink::MediaStreamDevice& device) { - return device.serializable_session_id(); - } - - static const base::Optional<media::mojom::DisplayMediaInformationPtr>& - display_media_info(const blink::MediaStreamDevice& device) { - return device.display_media_info; - } - - static bool Read(blink::mojom::MediaStreamDeviceDataView input, - blink::MediaStreamDevice* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::TrackControlsDataView, blink::TrackControls> { - static bool requested(const blink::TrackControls& controls) { - return controls.requested; - } - - static const blink::mojom::MediaStreamType& stream_type( - const blink::TrackControls& controls) { - return controls.stream_type; - } - - static const std::string& device_id(const blink::TrackControls& controls) { - return controls.device_id; - } - - static bool Read(blink::mojom::TrackControlsDataView input, - blink::TrackControls* out); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::StreamControlsDataView, blink::StreamControls> { - static const blink::TrackControls& audio( - const blink::StreamControls& controls) { - return controls.audio; - } - - static const blink::TrackControls& video( - const blink::StreamControls& controls) { - return controls.video; - } - - static bool hotword_enabled(const blink::StreamControls& controls) { - return controls.hotword_enabled; - } - - static bool disable_local_echo(const blink::StreamControls& controls) { - return controls.disable_local_echo; - } - - static bool request_pan_tilt_zoom_permission( - const blink::StreamControls& controls) { - return controls.request_pan_tilt_zoom_permission; - } - - static bool Read(blink::mojom::StreamControlsDataView input, - blink::StreamControls* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/mediastream/media_stream_request.h b/chromium/src/third_party/blink/public/common/mediastream/media_stream_request.h deleted file mode 100644 index 0eb1310..0000000 --- a/chromium/src/third_party/blink/public/common/mediastream/media_stream_request.h +++ /dev/null
@@ -1,129 +0,0 @@ -// Copyright (c) 2012 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_REQUEST_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_REQUEST_H_ - -#include <stddef.h> - -#include <memory> -#include <string> -#include <vector> - -#include "base/callback_forward.h" -#include "base/unguessable_token.h" -#include "media/base/audio_parameters.h" -#include "media/base/video_facing.h" -#include "media/capture/video/video_capture_device_descriptor.h" -#include "media/mojo/mojom/display_media_information.mojom.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/mediastream/media_stream.mojom-shared.h" - -namespace blink { - - -// Types of media stream requests that can be made to the media controller. -enum MediaStreamRequestType { - MEDIA_DEVICE_ACCESS = 0, - MEDIA_DEVICE_UPDATE, - MEDIA_GENERATE_STREAM, - MEDIA_OPEN_DEVICE_PEPPER_ONLY // Only used in requests made by Pepper. -}; - -// Convenience predicates to determine whether the given type represents some -// audio or some video device. -BLINK_COMMON_EXPORT bool IsAudioInputMediaType(mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsVideoInputMediaType(mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsScreenCaptureMediaType(mojom::MediaStreamType type); -// Whether the |type| captures anything on the screen. -BLINK_COMMON_EXPORT bool IsVideoScreenCaptureMediaType( - mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsDesktopCaptureMediaType(mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsVideoDesktopCaptureMediaType( - mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsTabCaptureMediaType(mojom::MediaStreamType type); -BLINK_COMMON_EXPORT bool IsDeviceMediaType(mojom::MediaStreamType type); - -// TODO(xians): Change the structs to classes. -// Represents one device in a request for media stream(s). -struct BLINK_COMMON_EXPORT MediaStreamDevice { - MediaStreamDevice(); - MediaStreamDevice(mojom::MediaStreamType type, - const std::string& id, - const std::string& name); - MediaStreamDevice( - mojom::MediaStreamType type, - const std::string& id, - const std::string& name, - const media::VideoCaptureControlSupport& control_support, - media::VideoFacingMode facing, - const base::Optional<std::string>& group_id = base::nullopt); - MediaStreamDevice(mojom::MediaStreamType type, - const std::string& id, - const std::string& name, - int sample_rate, - int channel_layout, - int frames_per_buffer); - MediaStreamDevice(const MediaStreamDevice& other); - ~MediaStreamDevice(); - - MediaStreamDevice& operator=(const MediaStreamDevice& other); - - bool IsSameDevice(const MediaStreamDevice& other_device) const; - - base::UnguessableToken session_id() const { - return session_id_ ? *session_id_ : base::UnguessableToken(); - } - - const base::Optional<base::UnguessableToken>& serializable_session_id() - const { - return session_id_; - } - - void set_session_id(const base::UnguessableToken& session_id) { - session_id_ = session_id.is_empty() - ? base::Optional<base::UnguessableToken>() - : session_id; - } - - // The device's type. - mojom::MediaStreamType type; - - // The device's unique ID. - std::string id; - - // The control support for video capture device. - media::VideoCaptureControlSupport video_control_support; - - // The facing mode for video capture device. - media::VideoFacingMode video_facing; - - // The device's group ID. - base::Optional<std::string> group_id; - - // The device id of a matched output device if any (otherwise empty). - // Only applicable to audio devices. - base::Optional<std::string> matched_output_device_id; - - // The device's "friendly" name. Not guaranteed to be unique. - std::string name; - - // Contains the device properties of the capture device. It's valid only when - // the type of device is audio (i.e. IsAudioInputMediaType returns true). - media::AudioParameters input = - media::AudioParameters::UnavailableDeviceParams(); - - // This field is optional and available only for display media devices. - base::Optional<media::mojom::DisplayMediaInformationPtr> display_media_info; - - private: - // Id for this capture session. Unique for all sessions of the same type. - base::Optional<base::UnguessableToken> session_id_; // = kNoId; -}; - -using MediaStreamDevices = std::vector<MediaStreamDevice>; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIASTREAM_MEDIA_STREAM_REQUEST_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/DIR_METADATA b/chromium/src/third_party/blink/public/common/messaging/DIR_METADATA deleted file mode 100644 index 169c29b..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/DIR_METADATA +++ /dev/null
@@ -1,5 +0,0 @@ -monorail { - component: "Blink>Messaging" -} - -team_email: "platform-architecture-dev@chromium.org"
diff --git a/chromium/src/third_party/blink/public/common/messaging/OWNERS b/chromium/src/third_party/blink/public/common/messaging/OWNERS deleted file mode 100644 index 4ab3b00..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/OWNERS +++ /dev/null
@@ -1,7 +0,0 @@ -mek@chromium.org -jbroman@chromium.org - -per-file *.mojom=set noparent -per-file *.mojom=file://ipc/SECURITY_OWNERS -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/messaging/cloneable_message.h b/chromium/src/third_party/blink/public/common/messaging/cloneable_message.h deleted file mode 100644 index ca857a3..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/cloneable_message.h +++ /dev/null
@@ -1,84 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_H_ - -#include <vector> - -#include "base/containers/span.h" -#include "base/macros.h" -#include "base/optional.h" -#include "base/unguessable_token.h" -#include "mojo/public/cpp/bindings/struct_ptr.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/blob/serialized_blob.mojom.h" -#include "third_party/blink/public/mojom/file_system_access/file_system_access_transfer_token.mojom.h" -#include "url/origin.h" - -namespace blink { - -// This struct represents messages as they are posted over a broadcast channel. -// This type can be serialized as a blink::mojom::CloneableMessage struct. -struct BLINK_COMMON_EXPORT CloneableMessage { - CloneableMessage(); - CloneableMessage(CloneableMessage&&); - CloneableMessage& operator=(CloneableMessage&&); - ~CloneableMessage(); - - // Returns a shallow clone of this message. |encoded_message| in the clone - // will point to the same memory as |encoded_message| in this. - CloneableMessage ShallowClone() const; - - // To reduce copies when serializing |encoded_message| does not have to point - // to |owned_encoded_message|. The serialization code completely ignores the - // |owned_encoded_message| and just serializes whatever |encoded_message| - // points to. When deserializing |owned_encoded_message| is set to the data - // and |encoded_message| is set to point to |owned_encoded_message|. - base::span<const uint8_t> encoded_message; - std::vector<uint8_t> owned_encoded_message; - - // Copies data into owned_encoded_message if it's not already there. - void EnsureDataIsOwned(); - - // Blob handles for any blobs being sent in this message. - std::vector<mojom::SerializedBlobPtr> blobs; - - // Populated by message senders to prevent remote origins from accessing - // |file_system_access_tokens|. Tokens from a remote origin must fail by - // dispatching a 'messageerror' event instead of a 'message' event. If - // somehow a compromised process bypasses this origin check, the - // FileSystemAccessManager in the browser process performs another origin - // check that will prevent the use of remote origin FileSystemAccessHandles. - // - // The message sender may leave |sender_origin| null. When |sender_origin| is - // null, the message receiver must handle the message like it is from an - // unknown remote origin by dispatching the 'messageerror' event when - // |file_system_access_tokens| is not an empty array. - base::Optional<url::Origin> sender_origin; - - // Stack trace captured by sender. - // For more details see v8_inspector::V8StackTraceId. - uint64_t stack_trace_id = 0; - int64_t stack_trace_debugger_id_first = 0; - int64_t stack_trace_debugger_id_second = 0; - bool stack_trace_should_pause = false; - - // If not null, this message is locked to the given agent cluster ID. - // See - // https://html.spec.whatwg.org/multipage/webappapis.html#integration-with-the-javascript-agent-cluster-formalism - base::Optional<base::UnguessableToken> locked_agent_cluster_id; - - // Tokens required to clone FileSystemFileHandles and/or - // FileSystemDirectoryHandles. - std::vector<mojo::PendingRemote<mojom::FileSystemAccessTransferToken>> - file_system_access_tokens; - - private: - DISALLOW_COPY_AND_ASSIGN(CloneableMessage); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/cloneable_message_mojom_traits.h b/chromium/src/third_party/blink/public/common/messaging/cloneable_message_mojom_traits.h deleted file mode 100644 index 8b8efdf..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/cloneable_message_mojom_traits.h +++ /dev/null
@@ -1,68 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_MOJOM_TRAITS_H_ - -#include "mojo/public/cpp/base/big_buffer.h" -#include "mojo/public/cpp/base/unguessable_token_mojom_traits.h" -#include "third_party/blink/public/common/messaging/cloneable_message.h" -#include "third_party/blink/public/mojom/messaging/cloneable_message.mojom.h" -#include "url/mojom/origin_mojom_traits.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::CloneableMessage::DataView, - blink::CloneableMessage> { - static mojo_base::BigBufferView encoded_message( - blink::CloneableMessage& input); - - static std::vector<blink::mojom::SerializedBlobPtr>& blobs( - blink::CloneableMessage& input) { - return input.blobs; - } - - static const base::Optional<url::Origin>& sender_origin( - const blink::CloneableMessage& input) { - return input.sender_origin; - } - - static uint64_t stack_trace_id(const blink::CloneableMessage& input) { - return input.stack_trace_id; - } - - static int64_t stack_trace_debugger_id_first( - const blink::CloneableMessage& input) { - return input.stack_trace_debugger_id_first; - } - - static int64_t stack_trace_debugger_id_second( - const blink::CloneableMessage& input) { - return input.stack_trace_debugger_id_second; - } - - static bool stack_trace_should_pause(const blink::CloneableMessage& input) { - return input.stack_trace_should_pause; - } - - static const base::Optional<base::UnguessableToken>& locked_agent_cluster_id( - const blink::CloneableMessage& input) { - return input.locked_agent_cluster_id; - } - - static bool Read(blink::mojom::CloneableMessage::DataView data, - blink::CloneableMessage* out); - - static std::vector< - mojo::PendingRemote<blink::mojom::FileSystemAccessTransferToken>>& - file_system_access_tokens(blink::CloneableMessage& input) { - return input.file_system_access_tokens; - } -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_CLONEABLE_MESSAGE_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/message_port_descriptor.h b/chromium/src/third_party/blink/public/common/messaging/message_port_descriptor.h deleted file mode 100644 index 1583b89..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/message_port_descriptor.h +++ /dev/null
@@ -1,261 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_MESSAGE_PORT_DESCRIPTOR_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_MESSAGE_PORT_DESCRIPTOR_H_ - -#include "base/unguessable_token.h" -#include "mojo/public/cpp/system/message_pipe.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -class ExecutionContext; - -// Defines a message port descriptor, which is a mojo::MessagePipeHandle and -// some associated state which follows the handle around as it is passed from -// one execution context to another. This can be serialized into a -// mojom::MessagePortDescriptor using MessagePortDescriptorStructTraits. Since -// this class uses only POD and Mojo types the same serialization logic is fine -// for use both inside and outside of Blink. This type is move-only so that only -// a single representation of an endpoint can exist at any moment in time. -// This class is not thread-safe, but a MessagePortDescriptor is only ever owned -// by a single thread at a time. -// -// A MessagePortDescriptor should never be created in isolation, but rather they -// should only be created in pairs via MessagePortDescriptorPair. -// -// To enforce that a Mojo pipe isn't left dangling, MessagePortDescriptors -// enforce that they are only destroyed while holding onto their pipe. -// -// This class is intended to be used as follows: -// -// MessagePortDescriptorPair port_pair; -// MessagePortDescriptor port0 = port_pair.TakePort0(); -// MessagePortDescriptor port1 = port_pair.TakePort1(); -// -// ... pass around the port descriptors in TransferableMessages as desired ... -// -// // Pass this into a MessagePortChannel for reference-counted safe-keeping. -// MessagePortChannel channel0(port0); -// -// // Entangle into a MessagePort for use in sending messages. -// MessagePort message_port; -// message_port.Entangle(channel0) -// message_port.postMessage(...); -// channel0 = message_port.Disentangle(); -// -// Note that there is a Java wrapper to this class implemented by -// org.chromium.content.browser.AppWebMessagePortDescriptor. -class BLINK_COMMON_EXPORT MessagePortDescriptor { - public: - // Delegate used to provide information about the state of message ports. - // See full class declaration below. - class InstrumentationDelegate; - - // Allows setting a singleton instrumentation delegate. This is not - // thread-safe and should be set in early Blink initialization. - static void SetInstrumentationDelegate(InstrumentationDelegate* delegate); - - MessagePortDescriptor(); - - // Disallow copying, and enforce move-only semantics. - MessagePortDescriptor(const MessagePortDescriptor& message_port) = delete; - MessagePortDescriptor(MessagePortDescriptor&& message_port); - MessagePortDescriptor& operator=(const MessagePortDescriptor& message_port) = - delete; - MessagePortDescriptor& operator=(MessagePortDescriptor&& message_port); - - ~MessagePortDescriptor(); - - // Simple accessors. - const mojo::ScopedMessagePipeHandle& handle() const { return handle_; } - const base::UnguessableToken& id() const { return id_; } - uint64_t sequence_number() const { return sequence_number_; } - - // Helper accessor for getting the underlying Mojo handle. Makes tests a - // little easier to write. - MojoHandle GetMojoHandleForTesting() const; - - // Returns true if this is a valid descriptor. - bool IsValid() const; - - // Returns true if this descriptor is currently entangled (meaning that the - // handle has been vended out via "TakeHandleToEntangle*"). - bool IsEntangled() const; - - // Returns true if this is a default initialized descriptor. - bool IsDefault() const; - - // Resets the descriptor, closing the pipe if this is a valid descriptor. - // After calling this "IsDefault" will return true. It is not valid to call - // this on a descriptor whose handle is currently entangled (taken via - // "TakeHandleToEntangle*" but not yet returned) or in the process of being - // serialized. - void Reset(); - - // These are only meant to be used for serialization, and as such the values - // should always be non-default initialized when they are called. These should - // only be called for descriptors that actually host non-default values. If - // you start serializing an object by calling any of the - // "TakeFooForSerialization" functions it is expected (and enforced by - // DCHECKs) that you will call all of them. Don't use these unless you really - // need to! - void InitializeFromSerializedValues(mojo::ScopedMessagePipeHandle handle, - const base::UnguessableToken& id, - uint64_t sequence_number); - mojo::ScopedMessagePipeHandle TakeHandleForSerialization(); - base::UnguessableToken TakeIdForSerialization(); - uint64_t TakeSequenceNumberForSerialization(); - - // The following functions are only intended to be used by classes that - // implemented message port endpoints, like blink::MessagePort (for internal - // use from content and blink), blink::WebMessagePort (for embedder use from - // C++ code) and org.chromium.content.browser.AppWebMessagePort - // (implementation of org.chromium.content_public.browser.MessagePort, which - // is intended for embedder use in Java code). - - // Intended for use by MessagePort, for binding/unbinding the handle to/from a - // mojo::Connector. The handle must be bound directly to a mojo::Connector in - // order for messages to be sent or received. MessagePort::Entangle is passed - // a MessagePortDescriptor, and takes the handle from the descriptor in order - // to bind it to the mojo::Connector. Similarly, MessagePort::Disentangle - // takes the handle back from the mojo::Connector, gives it back to the - // MessagePortDescriptor, and releases the MessagePortDescriptor to the - // caller. See MessagePort::Entangle and MessagePort::Disentangle. - mojo::ScopedMessagePipeHandle TakeHandleToEntangle( - ExecutionContext* execution_context); - - // Intended for use by WebMessagePort and the corresponding - // org.chromium.content.browser.AppWebMessagePort, which are the interfaces - // that embedders use for communicating with hosted content. - mojo::ScopedMessagePipeHandle TakeHandleToEntangleWithEmbedder(); - - // Returns a handle that was previously taken for entangling via - // "TakeHandleToEntangle*". Passing an invalid handle indicates that the - // handle was forcibly closed due to error while vended out by the descriptor. - // TODO(chrisha): Close the loop and move the connector inside of the - // descriptor, by making TakeHandleToEntangle vend a bound Connector. - void GiveDisentangledHandle(mojo::ScopedMessagePipeHandle handle); - - private: - // For access to NotifyPeer and the following constructor. - friend class MessagePortDescriptorPair; - - // Creates a new MessagePortDescriptor that wraps the provided brand new - // handle. A unique id and starting sequence number will be generated. Only - // meant to be called from MessagePortDescriptorPair. - explicit MessagePortDescriptor(mojo::ScopedMessagePipeHandle handle); - - // Helper functions for forwarding notifications to the - // InstrumentationDelegate if it exists. - void NotifyAttached(ExecutionContext* execution_context); - void NotifyAttachedToEmbedder(); - void NotifyDetached(); - void NotifyDestroyed(); - - // Checks that the serialization state of the object is valid. Only - // meaningful in DCHECK builds. - void EnsureNotSerialized() const; - void EnsureValidSerializationState() const; - - static constexpr size_t kInvalidSequenceNumber = 0; - static constexpr size_t kFirstValidSequenceNumber = 1; - - // The handle to the underlying pipe. - mojo::ScopedMessagePipeHandle handle_; - -#if DCHECK_IS_ON() - // Keeps track of serialization status. An object will explode if - // serialization is only ever half-completed. - struct SerializationState { - bool took_handle_for_serialization_ : 1; - bool took_id_for_serialization_ : 1; - bool took_sequence_number_for_serialization_ : 1; - } serialization_state_ = {}; -#endif - - // The randomly generated ID of this message handle. The ID follows this - // MessagePortDescriptor around as it is passed between execution contexts, - // and allows for bookkeeping across the various contexts. When an execution - // context entangles itself with a handle, it will report back to the browser - // the ID of the handle and the execution context as well. This allows for the - // browser to know who is talking to who. - base::UnguessableToken id_; - - // The sequence number of the instrumentation message related to this handle. - // Since these messages can arrive out of order in the browser process, this - // is used to reorder them so that consistent state can be maintained. This - // will never be zero for a valid port descriptor. - uint64_t sequence_number_ = kInvalidSequenceNumber; -}; - -// Defines a wrapped mojo::MessagePipe, containing 2 MessagePortDescriptors that -// are peers of each other. -class BLINK_COMMON_EXPORT MessagePortDescriptorPair { - public: - MessagePortDescriptorPair(); - ~MessagePortDescriptorPair(); - - const MessagePortDescriptor& port0() const { return port0_; } - const MessagePortDescriptor& port1() const { return port1_; } - - MessagePortDescriptor TakePort0() { return std::move(port0_); } - MessagePortDescriptor TakePort1() { return std::move(port1_); } - - private: - MessagePortDescriptor port0_; - MessagePortDescriptor port1_; -}; - -// A delegate used for instrumenting operations on message handle descriptors. -// These messages allow the observing entity to follow the handle endpoints as -// they travel from one execution context to another, and to know when they are -// bound. If no instrumentation delegate is provided the instrumentation is -// disabled. The implementation needs to be thread-safe. -// -// Note that the sequence numbers associated with each port will never be -// reused, and increment by exactly one for each message received. This allows -// the receiver to order incoming messages and know if a message is missing. -// NotifyMessagePortsCreated is special in that it introduces new ports and -// starts new sequence numbers. The next message received (either a PortAttached -// or PortDestroyed message) will use the subsequent sequence number. -class BLINK_COMMON_EXPORT MessagePortDescriptor::InstrumentationDelegate { - public: - virtual ~InstrumentationDelegate() = default; - - // Notifies the instrumentation that a pair of matching ports was created. - virtual void NotifyMessagePortPairCreated( - const base::UnguessableToken& port0_id, - const base::UnguessableToken& port1_id) = 0; - - // Notifies the instrumentation that a handle has been attached to an - // execution context. Note that |execution_context| should never be null, but - // it is valid for "execution_context->IsContextDestroyed()" to return true. - // Further note that this should only ever be called by blink::MessagePort. - // All other contexts should be calling NotifyMessagePortAttachedToEmbedder. - virtual void NotifyMessagePortAttached( - const base::UnguessableToken& port_id, - uint64_t sequence_number, - ExecutionContext* execution_context) = 0; - - // Notifies the instrumentation that a handle has been attached to an - // embedder. - virtual void NotifyMessagePortAttachedToEmbedder( - const base::UnguessableToken& port_id, - uint64_t sequence_number) = 0; - - // Notifies the instrumentation that a handle has been detached from an - // execution context. - virtual void NotifyMessagePortDetached(const base::UnguessableToken& port_id, - uint64_t sequence_number) = 0; - - // Notifies the instrumentation that a handle has been destroyed. - virtual void NotifyMessagePortDestroyed(const base::UnguessableToken& port_id, - uint64_t sequence_number) = 0; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_MESSAGE_PORT_DESCRIPTOR_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/string_message_codec.h b/chromium/src/third_party/blink/public/common/messaging/string_message_codec.h deleted file mode 100644 index cea9d36..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/string_message_codec.h +++ /dev/null
@@ -1,34 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_STRING_MESSAGE_CODEC_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_STRING_MESSAGE_CODEC_H_ - -#include <vector> -#include "base/containers/span.h" -#include "base/strings/string16.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -// To support exposing HTML message ports to Java, it is necessary to be able -// to encode and decode message data using the same serialization format as V8. -// That format is an implementation detail of V8, but we cannot invoke V8 in -// the browser process. Rather than IPC over to the renderer process to execute -// the V8 serialization code, we duplicate some of the serialization logic -// (just for simple string messages) here. This is a trade-off between overall -// complexity / performance and code duplication. Fortunately, we only need to -// handle string messages and this serialization format is static, as it is a -// format we currently persist to disk via IndexedDB. - -BLINK_COMMON_EXPORT std::vector<uint8_t> EncodeStringMessage( - const base::string16& data); - -BLINK_COMMON_EXPORT bool DecodeStringMessage( - base::span<const uint8_t> encoded_data, - base::string16* result); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_STRING_MESSAGE_CODEC_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/transferable_message.h b/chromium/src/third_party/blink/public/common/messaging/transferable_message.h deleted file mode 100644 index 4e717e7..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/transferable_message.h +++ /dev/null
@@ -1,51 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_TRANSFERABLE_MESSAGE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_TRANSFERABLE_MESSAGE_H_ - -#include <vector> - -#include "base/containers/span.h" -#include "base/macros.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/messaging/cloneable_message.h" -#include "third_party/blink/public/common/messaging/message_port_channel.h" -#include "third_party/blink/public/mojom/array_buffer/array_buffer_contents.mojom.h" -#include "third_party/blink/public/mojom/messaging/user_activation_snapshot.mojom.h" -#include "third_party/skia/include/core/SkBitmap.h" - -namespace blink { - -// This struct represents messages as they are posted over a message port. This -// type can be serialized as a blink::mojom::TransferableMessage struct. -struct BLINK_COMMON_EXPORT TransferableMessage : public CloneableMessage { - TransferableMessage(); - TransferableMessage(TransferableMessage&&); - TransferableMessage& operator=(TransferableMessage&&); - ~TransferableMessage(); - - // Any ports being transferred as part of this message. - std::vector<MessagePortChannel> ports; - // Channels used by transferred WHATWG streams (eg. ReadableStream). - std::vector<MessagePortChannel> stream_channels; - // The contents of any ArrayBuffers being transferred as part of this message. - std::vector<mojom::SerializedArrayBufferContentsPtr> - array_buffer_contents_array; - // The contents of any ImageBitmaps being transferred as part of this message. - std::vector<SkBitmap> image_bitmap_contents_array; - - // The state of user activation. - mojom::UserActivationSnapshotPtr user_activation; - - // Whether payment request capability is delegated to the destination frame. - bool delegate_payment_request = false; - - private: - DISALLOW_COPY_AND_ASSIGN(TransferableMessage); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_TRANSFERABLE_MESSAGE_H_
diff --git a/chromium/src/third_party/blink/public/common/messaging/web_message_port.h b/chromium/src/third_party/blink/public/common/messaging/web_message_port.h deleted file mode 100644 index 373ba20..0000000 --- a/chromium/src/third_party/blink/public/common/messaging/web_message_port.h +++ /dev/null
@@ -1,231 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_WEB_MESSAGE_PORT_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_WEB_MESSAGE_PORT_H_ - -#include <utility> - -#include "base/strings/string16.h" -#include "mojo/public/cpp/bindings/connector.h" -#include "mojo/public/cpp/bindings/message.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/messaging/message_port_descriptor.h" - -namespace blink { - -// Defines a WebMessagePort, which is used by embedders to send and receive -// messages to and from Javascript content. This is a simplified version of the -// full MessagePort concept implemented by renderer/core/messaging/message_port. -// It is a lightweight wrapper of a Mojo message pipe, and provides -// functionality for sending and receiving messages that consist of text content -// and a vector of ports, automatically handling the message serialization and -// formatting. Note the Mojo pipe is bound in SINGLE_THREADED_SEND mode. If you -// need to send more complex message types then refer to transferable_message.* -// and string_message_codec.*. -// -// Intended embedder usage is as follows: -// -// // Create a pair of ports. The two ends of the pipe are conjugates of each -// // other. -// std::pair<WebMessagePort, WebMessagePort> ports = -// WebMessagePort::CreatePair(); -// -// // Keep one end for ourselves. -// MessageReceiverImpl receiver; // Implements MessageReceiver. -// auto embedder_port = std::move(ports.first); -// embedder_port.SetReceiver(&receiver, task_runner); -// -// // Send the other end of the pipe to a WebContents. This will arrive in the -// // main frame of that WebContents. See -// // content/browser/public/message_port_provider.h for the API that allows -// // this injection. -// std::vector<MessagePortDescriptor> ports; -// ports.emplace_back(ports.second.PassPort()); -// MessagePortProvider::PostMessageToFrame( -// web_contents, ..., std::move(ports)); -// -// // The web contents can now talk back to us via |embedder_port|, and we can -// // talk back directly to it over that same pipe. -// -// Note that some embedders provide "PostMessageToFrame" functions directly on -// their wrapped WebContents equivalents (Android and Cast, for example). Also -// note that for Android embedders, there are equivalent Java interfaces defined -// in org.chromium.content_public.browser. -// -// This is a move-only type, which makes it (almost) impossible to try to send a -// port across itself (which is illegal). This doesn't explicitly prevent you -// from sending a port's conjugate port to its conjugate, but note that the -// underlying impl will close the pipe with an error if you do that. -// -// This object is not thread safe, and is intended to be used from a single -// sequence. The sequence from which it is used does not have to be the same -// sequence that the bound receiver uses. -// -// Further note that a WebMessagePort is not "reusable". That is, once it has -// been bound via SetReceiver, it is no longer transmittable (can't be passed as -// a port in part of a Message). This is enforced via runtime CHECKs. -class BLINK_COMMON_EXPORT WebMessagePort : public mojo::MessageReceiver { - public: - // See below for definitions. - struct Message; - class MessageReceiver; - - WebMessagePort(); - WebMessagePort(const WebMessagePort&) = delete; - WebMessagePort(WebMessagePort&&); - WebMessagePort& operator=(const WebMessagePort&) = delete; - WebMessagePort& operator=(WebMessagePort&&); - ~WebMessagePort() override; - - // Factory function for creating two ends of a message channel. The two ports - // are conjugates of each other. - static std::pair<WebMessagePort, WebMessagePort> CreatePair(); - - // Sets a message receiver for this message port. Once bound any incoming - // messages to this port will be routed to the provided |receiver| with - // callbacks invoked on the provided |runner|. Note that if you set a receiver - // *after* a pipe has already transitioned to being in error, you will not - // receive an "OnPipeError" callback; you should instead manually check - // "is_errored" before setting the receiver. Once a receiver has been set a - // WebMessagePort is no longer transferable. - void SetReceiver(MessageReceiver* receiver, - scoped_refptr<base::SequencedTaskRunner> runner); - - // Clears the message receiver for this message port. Without a receiver - // incoming messages will be queued on the port until a receiver is set. - // Note that it is possible that there are pending message tasks already - // posted to the previous |receiver|, thus the previous |receiver| may - // continue to be invoked after calling this. - void ClearReceiver(); - - // Returns true if this WebMessagePort currently has a receiver. - bool HasReceiver() const { return receiver_; } - - // Returns the receiver to which this WebMessagePort is bound. This can - // return nullptr if it has not been bound to a receiver. - MessageReceiver* receiver() const { return receiver_; } - - // Returns the task runner to which this WebMessagePort is bound. This can - // return nullptr if the port is not bound to a receiver. - base::SequencedTaskRunner* GetTaskRunner() const; - - // Returns true if its safe to post a message to this message port. That is, - // a receiver has been set and the pipe is open and not in an error state. - bool CanPostMessage() const; - - // Transmits a |message| over this port. If the port is in a state such that - // "CanPostMessage" returns false then the message is dropped and this will - // return false. Returns true if the message was actually accepted to be sent. - // Note that this does not guarantee delivery, as the other end of the pipe - // could be closed before the message is processed on the remote end. - bool PostMessage(Message&& message); - - // Returns true if this port is bound to a valid message pipe. - bool IsValid() const; - - // Returns true if this WebMessagePort has been closed. - bool is_closed() const { return is_closed_; } - - // Returns true if this WebMessagePort has experienced an error. - bool is_errored() const { return is_errored_; } - - // Returns true if this WebMessagePort is transferable as part of a - // Message. This is true for a brand new WebMessagePort, but becomes false - // if SetReceiver is ever called. - bool is_transferable() const { return is_transferable_; } - - // Closes this message port. This also clears the receiver, if it is set. - // After calling this "is_closed" will return true, "is_transferable" will - // return false, and "is_errored" will retain the state it had before the pipe - // was closed. This function can be called at any time, and repeatedly. - void Close(); - - // Reset this WebMessagePort to a completely default state. Similar to - // close, but also resets the "is_closed", "is_errored" and "is_transferable" - // states. Can be called at any time, and repeatedly. - void Reset(); - - // Passes out the underlying port descriptor. This port will be reset after - // calling this (all of "IsValid", "is_closed" and "is_errored" will return - // false). This can only be called if "is_transferable()" returns true. - MessagePortDescriptor PassPort(); - - private: - // Creates a message port that wraps the provided |port|. This provided |port| - // must be valid. This is private as it should only be called by message - // deserialization code, or the CreatePair factory. - explicit WebMessagePort(MessagePortDescriptor&& port); - - void Take(WebMessagePort&& other); - void OnPipeError(); - void CloseIfNecessary(); - - // mojo::MessageReceiver implementation: - bool Accept(mojo::Message* mojo_message) override; - - MessagePortDescriptor port_; - std::unique_ptr<mojo::Connector> connector_; - bool is_closed_ = true; - bool is_errored_ = false; - bool is_transferable_ = false; - MessageReceiver* receiver_ = nullptr; -}; - -// A very simple message format. This is a subset of a TransferableMessage, as -// many of the fields in the full message type aren't appropriate for messages -// originating from the embedder. -struct BLINK_COMMON_EXPORT WebMessagePort::Message { - Message(); - Message(const Message&) = delete; - Message(Message&&); - Message& operator=(const Message&) = delete; - Message& operator=(Message&&); - ~Message(); - - // Creates a message with the given |data|. - explicit Message(const base::string16& data); - - // Creates a message with the given collection of |ports| to be transferred. - explicit Message(std::vector<WebMessagePort> ports); - - // Creates a message with a single |port| to be transferred. - explicit Message(WebMessagePort&& port); - - // Creates a message with |data| and a collection of |ports| to be - // transferred. - Message(const base::string16& data, std::vector<WebMessagePort> ports); - - // Creates a message with |data| and a single |port| to be transferred. - Message(const base::string16& data, WebMessagePort port); - - // A UTF-16 message. - base::string16 data; - - // Other message ports that are to be transmitted as part of this message. - std::vector<WebMessagePort> ports; -}; - -// Interface to be implemented by receivers. -class BLINK_COMMON_EXPORT WebMessagePort::MessageReceiver { - public: - MessageReceiver(); - MessageReceiver(const MessageReceiver&) = delete; - MessageReceiver(MessageReceiver&&) = delete; - MessageReceiver& operator=(const MessageReceiver&) = delete; - MessageReceiver& operator=(MessageReceiver&&) = delete; - virtual ~MessageReceiver(); - - // Called for each incoming |message|. Returns false if the message could not - // be successfully handled, in which case the pipe should be torn-down and - // OnPipeError() invoked. - virtual bool OnMessage(Message message); - - // Invoked when the underlying pipe has experienced an error. - virtual void OnPipeError() {} -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MESSAGING_WEB_MESSAGE_PORT_H_
diff --git a/chromium/src/third_party/blink/public/common/metrics/form_element_pii_type.h b/chromium/src/third_party/blink/public/common/metrics/form_element_pii_type.h deleted file mode 100644 index 64e9486..0000000 --- a/chromium/src/third_party/blink/public/common/metrics/form_element_pii_type.h +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_METRICS_FORM_ELEMENT_PII_TYPE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_METRICS_FORM_ELEMENT_PII_TYPE_H_ - -#include <stdint.h> -#include <string> - -namespace blink { - -// PII (i.e. Personally identifiable information) type of html form element. -enum class FormElementPiiType { - kUnknown, - - kEmail, - kPhone, - - // It's some PII type, but we are currently not interested in the specific - // category. - kOthers, -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_METRICS_FORM_ELEMENT_PII_TYPE_H_
diff --git a/chromium/src/third_party/blink/public/common/mime_util/OWNERS b/chromium/src/third_party/blink/public/common/mime_util/OWNERS deleted file mode 100644 index 9825bef..0000000 --- a/chromium/src/third_party/blink/public/common/mime_util/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -asanka@chromium.org -mmenke@chromium.org -rsleevi@chromium.org
diff --git a/chromium/src/third_party/blink/public/common/mobile_metrics/mobile_friendliness.h b/chromium/src/third_party/blink/public/common/mobile_metrics/mobile_friendliness.h deleted file mode 100644 index b930c6d..0000000 --- a/chromium/src/third_party/blink/public/common/mobile_metrics/mobile_friendliness.h +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_H_ - -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -// This structure contains extracted mobile friendliness metrics from the page. -// Used for UKM logging. -struct BLINK_COMMON_EXPORT MobileFriendliness { - MobileFriendliness() = default; - MobileFriendliness(const MobileFriendliness&) = default; - - bool operator==(const MobileFriendliness& other) const; - bool operator!=(const MobileFriendliness& other) const { - return !(*this == other); - } - - // Whether <meta name="viewport" content="width=device-width"> is specified or - // not. - bool viewport_device_width = false; - - // The value specified in meta tag like <meta name="viewport" - // content="initial-scale=1.0">. - double viewport_initial_scale = 1.0; - - // The value specified in meta tag like <meta name="viewport" - // content="width=500">. - int viewport_hardcoded_width = 0; - - // Whether the page allows user to zoom in/out. - // It is specified like <meta name="viewport" content="user-scalable=no">. - bool allow_user_zoom = true; - - // Percentage of small font size text area in all text area. - int small_text_ratio = 0; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MOBILE_METRICS_MOBILE_FRIENDLINESS_H_
diff --git a/chromium/src/third_party/blink/public/common/navigation/impression.h b/chromium/src/third_party/blink/public/common/navigation/impression.h deleted file mode 100644 index 02323dc..0000000 --- a/chromium/src/third_party/blink/public/common/navigation/impression.h +++ /dev/null
@@ -1,52 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_IMPRESSION_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_IMPRESSION_H_ - -#include <stdint.h> -#include <string> - -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/origin.h" - -namespace blink { - -// An impression represents a click on an anchor tag that has special Conversion -// Measurement attributes declared. When the anchor is clicked, an impression is -// generated from these attributes and associated with the resulting navigation. -// When an action is performed on the linked site at a later date, the -// impression information is used to provide context about the initial -// navigation that resulted in that action. -// -// Used for IPC transport of WebImpression. WebImpression cannot be used -// directly as it contains non-header-only blink types. -struct BLINK_COMMON_EXPORT Impression { - Impression(); - Impression(const Impression& other); - Impression& operator=(const Impression& other); - ~Impression(); - - // Intended committed top-level origin of the resulting navigation. Must match - // the committed navigation's origin to be a valid impression. Declared by - // the impression tag. - url::Origin conversion_destination; - - // Optional origin that will receive all conversion measurement reports - // associated with this impression. Declared by the impression tag. - base::Optional<url::Origin> reporting_origin; - - // Data that will be sent in conversion reports to identify this impression. - // Declared by the impression tag. - uint64_t impression_data = 0UL; - - // Optional expiry specifying the amount of time this impression can convert. - // Declared by the impression tag. - base::Optional<base::TimeDelta> expiry; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_IMPRESSION_H_
diff --git a/chromium/src/third_party/blink/public/common/navigation/navigation_policy.h b/chromium/src/third_party/blink/public/common/navigation/navigation_policy.h deleted file mode 100644 index a55594c..0000000 --- a/chromium/src/third_party/blink/public/common/navigation/navigation_policy.h +++ /dev/null
@@ -1,93 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_NAVIGATION_POLICY_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_NAVIGATION_POLICY_H_ - -#include <bitset> - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/navigation/resource_intercept_policy.h" - -// A centralized file for base helper methods and policy decisions about -// navigations. - -namespace blink { -// Navigation type that affects the download decision and relevant metrics to be -// reported at download-discovery time. -// -// This enum backs a histogram. Please keep enums.xml up to date with any -// changes, and new entries should be appended at the end. Never re-arrange / -// re-use values. -enum class NavigationDownloadType { - // An entry reserved just for histogram. The client code is not expected to - // set or query this type in a policy. - kDefaultAllow = 0, - - kViewSource = 1, - kInterstitial = 2, - - // The navigation was initiated on a x-origin opener. - kOpenerCrossOrigin = 5, - - // The navigation was initiated from or occurred in an ad frame without user - // activation. - kAdFrameNoGesture = 8, - - // The navigation was initiated from or occurred in an ad frame. - kAdFrame = 10, - - // The navigation was initiated from or occurred in an iframe with - // |network::mojom::WebSandboxFlags::kDownloads| flag set. - kSandbox = 11, - - // The navigation was initiated without user activation. - kNoGesture = 12, - - kMaxValue = kNoGesture -}; - -// Stores the navigation types that may be of interest to the download-related -// metrics to be reported at download-discovery time. Also controls how -// navigations behave when they turn into downloads. By default, navigation is -// allowed to become a download. -struct BLINK_COMMON_EXPORT NavigationDownloadPolicy { - NavigationDownloadPolicy(); - ~NavigationDownloadPolicy(); - NavigationDownloadPolicy(const NavigationDownloadPolicy&); - - // Stores |type| to |observed_types|. - void SetAllowed(NavigationDownloadType type); - - // Stores |type| to both |observed_types| and |disallowed_types|. - void SetDisallowed(NavigationDownloadType type); - - // Returns if |observed_types| contains |type|. - bool IsType(NavigationDownloadType type) const; - - // Get the ResourceInterceptPolicy derived from |disallowed_types|. - ResourceInterceptPolicy GetResourceInterceptPolicy() const; - - // Returns if download is allowed based on |disallowed_types|. - bool IsDownloadAllowed() const; - - // Record the download policy to histograms from |observed_types|. - void RecordHistogram() const; - - // A bitset of navigation types observed that may be of interest to the - // download-related metrics to be reported at download-discovery time. - std::bitset<static_cast<size_t>(NavigationDownloadType::kMaxValue) + 1> - observed_types; - - // A bitset of navigation types observed where if the navigation turns into - // a download, the download should be dropped. - std::bitset<static_cast<size_t>(NavigationDownloadType::kMaxValue) + 1> - disallowed_types; - - bool blocking_downloads_in_sandbox_enabled = false; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_NAVIGATION_NAVIGATION_POLICY_H_
diff --git a/chromium/src/third_party/blink/public/common/net/OWNERS b/chromium/src/third_party/blink/public/common/net/OWNERS deleted file mode 100644 index fb59c70..0000000 --- a/chromium/src/third_party/blink/public/common/net/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://net/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/net/ip_address_space_util.h b/chromium/src/third_party/blink/public/common/net/ip_address_space_util.h deleted file mode 100644 index 0e21e6c..0000000 --- a/chromium/src/third_party/blink/public/common/net/ip_address_space_util.h +++ /dev/null
@@ -1,59 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_NET_IP_ADDRESS_SPACE_UTIL_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_NET_IP_ADDRESS_SPACE_UTIL_H_ - -#include "services/network/public/mojom/ip_address_space.mojom.h" -#include "services/network/public/mojom/url_response_head.mojom-forward.h" -#include "third_party/blink/public/common/common_export.h" - -class GURL; - -namespace net { - -class IPAddress; - -} // namespace net - -namespace blink { - -// Given a request URL and response information, this function calculates the -// IPAddressSpace which should be associated with documents or worker global -// scopes (collectively: request clients) instantiated from this resource. -// -// |response_head| may be nullptr. Caller retains ownership. If not nullptr, -// then |response_head->parsed_headers| must be populated with the result of -// parsing |response->headers|. -// -// WARNING: This function is defined here for proximity with related code and -// the data structures involved. However since it deals with higher-level -// concepts too (documents and worker global scopes), it should probably only be -// used at the content/ layer or above. -// -// See: https://wicg.github.io/cors-rfc1918/#address-space -// -// TODO(https://crbug.com/1134601): This implementation treats requests that -// don't use a URL loader (`about:blank`), as well as requests whose IP address -// is invalid (`about:srcdoc`, `blob:`, etc.) as `kUnknown`. This is incorrect. -// We'll eventually want to make sure we inherit from the client's creator -// in some cases), but safe, as `kUnknown` is treated the same as `kPublic`. -network::mojom::IPAddressSpace BLINK_COMMON_EXPORT CalculateClientAddressSpace( - const GURL& url, - const network::mojom::URLResponseHead* response_head); - -// Given a response URL and the IP address the requested resource was fetched -// from, this function calculates the IPAddressSpace of the requested resource. -// -// As opposed to CalculateClientAddressSpace(), this function is used to -// determine the address space of the *target* of a fetch, for comparison with -// that of the client of the fetch. -// -// See: https://wicg.github.io/cors-rfc1918/#integration-fetch -network::mojom::IPAddressSpace BLINK_COMMON_EXPORT -CalculateResourceAddressSpace(const GURL& url, const net::IPAddress& address); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_NET_IP_ADDRESS_SPACE_UTIL_H_
diff --git a/chromium/src/third_party/blink/public/common/notifications/OWNERS b/chromium/src/third_party/blink/public/common/notifications/OWNERS deleted file mode 100644 index 34d5d68..0000000 --- a/chromium/src/third_party/blink/public/common/notifications/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/notifications/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/notifications/notification_mojom_traits.h b/chromium/src/third_party/blink/public/common/notifications/notification_mojom_traits.h deleted file mode 100644 index 0f1c897..0000000 --- a/chromium/src/third_party/blink/public/common/notifications/notification_mojom_traits.h +++ /dev/null
@@ -1,166 +0,0 @@ -// Copyright 2017 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_NOTIFICATION_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_NOTIFICATION_MOJOM_TRAITS_H_ - -#include "base/containers/span.h" -#include "base/strings/string16.h" -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#include "mojo/public/cpp/base/time_mojom_traits.h" -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "skia/public/mojom/bitmap_skbitmap_mojom_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/notifications/notification_resources.h" -#include "third_party/blink/public/common/notifications/platform_notification_data.h" -#include "third_party/blink/public/mojom/notifications/notification.mojom-shared.h" -#include "url/gurl.h" -#include "url/mojom/url_gurl_mojom_traits.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::NotificationActionDataView, - blink::PlatformNotificationAction> { - static blink::mojom::NotificationActionType type( - const blink::PlatformNotificationAction& action) { - return action.type; - } - - static const std::string& action( - const blink::PlatformNotificationAction& action) { - return action.action; - } - - static const base::string16& title( - const blink::PlatformNotificationAction& action) { - return action.title; - } - - static const GURL& icon(const blink::PlatformNotificationAction& action) { - return action.icon; - } - - static const base::Optional<base::string16>& placeholder( - const blink::PlatformNotificationAction& action) { - return action.placeholder; - } - - static bool Read( - blink::mojom::NotificationActionDataView notification_action, - blink::PlatformNotificationAction* platform_notification_action); -}; - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::NotificationDataDataView, - blink::PlatformNotificationData> { - static const base::string16& title( - const blink::PlatformNotificationData& data) { - return data.title; - } - - static blink::mojom::NotificationDirection direction( - const blink::PlatformNotificationData& data) { - return data.direction; - } - - static const std::string& lang(const blink::PlatformNotificationData& data) { - return data.lang; - } - - static const base::string16& body( - const blink::PlatformNotificationData& data) { - return data.body; - } - - static const std::string& tag(const blink::PlatformNotificationData& data) { - return data.tag; - } - - static const GURL& image(const blink::PlatformNotificationData& data) { - return data.image; - } - - static const GURL& icon(const blink::PlatformNotificationData& data) { - return data.icon; - } - - static const GURL& badge(const blink::PlatformNotificationData& data) { - return data.badge; - } - - static const base::span<const int32_t> vibration_pattern( - const blink::PlatformNotificationData& data) { - // TODO(https://crbug.com/798466): Store as int32s to avoid this cast. - return base::make_span( - reinterpret_cast<const int32_t*>(data.vibration_pattern.data()), - data.vibration_pattern.size()); - } - - static double timestamp(const blink::PlatformNotificationData& data) { - return data.timestamp.ToJsTime(); - } - - static bool renotify(const blink::PlatformNotificationData& data) { - return data.renotify; - } - - static bool silent(const blink::PlatformNotificationData& data) { - return data.silent; - } - - static bool require_interaction(const blink::PlatformNotificationData& data) { - return data.require_interaction; - } - - static const base::span<const uint8_t> data( - const blink::PlatformNotificationData& data) { - // TODO(https://crbug.com/798466): Align data types to avoid this cast. - return base::make_span(reinterpret_cast<const uint8_t*>(data.data.data()), - data.data.size()); - } - - static const std::vector<blink::PlatformNotificationAction>& actions( - const blink::PlatformNotificationData& data) { - return data.actions; - } - - static base::Optional<base::Time> show_trigger_timestamp( - const blink::PlatformNotificationData& data) { - return data.show_trigger_timestamp; - } - - static bool Read(blink::mojom::NotificationDataDataView notification_data, - blink::PlatformNotificationData* platform_notification_data); -}; - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::NotificationResourcesDataView, - blink::NotificationResources> { - static const SkBitmap& image(const blink::NotificationResources& resources) { - return resources.image; - } - - static const SkBitmap& icon(const blink::NotificationResources& resources) { - return resources.notification_icon; - } - - static const SkBitmap& badge(const blink::NotificationResources& resources) { - return resources.badge; - } - - static const std::vector<SkBitmap>& action_icons( - const blink::NotificationResources& resources) { - return resources.action_icons; - } - - static bool Read(blink::mojom::NotificationResourcesDataView in, - blink::NotificationResources* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_NOTIFICATION_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/notifications/platform_notification_data.h b/chromium/src/third_party/blink/public/common/notifications/platform_notification_data.h deleted file mode 100644 index 8e89934..0000000 --- a/chromium/src/third_party/blink/public/common/notifications/platform_notification_data.h +++ /dev/null
@@ -1,111 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_PLATFORM_NOTIFICATION_DATA_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_PLATFORM_NOTIFICATION_DATA_H_ - -#include <string> -#include <vector> - -#include "base/optional.h" -#include "base/strings/string16.h" -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/notifications/notification.mojom-shared.h" -#include "url/gurl.h" - -namespace blink { - -// A notification action (button or text input); corresponds to Blink -// WebNotificationAction. -struct BLINK_COMMON_EXPORT PlatformNotificationAction { - PlatformNotificationAction(); - PlatformNotificationAction(const PlatformNotificationAction& other); - ~PlatformNotificationAction(); - - // Type of the action (button or text input). - mojom::NotificationActionType type = mojom::NotificationActionType::BUTTON; - - // Action name that the author can use to distinguish them. - std::string action; - - // Title of the button. - base::string16 title; - - // URL of the icon for the button. May be empty if no url was specified. - GURL icon; - - // Optional text to use as placeholder for text inputs. May be null if it was - // not specified. - base::Optional<base::string16> placeholder; -}; - -// Structure representing the information associated with a Web Notification. -// This struct should include the developer-visible information, kept -// synchronized with the WebNotificationData structure defined in the Blink API. -struct BLINK_COMMON_EXPORT PlatformNotificationData { - PlatformNotificationData(); - PlatformNotificationData(const PlatformNotificationData& other); - ~PlatformNotificationData(); - - // Title to be displayed with the Web Notification. - base::string16 title; - - // Hint to determine the directionality of the displayed notification. - mojom::NotificationDirection direction; - - // BCP 47 language tag describing the notification's contents. Optional. - std::string lang; - - // Contents of the notification. - base::string16 body; - - // Tag of the notification. Notifications sharing both their origin and their - // tag will replace the first displayed notification. - std::string tag; - - // URL of the image contents of the notification. May be empty if no url was - // specified. - GURL image; - - // URL of the icon which is to be displayed with the notification. - GURL icon; - - // URL of the badge for representing the notification. May be empty if no url - // was specified. - GURL badge; - - // Vibration pattern for the notification, following the syntax of the - // Vibration API. https://www.w3.org/TR/vibration/ - std::vector<int> vibration_pattern; - - // The time at which the event the notification represents took place. - base::Time timestamp; - - // Whether default notification indicators (sound, vibration, light) should - // be played again if the notification is replacing an older notification. - bool renotify = false; - - // Whether default notification indicators (sound, vibration, light) should - // be suppressed. - bool silent = false; - - // Whether the notification should remain onscreen indefinitely, rather than - // being auto-minimized to the notification center (if allowed by platform). - bool require_interaction = false; - - // Developer-provided data associated with the notification, in the form of - // a serialized string. Must not exceed |kMaximumDeveloperDataSize| bytes. - std::vector<char> data; - - // Actions that should be shown as buttons on the notification. - std::vector<PlatformNotificationAction> actions; - - // The time at which the notification should be shown. - base::Optional<base::Time> show_trigger_timestamp; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_NOTIFICATIONS_PLATFORM_NOTIFICATION_DATA_H_
diff --git a/chromium/src/third_party/blink/public/common/origin_trials/OWNERS b/chromium/src/third_party/blink/public/common/origin_trials/OWNERS deleted file mode 100644 index 73686a7..0000000 --- a/chromium/src/third_party/blink/public/common/origin_trials/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/common/origin_trials/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/origin_trials/trial_token.h b/chromium/src/third_party/blink/public/common/origin_trials/trial_token.h deleted file mode 100644 index d78537c..0000000 --- a/chromium/src/third_party/blink/public/common/origin_trials/trial_token.h +++ /dev/null
@@ -1,152 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_H_ - -#include <memory> -#include <string> - -#include "base/strings/string_piece.h" -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/origin.h" - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size); - -namespace blink { -// The enum entries below are written to histograms and thus cannot be deleted -// or reordered. -// New entries must be added immediately before the end. -enum class OriginTrialTokenStatus { - kSuccess = 0, - kNotSupported = 1, - kInsecure = 2, - kExpired = 3, - kWrongOrigin = 4, - kInvalidSignature = 5, - kMalformed = 6, - kWrongVersion = 7, - kFeatureDisabled = 8, - kTokenDisabled = 9, - kFeatureDisabledForUser = 10, - kMaxValue = kFeatureDisabledForUser -}; - -// The Origin Trials Framework (OT) provides limited access to experimental -// features, on a per-origin basis. This class defines the trial token data -// structure, used to securely provide access to an experimental feature. -// -// Features are defined by string names, provided by the implementers. The OT -// code does not maintain an enum or constant list for feature names. Instead, -// it validates the name provided by the feature implementation against any -// provided tokens. -// -// More documentation on the token format can be found at -// origin_trials_token_structure.md - -class BLINK_COMMON_EXPORT TrialToken { - public: - ~TrialToken(); - - enum class UsageRestriction { kNone, kSubset }; - - // If the string represents a signed well-formed token, a token object is - // returned, and success is returned in the |out_status| parameter. Otherwise, - // the |out_status| parameter indicates what was wrong with the string, and - // nullptr is returned. - // Note that success does not mean that the token is currently valid, or - // appropriate for a given origin / feature. It only means that it is - // correctly formatted and signed by the supplied public key, and can be - // parsed. - static std::unique_ptr<TrialToken> From(base::StringPiece token_text, - base::StringPiece public_key, - OriginTrialTokenStatus* out_status); - - // Returns success if this token is appropriate for use by the given origin - // and has not yet expired. Otherwise, the return value indicates why the - // token is not valid. - OriginTrialTokenStatus IsValid(const url::Origin& origin, - const base::Time& now) const; - - url::Origin origin() { return origin_; } - bool match_subdomains() const { return match_subdomains_; } - std::string feature_name() { return feature_name_; } - base::Time expiry_time() { return expiry_time_; } - std::string signature() { return signature_; } - bool is_third_party() const { return is_third_party_; } - UsageRestriction usage_restriction() { return usage_restriction_; } - - protected: - // Tests can access the Parse method directly to validate it, and so are - // declared as friends here. All other access to Parse should be made through - // TrialToken::From, which will always also ensure that there is a valid - // signature attached to the token. - friend class TrialTokenTest; - friend int ::LLVMFuzzerTestOneInput(const uint8_t*, size_t); - - // If the string represents a properly signed and well-formed token, success - // is returned, with the token payload, signature and version returned in the - // |out_token_payload|, |out_token_signature| and |out_token_version| - // parameters, respectively. Otherwise,the return code indicates what was - // wrong with the string, and |out_token_payload|, |out_token_signature| and - // |out_token_version| are unchanged. - static OriginTrialTokenStatus Extract(base::StringPiece token_text, - base::StringPiece public_key, - std::string* out_token_payload, - std::string* out_token_signature, - uint8_t* out_token_version); - - // Returns a token object if the string represents a well-formed JSON token - // payload, or nullptr otherwise. - static std::unique_ptr<TrialToken> Parse(const std::string& token_payload, - const uint8_t version); - - bool ValidateOrigin(const url::Origin& origin) const; - bool ValidateFeatureName(base::StringPiece feature_name) const; - bool ValidateDate(const base::Time& now) const; - - static bool ValidateSignature(base::StringPiece signature_text, - const std::string& data, - base::StringPiece public_key); - - private: - TrialToken(const url::Origin& origin, - bool match_subdomains, - const std::string& feature_name, - uint64_t expiry_timestamp, - bool is_third_party, - UsageRestriction usage_restriction); - - // The origin for which this token is valid. Must be a secure origin. - url::Origin origin_; - - // Indicates if the token should match all subdomains of the origin. - bool match_subdomains_; - - // The name of the experimental feature which this token enables. - std::string feature_name_; - - // The time until which this token should be considered valid. - base::Time expiry_time_; - - // The signature identifying the fully signed contents of the token. - std::string signature_; - - // Indicates whether the token should validate against third party origin. - // See design doc - // https://docs.google.com/document/d/1xALH9W7rWmX0FpjudhDeS2TNTEOXuPn4Tlc9VmuPdHA - // for more details. - bool is_third_party_; - - // Indicates the alternative usage restriction mode imposed on the token. - // See design doc - // https://docs.google.com/document/d/1xALH9W7rWmX0FpjudhDeS2TNTEOXuPn4Tlc9VmuPdHA - // for more details. - UsageRestriction usage_restriction_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_H_
diff --git a/chromium/src/third_party/blink/public/common/origin_trials/trial_token_validator.h b/chromium/src/third_party/blink/public/common/origin_trials/trial_token_validator.h deleted file mode 100644 index b600d5f..0000000 --- a/chromium/src/third_party/blink/public/common/origin_trials/trial_token_validator.h +++ /dev/null
@@ -1,106 +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. - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_VALIDATOR_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_VALIDATOR_H_ - -#include <memory> -#include <string> -#include <vector> -#include "base/callback.h" -#include "base/containers/flat_map.h" -#include "base/strings/string_piece.h" -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "url/origin.h" - -namespace net { -class HttpResponseHeaders; -class URLRequest; -} // namespace net - -namespace blink { - -class OriginTrialPolicy; -enum class OriginTrialTokenStatus; - -struct BLINK_COMMON_EXPORT TrialTokenResult { - TrialTokenResult(); - explicit TrialTokenResult(OriginTrialTokenStatus); - TrialTokenResult(OriginTrialTokenStatus status, - std::string name, - base::Time expiry, - bool is_third_party); - ~TrialTokenResult(); - - OriginTrialTokenStatus status; - std::string feature_name; - base::Time expiry_time; - bool is_third_party = false; -}; - -// TrialTokenValidator checks that a page's OriginTrial token enables a certain -// feature. -// -// Given a policy, feature and token, this class determines if the feature -// should be enabled or not for a specific document. -class BLINK_COMMON_EXPORT TrialTokenValidator { - public: - TrialTokenValidator(); - virtual ~TrialTokenValidator(); - - using FeatureToTokensMap = - base::flat_map<std::string /* feature_name */, - std::vector<std::string /* token */>>; - - // If the token validates, status will be set to - // OriginTrialTokenStatus::kSuccess, the rest will be populated with name of - // the feature this token enables, the expiry time of the token and whether it - // is a third-party token. Otherwise, only the status will be set. - // This method is thread-safe. - virtual TrialTokenResult ValidateToken(base::StringPiece token, - const url::Origin& origin, - base::Time current_time) const; - // Validates a token for the given |origin|. If identified as a third-party - // token, instead validate for the given |third_party_origin|. Validation of a - // third-party token will fail if |third_party-origin| is not given. Returns - // the same result as ValidateToken() above. - // This method is thread-safe. - virtual TrialTokenResult ValidateToken(base::StringPiece token, - const url::Origin& origin, - const url::Origin* third_party_origin, - base::Time current_time) const; - - bool RequestEnablesFeature(const net::URLRequest* request, - base::StringPiece feature_name, - base::Time current_time) const; - - bool RequestEnablesFeature(const GURL& request_url, - const net::HttpResponseHeaders* response_headers, - base::StringPiece feature_name, - base::Time current_time) const; - - // Returns all valid tokens in |headers|. - std::unique_ptr<FeatureToTokensMap> GetValidTokensFromHeaders( - const url::Origin& origin, - const net::HttpResponseHeaders* headers, - base::Time current_time) const; - - // Returns all valid tokens in |tokens|. This method is used to re-validate - // previously stored tokens. - std::unique_ptr<FeatureToTokensMap> GetValidTokens( - const url::Origin& origin, - const FeatureToTokensMap& tokens, - base::Time current_time) const; - - static void SetOriginTrialPolicyGetter( - base::RepeatingCallback<OriginTrialPolicy*()> policy); - static void ResetOriginTrialPolicyGetter(); - - static bool IsTrialPossibleOnOrigin(const GURL& url); -}; // class TrialTokenValidator - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_ORIGIN_TRIALS_TRIAL_TOKEN_VALIDATOR_H_
diff --git a/chromium/src/third_party/blink/public/common/page/OWNERS b/chromium/src/third_party/blink/public/common/page/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/page/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/page/content_to_visible_time_reporter.h b/chromium/src/third_party/blink/public/common/page/content_to_visible_time_reporter.h deleted file mode 100644 index 5a6dbd6..0000000 --- a/chromium/src/third_party/blink/public/common/page/content_to_visible_time_reporter.h +++ /dev/null
@@ -1,94 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_CONTENT_TO_VISIBLE_TIME_REPORTER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_CONTENT_TO_VISIBLE_TIME_REPORTER_H_ - -#include "base/callback.h" -#include "base/memory/weak_ptr.h" -#include "base/optional.h" -#include "base/time/time.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/page/record_content_to_visible_time_request.mojom.h" - -namespace gfx { -struct PresentationFeedback; -} - -namespace blink { - -// Merges the |from| request to the |to| request to include all the flags set -// and minimum start time. -BLINK_COMMON_EXPORT void UpdateRecordContentToVisibleTimeRequest( - mojom::RecordContentToVisibleTimeRequest const& from, - mojom::RecordContentToVisibleTimeRequest& to); - -// Generates UMA metric to track the duration of tab switching from when the -// active tab is changed until the frame presentation time. The metric will be -// separated into two whether the tab switch has saved frames or not. -class BLINK_COMMON_EXPORT ContentToVisibleTimeReporter { - public: - // Matches the TabSwitchResult enum in enums.xml. - enum class TabSwitchResult { - // A frame was successfully presented after a tab switch. - kSuccess = 0, - // Tab was hidden before a frame was presented after a tab switch. - kIncomplete = 1, - // Compositor reported a failure after a tab switch. - kPresentationFailure = 2, - kMaxValue = kPresentationFailure, - }; - - ContentToVisibleTimeReporter(); - ContentToVisibleTimeReporter(const ContentToVisibleTimeReporter&) = delete; - ContentToVisibleTimeReporter& operator=(const ContentToVisibleTimeReporter&) = - delete; - ~ContentToVisibleTimeReporter(); - - // Invoked when the tab associated with this recorder is shown. Returns a - // callback to invoke the next time a frame is presented for this tab. - base::OnceCallback<void(const gfx::PresentationFeedback&)> TabWasShown( - bool has_saved_frames, - mojom::RecordContentToVisibleTimeRequestPtr start_state, - base::TimeTicks widget_visibility_request_timestamp); - - base::OnceCallback<void(const gfx::PresentationFeedback&)> TabWasShown( - bool has_saved_frames, - base::TimeTicks event_start_time, - bool destination_is_loaded, - bool show_reason_tab_switching, - bool show_reason_unoccluded, - bool show_reason_bfcache_restore, - base::TimeTicks widget_visibility_request_timestamp); - - // Indicates that the tab associated with this recorder was hidden. If no - // frame was presented since the last tab switch, failure is reported to UMA. - void TabWasHidden(); - - private: - // Records histograms and trace events for the current tab switch. - void RecordHistogramsAndTraceEvents( - bool is_incomplete, - bool show_reason_tab_switching, - bool show_reason_unoccluded, - bool show_reason_bfcache_restore, - const gfx::PresentationFeedback& feedback); - - // Whether there was a saved frame for the last tab switch. - bool has_saved_frames_; - - // The information about the last tab switch request, or nullptr if there is - // no incomplete tab switch. - mojom::RecordContentToVisibleTimeRequestPtr tab_switch_start_state_; - - // The widget visibility request timestamp for the last tab switch, or null - // if there is no incomplete tab switch. - base::TimeTicks widget_visibility_request_timestamp_; - - base::WeakPtrFactory<ContentToVisibleTimeReporter> weak_ptr_factory_{this}; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_CONTENT_TO_VISIBLE_TIME_REPORTER_H_
diff --git a/chromium/src/third_party/blink/public/common/page_state/page_state_serialization.h b/chromium/src/third_party/blink/public/common/page_state/page_state_serialization.h deleted file mode 100644 index 53df6ba..0000000 --- a/chromium/src/third_party/blink/public/common/page_state/page_state_serialization.h +++ /dev/null
@@ -1,113 +0,0 @@ -// Copyright 2013 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_SERIALIZATION_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_SERIALIZATION_H_ - -#include <stdint.h> - -#include <string> -#include <vector> - -#include "base/optional.h" -#include "base/strings/string16.h" -#include "build/build_config.h" -#include "services/network/public/cpp/resource_request_body.h" -#include "services/network/public/mojom/referrer_policy.mojom.h" -#include "third_party/blink/public/mojom/page_state/page_state.mojom.h" -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/point_f.h" -#include "url/gurl.h" -#include "url/origin.h" - -namespace blink { - -constexpr int kMaxScrollAnchorSelectorLength = 500; - -struct BLINK_COMMON_EXPORT ExplodedHttpBody { - base::Optional<base::string16> http_content_type; - scoped_refptr<network::ResourceRequestBody> request_body; - bool contains_passwords; - - ExplodedHttpBody(); - ~ExplodedHttpBody(); -}; - -struct BLINK_COMMON_EXPORT ExplodedFrameState { - base::Optional<base::string16> url_string; - base::Optional<base::string16> referrer; - base::Optional<url::Origin> initiator_origin; - base::Optional<base::string16> target; - base::Optional<base::string16> state_object; - std::vector<base::Optional<base::string16>> document_state; - blink::mojom::ScrollRestorationType scroll_restoration_type = - blink::mojom::ScrollRestorationType::kAuto; - bool did_save_scroll_or_scale_state = true; - gfx::PointF visual_viewport_scroll_offset; - gfx::Point scroll_offset; - int64_t item_sequence_number = 0; - int64_t document_sequence_number = 0; - double page_scale_factor = 0.f; - network::mojom::ReferrerPolicy referrer_policy = - network::mojom::ReferrerPolicy::kDefault; - ExplodedHttpBody http_body; - base::Optional<base::string16> scroll_anchor_selector; - gfx::PointF scroll_anchor_offset; - uint64_t scroll_anchor_simhash = 0; - std::vector<ExplodedFrameState> children; - - ExplodedFrameState(); - ExplodedFrameState(const ExplodedFrameState& other); - ~ExplodedFrameState(); - void operator=(const ExplodedFrameState& other); - - private: - void assign(const ExplodedFrameState& other); -}; - -struct BLINK_COMMON_EXPORT ExplodedPageState { - // TODO(creis, lukasza): Instead of storing them in |referenced_files|, - // extract referenced files from ExplodedHttpBody. |referenced_files| - // currently contains a list from all frames, but cannot be deserialized into - // the files referenced by each frame. See http://crbug.com/441966. - std::vector<base::Optional<base::string16>> referenced_files; - ExplodedFrameState top; - - ExplodedPageState(); - ~ExplodedPageState(); -}; - -BLINK_COMMON_EXPORT bool DecodePageState(const std::string& encoded, - ExplodedPageState* exploded); -// Similar to |DecodePageState()|, but returns an int indicating the original -// version number of the encoded state. Returns -1 on failure. -BLINK_COMMON_EXPORT int DecodePageStateForTesting(const std::string& encoded, - ExplodedPageState* exploded); -BLINK_COMMON_EXPORT void EncodePageState(const ExplodedPageState& exploded, - std::string* encoded); -BLINK_COMMON_EXPORT void LegacyEncodePageStateForTesting( - const ExplodedPageState& exploded, - int version, - std::string* encoded); - -#if defined(OS_ANDROID) -BLINK_COMMON_EXPORT bool DecodePageStateWithDeviceScaleFactorForTesting( - const std::string& encoded, - float device_scale_factor, - ExplodedPageState* exploded); - -// Converts results of EncodeResourceRequestBody (passed in as a pair of |data| -// + |size|) back into a ResourceRequestBody. Returns nullptr if the -// decoding fails (e.g. if |data| is malformed). -BLINK_COMMON_EXPORT scoped_refptr<network::ResourceRequestBody> -DecodeResourceRequestBody(const char* data, size_t size); - -// Encodes |resource_request_body| into |encoded|. -BLINK_COMMON_EXPORT std::string EncodeResourceRequestBody( - const network::ResourceRequestBody& resource_request_body); -#endif - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PAGE_STATE_PAGE_STATE_SERIALIZATION_H_
diff --git a/chromium/src/third_party/blink/public/common/peerconnection/OWNERS b/chromium/src/third_party/blink/public/common/peerconnection/OWNERS deleted file mode 100644 index 5ab7d58..0000000 --- a/chromium/src/third_party/blink/public/common/peerconnection/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://third_party/blink/renderer/modules/peerconnection/OWNERS - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/permissions/OWNERS b/chromium/src/third_party/blink/public/common/permissions/OWNERS deleted file mode 100644 index 5fc2b35..0000000 --- a/chromium/src/third_party/blink/public/common/permissions/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/modules/permissions/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/privacy_budget/BUILD.gn b/chromium/src/third_party/blink/public/common/privacy_budget/BUILD.gn deleted file mode 100644 index a150c60..0000000 --- a/chromium/src/third_party/blink/public/common/privacy_budget/BUILD.gn +++ /dev/null
@@ -1,60 +0,0 @@ -# Copyright 2020 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. - -source_set("internal") { - sources = [ "identifiability_internal_templates.h" ] - - visibility = [ - ":*", - "//third_party/blink/common/privacy_budget:*", - ] -} - -source_set("privacy_budget") { - sources = [ - "identifiability_metric_builder.h", - "identifiability_metrics.h", - "identifiability_sample_collector.h", - "identifiability_study_settings.h", - "identifiability_study_settings_provider.h", - "identifiable_sample.h", - "identifiable_surface.h", - "identifiable_token.h", - "identifiable_token_builder.h", - ] - - deps = [ - ":internal", - "//base", - "//services/metrics/public/cpp:metrics_cpp", - "//services/network/public/cpp:cpp", - "//third_party/blink/public/common:common_export", - "//third_party/blink/public/mojom:web_feature_mojo_bindings", - ] -} - -source_set("test_support") { - testonly = true - - sources = [ - "scoped_identifiability_test_sample_collector.h", - "scoped_switch_sample_collector.h", - ] - - public_deps = [ "//third_party/blink/public/common:headers" ] - - deps = [ - ":internal", - "//third_party/blink/public/common:common_export", - ] -} - -# Adds //tools/privacy_budget targets to the top level "gn_all" group. See the -# top level //BUILD.gn file for details on how that target is used. Builders -# that build the "all" target also build the targets in //tools/privacy_budget -# as a result of this dependency. -group("gn_all") { - testonly = true - deps = [ "//tools/privacy_budget:privacy_budget_tools" ] -}
diff --git a/chromium/src/third_party/blink/public/common/privacy_budget/OWNERS b/chromium/src/third_party/blink/public/common/privacy_budget/OWNERS deleted file mode 100644 index 83037bc..0000000 --- a/chromium/src/third_party/blink/public/common/privacy_budget/OWNERS +++ /dev/null
@@ -1,3 +0,0 @@ -asanka@chromium.org -pauljensen@chromium.org -caraitto@chromium.org
diff --git a/chromium/src/third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h b/chromium/src/third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h deleted file mode 100644 index db6915d..0000000 --- a/chromium/src/third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h +++ /dev/null
@@ -1,77 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_INTERNAL_TEMPLATES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_INTERNAL_TEMPLATES_H_ - -#include <cstdint> -#include <cstring> -#include <type_traits> - -namespace blink { - -namespace internal { - -// Handroll a remove_cv_t until we get to C++20. -template <typename T> -using remove_cvref_t = typename std::remove_cv_t<std::remove_reference_t<T>>; - -// Kinda conservative implementation of -// std::has_unique_object_representations<>. Perhaps not as conservative as we'd -// like. -// -// At a minimum, this predicate should require that the data type not contain -// internal padding since uninitialized padding bytes defeat the uniqueness of -// the representation. Trailing padding is allowed. -// -// Not checking <version> because we don't want to use the feature -// automatically. We should wait until C++-17 library functionality is -// explicitly allowed in Chromium. -template <typename T> -using has_unique_object_representations = std::is_arithmetic<T>; - -// Calculate a digest of an object with a unique representation. -// -// In a perfect world, we should also require that this representation be -// portable or made to be portable. Such a transformation could be done, for -// example, by adopting a consistent byte ordering on all platforms. -// -// This function should only be invoked on a bare (sans qualifiers and -// references) type for the sake of simplicity. -// -// Should not be used as a primitive for manually constructing a unique -// representation. For such cases, use the byte-wise digest functions instead. -// -// Should not be used outside of the narrow use cases in this file. -// -// This implementation does not work for x86 extended precision floating point -// numbers. These are 80-bits wide, but in practice includes 6 bytes of padding -// in order to extend the size to 16 bytes. The extra bytes are uninitialized -// and will not contribute a stable digest. -template < - typename T, - typename std::enable_if_t<std::is_same<T, remove_cvref_t<T>>::value && - std::is_trivially_copyable<T>::value && - has_unique_object_representations<T>::value && - sizeof(T) <= sizeof(int64_t)>* = nullptr> -constexpr int64_t DigestOfObjectRepresentation(T in) { - // If |in| is small enough, the digest is itself. There's no point hashing - // this value since the identity has all the properties we are looking for - // in a digest. - if (std::is_integral<T>::value && std::is_signed<T>::value) - return in; - - if (std::is_integral<T>::value && sizeof(T) < sizeof(int64_t)) - return in; - - int64_t result = 0; - std::memcpy(&result, &in, sizeof(in)); - return result; -} - -} // namespace internal - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABILITY_INTERNAL_TEMPLATES_H_
diff --git a/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token.h b/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token.h deleted file mode 100644 index f1f9952..0000000 --- a/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token.h +++ /dev/null
@@ -1,238 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_H_ - -#include <cstdint> -#include <type_traits> - -#include "base/containers/span.h" -#include "base/numerics/safe_conversions.h" -#include "base/strings/string_piece.h" -#include "third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h" -#include "third_party/blink/public/common/privacy_budget/identifiability_metrics.h" - -namespace blink { - -// Constructs a token that can be used for reporting a metric or constructing an -// identifiable surface. -// -// The token construction is a single step conversion that takes one of several -// constrained inputs and emits a value. The method by which the value is -// constructed intentionally cannot be chained. If such behavior is required, -// then this class should be modified to accommodate the new use case rather -// than implementing custom chaining schemes at call sites. -// -// Once constructed, a token can only be consumed by -// IdentifiabiltyMetricsBuilder and IdentifiableSurface. For all others, it is a -// copyable, opaque token. -// -// Reliance on implicit conversion imposes limitations on how -// IdentifiableToken class is to be used. For example the following works: -// -// std::string foo = ....; -// IdentifiableToken sample(foo); -// -// .. due to the following implicit conversion: -// -// 1. std::string -> const std::string& -// : lvalue -> lvalue reference + cv-qualification -// 2. const std::string& -> base::StringPiece -// : user-defined conversion via constructor -// base::StringPiece(const std::string&) -// -// However, when used within a builder expression, the user-defined conversion -// doesn't occur due to there not being a single user defined conversion from -// std::string -> IdentifiableToken. I.e. the following does not work: -// -// std::string foo = ....; -// IdentifiabilityMetricBuilder(...).Set(surface, foo); -// ^^^ -// The compiler can't deduce a two step user-defined conversion for |foo|. -// -// All overrides of the constructor should ensure that there exists a unique -// representation of the data type being sampled, and that the sample value is -// constructed based on this unique representation. -// -// TODO(asanka): Also require that the representation be portable. -// -// Extending IdentifiableToken to support more data types: -// ----------------------------------------------------------- -// -// This class is intentionally placed in blink/public/common due to the -// requirement that these primitives be made available to both the renderer and -// the browser. However, it would be desirable to have renderer or browser -// specific functions for mapping common types in either domain into a sample. -// -// The recommended methods to do so are (one-of): -// -// 1. Use an existing byte span representation. -// -// E.g.: Assuming |v| is a WTF::Vector -// IdentifiabilityMetricBuilder(...).Set(..., -// base::as_bytes(base::make_span(v.Data(), v.Size()))); -// -// Note again that serializing to a stream of bytes may not be sufficient -// if the underlying types don't have a unique representation. -// -// 2. Construct a byte-wise unique representation and invoke -// IdentifiableToken(ByteSpan) either explicitly or implicitly via -// user-defined conversions. -// -// Note: Avoid doing template magic. There's already too much here. Templates -// make it difficult to verify that the correct stable representation is -// the one getting ingested into the reporting workflow. -// -// Instead, explicitly invoke some wrapper that emits a ByteSpan (a.k.a. -// base::span<const uint8_t>. -class IdentifiableToken { - public: - // Generic buffer of bytes. - using ByteSpan = base::span<const uint8_t>; - - // Representation type of the sample. - using TokenType = int64_t; - - // Required for use in certain data structures. Represents no bytes. - constexpr IdentifiableToken() : value_(kIdentifiabilityDigestOfNoBytes) {} - - // A byte buffer specified as a span. - // - // This is essentially the base case. If it were the base case, then - // IdentifiableToken would be closer to a proper digest. - // - // NOLINTNEXTLINE(google-explicit-constructor) - IdentifiableToken(ByteSpan span) - : value_(IdentifiabilityDigestOfBytes(span)) {} - - // Integers, big and small. Includes char. - template <typename T, - typename U = internal::remove_cvref_t<T>, - typename std::enable_if_t<std::is_integral<U>::value>* = nullptr> - constexpr IdentifiableToken(T in) // NOLINT(google-explicit-constructor) - : value_(base::IsValueInRangeForNumericType<TokenType, U>(in) - ? in - : internal::DigestOfObjectRepresentation<U>(in)) {} - - // Enums. Punt to the underlying type. - template <typename T, - // Set dummy type before U to avoid GCC compile errors - typename std::enable_if_t<std::is_enum<T>::value>* = nullptr, - typename U = typename std::underlying_type<T>::type> - constexpr IdentifiableToken(T in) // NOLINT(google-explicit-constructor) - : IdentifiableToken(static_cast<U>(in)) {} - - // All floating point values get converted to double before encoding. - // - // Why? We'd like to minimize accidental divergence of values due to the data - // type that the callsite happened to be using at the time. - // - // On some platforms sizeof(long double) gives us 16 (i.e. 128 bits), while - // only 10 of those bytes are initialized. If the whole sizeof(long double) - // buffer were to be ingested, then the uninitialized memory will cause the - // resulting digest to be useless. - template < - typename T, - typename U = internal::remove_cvref_t<T>, - typename std::enable_if_t<std::is_floating_point<U>::value>* = nullptr> - constexpr IdentifiableToken(T in) // NOLINT(google-explicit-constructor) - : value_(internal::DigestOfObjectRepresentation<double>( - static_cast<double>(in))) {} - - // StringPiece. Decays to base::span<> but requires an explicit constructor - // invocation. - // - // Care must be taken when using string types with IdentifiableToken() since - // there's not privacy expectation in the resulting token value. If the string - // used as an input is privacy sensitive, it should not be passed in as-is. - explicit IdentifiableToken(base::StringPiece s) - : IdentifiableToken(base::as_bytes(base::make_span(s))) { - // The cart is before the horse, but it's a static_assert<>. - static_assert( - std::is_same<ByteSpan, - decltype(base::as_bytes(base::make_span(s)))>::value, - "base::as_bytes() doesn't return ByteSpan"); - } - - // Span of known trivial types except for BytesSpan, which is the base case. - template <typename T, - size_t Extent, - typename U = internal::remove_cvref_t<T>, - typename std::enable_if_t< - std::is_arithmetic<U>::value && - !std::is_same<ByteSpan::element_type, T>::value>* = nullptr> - // NOLINTNEXTLINE(google-explicit-constructor) - IdentifiableToken(base::span<T, Extent> span) - : IdentifiableToken(base::as_bytes(span)) {} - - // A span of non-trivial things where each thing can be digested individually. - template <typename T, - size_t Extent, - typename std::enable_if_t< - !std::is_arithmetic<T>::value && - !std::is_same<ByteSpan::element_type, T>::value>* = nullptr> - // NOLINTNEXTLINE(google-explicit-constructor) - IdentifiableToken(base::span<T, Extent> span) { - TokenType cur_digest = 0; - for (const auto& element : span) { - TokenType digests[2]; - digests[0] = cur_digest; - digests[1] = IdentifiableToken(element).value_; - cur_digest = IdentifiabilityDigestOfBytes( - base::as_bytes(base::make_span(digests))); - } - value_ = cur_digest; - } - - // Parameter pack where each parameter can be digested individually. Requires - // at least two parameters. - template <typename T1, typename T2, typename... Trest> - constexpr IdentifiableToken(T1 first, T2 second, Trest... rest) { - TokenType samples[] = {IdentifiableToken(first).value_, - IdentifiableToken(second).value_, - (IdentifiableToken(rest).value_)...}; - value_ = IdentifiableToken(base::make_span(samples)).value_; - } - - constexpr bool operator<(const IdentifiableToken& that) const { - return value_ < that.value_; - } - - constexpr bool operator<=(const IdentifiableToken& that) const { - return value_ <= that.value_; - } - - constexpr bool operator>(const IdentifiableToken& that) const { - return value_ > that.value_; - } - - constexpr bool operator>=(const IdentifiableToken& that) const { - return value_ >= that.value_; - } - - constexpr bool operator==(const IdentifiableToken& that) const { - return value_ == that.value_; - } - - constexpr bool operator!=(const IdentifiableToken& that) const { - return value_ != that.value_; - } - - // Returns a value that can be passed into the UKM metrics recording - // interfaces. - int64_t ToUkmMetricValue() const { return value_; } - - private: - friend class IdentifiabilityMetricBuilder; - friend class IdentifiableSurface; - friend class IdentifiableTokenBuilder; - - // TODO(asanka): This should be const. Switch over once the incremental digest - // functions land. - TokenType value_ = 0; -}; - -} // namespace blink -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_H_
diff --git a/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h b/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h deleted file mode 100644 index 9cc4e5e..0000000 --- a/chromium/src/third_party/blink/public/common/privacy_budget/identifiable_token_builder.h +++ /dev/null
@@ -1,202 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_BUILDER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_BUILDER_H_ - -#include <array> - -#include "base/containers/span.h" -#include "base/strings/string_piece.h" -#include "base/sys_byteorder.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/privacy_budget/identifiability_internal_templates.h" -#include "third_party/blink/public/common/privacy_budget/identifiable_token.h" - -namespace blink { - -// Builds an IdentifiableToken incrementally. -// -// Use this when the input to a sample is a bunch of disjoint objects, or the -// sample needs to include objects that are incrementally encountered. -// -// Notes: -// * The digest returned by this class is *NOT* the same as the one -// IdentifiabilityDigestOfBytes for the same set of bytes. This is due to -// block based chaining of digests used by this class. -// IdentifiabilityDigestOfBytes and this class are *NOT* interchangeable. -// -// TODO(asanka): IdentifiabilityDigestOfBytes() and this class should -// interop better. Perhaps by making the latter use the former. -// -// * The digest returned by this class is *NOT* the same as what you would -// acquire by invoking IdentifiableToken() over the same object. -// IdentifiableToken() and this class are *NOT* interchangeable. -// -// * The digest returned by this class only depends on the cumulative sequence -// of bytes that are fed to it. The partitioning thereof is irrelevant. -// -// * This object never finalizes. Partial digests can be extracted at any -// point. -class BLINK_COMMON_EXPORT IdentifiableTokenBuilder { - public: - // Convenient alias for a span of const uint8_t. - using ByteSpan = IdentifiableToken::ByteSpan; - - // Initializes an "empty" incremental digest for the purpose of constructing - // an identifiability sample. - IdentifiableTokenBuilder(); - - // Initializes an incremental digest and populates it with the data contained - // in |message|. - explicit IdentifiableTokenBuilder(ByteSpan message); - - // Copies the intermediate state. - IdentifiableTokenBuilder(const IdentifiableTokenBuilder&); - - // Feeds data contained in |buffer| to the digest. - IdentifiableTokenBuilder& AddBytes(ByteSpan buffer); - - // Feeds data contained in |buffer| to the digest, but precedes the buffer - // contents with an integer indicating the length. Use this when: - // - // * |buffer| is atomic. I.e. it will always be added as a single buffer. - // - // * The boundary between |buffer| and adjacent objects cannot be uniquely - // established based on content. - // - // E.g.: Ignoring NUL terminators, the pair of strings "abcd", "efgh" will be - // assigned token as the strings "abcdefg", "h" if both are added - // individually via AddBytes(). But they will have distinct digests if - // added via AddAtomic(). - // - // If the contents of the object cannot be specified in a contiguous span of - // memory, then consider adding a length directly via AddValue() prior to - // adding the contents of the buffer. Doing so will achieve the same ends as - // AddAtomic(). - IdentifiableTokenBuilder& AddAtomic(ByteSpan buffer); - IdentifiableTokenBuilder& AddAtomic(base::StringPiece string) { - return AddAtomic(base::as_bytes(base::make_span(string))); - } - - // Feeds the underlying value of the |token| itself to the digest. Use this - // when |token| is computed in parallel in order to preserve the ordering of - // values that were seen in a concurrent sequence that cannot be - // deterministically interleaved into the primary stream. - IdentifiableTokenBuilder& AddToken(IdentifiableToken token); - - // Helper for feeding primitive types by value efficiently. Anything more - // complicated than that should be passed in as a base::span<const uint8_t>. - // - // Adds eight bytes to the digest. If the type of the value doesn't consume - // all of the bytes, pads the remainder with NUL bytes. - template <typename T, - typename std::enable_if_t< - std::is_same<T, internal::remove_cvref_t<T>>::value && - internal::has_unique_object_representations<T>::value && - sizeof(T) <= sizeof(uint64_t)>* = nullptr> - IdentifiableTokenBuilder& AddValue(T in) { - AlignPartialBuffer(); - int64_t clean_buffer = - base::ByteSwapToLE64(internal::DigestOfObjectRepresentation(in)); - return AddBytes(base::make_span( - reinterpret_cast<const uint8_t*>(&clean_buffer), sizeof(clean_buffer))); - } - - // Conversion operator captures an intermediate digest. - // - // The sample captures all the data that's been fed into the digest so far, - // but doesn't finalize the digest. It is valid to continue adding data after - // constructing an intermediate sample. - // - // (google-explicit-constructor also flags user-defined conversion operators.) - // NOLINTNEXTLINE(google-explicit-constructor) - operator IdentifiableToken() const; - - // Captures an intermediate digest. - // - // The sample captures all the data that's been fed into the digest so far, - // but doesn't finalize the digest. It is valid to continue adding data after - // constructing an intermediate sample. - IdentifiableToken GetToken() const; - - // No comparisons. - bool operator==(const IdentifiableTokenBuilder&) const = delete; - bool operator<(const IdentifiableTokenBuilder&) const = delete; - - private: - // Block size. Must be a multiple of 64. Higher block sizes consume more - // memory. The extra cost is unlikely to be worth it. - // - // Under the covers we use CityHash64. It can pretty efficiently digest - // 64-byte blocks. - static constexpr size_t kBlockSizeInBytes = 64; - - // Target alignment for new buffers. This is set to 8 for all platforms and - // must always stay constant across platforms. - static constexpr size_t kBlockAlignment = 8; - - // An array of exactly |kBlockSizeInBytes| bytes. - using BlockBuffer = std::array<uint8_t, kBlockSizeInBytes>; - - // A view of a full block. - using ConstFullBlockSpan = base::span<const uint8_t, kBlockSizeInBytes>; - - // Returns true if the partial buffer is aligned on |kBlockAlignment| - // boundary. - bool IsAligned() const; - - // Appends enough NUL bytes to |partial_| until the next insertion point is - // aligned on a |kBlockAlignment| boundary. - // - // If the partial buffer is non-empty, its size is unlikely to be aligned at - // machine word boundary. This makes subsequent append operations slow for - // data types that are already aligned. - // - // This should only be called prior to adding an atomic buffer. - void AlignPartialBuffer(); - - // Captures the |kBlockSizeInBytes| bytes of data in |block| into the digest. - // |block| must be exactly this many bytes. - void DigestBlock(ConstFullBlockSpan block); - - // Captures as many bytes as possible from |message| into the partial block in - // |partial_|. It captures a maximum of |kBlockSizeInBytes - 1| bytes. - // - // Returns a span covering the remainder of |message| that was not consumed. - ByteSpan SkimIntoPartial(ByteSpan message); - - // Returns a span for the contents of the partial block. - // - // Can be called at any point. Does not change the state of the partial - // buffer. - ByteSpan GetPartialBlock() const; - - // Returns a span that includes the contents of the partial block and backed - // by |partial_|. - // - // NOTE: Should only be called once |kBlockSizeInBytes| bytes have been - // accumulated. Resets |partial_size_| upon completion. - // - // NOTE: Any subsequent AddBytes(), AddValue(), AddAtomic() calls will - // invalidate the returned FullBlock. - ConstFullBlockSpan TakeCompletedBlock(); - - // Size of partially filled buffer. - size_t PartialSize() const; - - // Accumulates smaller pieces of data until we have a full block. - alignas(int64_t) BlockBuffer partial_; - - // Next available position in `partial_`. std::array iterators are never - // invalidated. - BlockBuffer::iterator position_ = partial_.begin(); - - // Merkle-Damgård chaining. - uint64_t chaining_value_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_PRIVACY_BUDGET_IDENTIFIABLE_TOKEN_BUILDER_H_
diff --git a/chromium/src/third_party/blink/public/common/renderer_preferences/OWNERS b/chromium/src/third_party/blink/public/common/renderer_preferences/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/renderer_preferences/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences.h b/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences.h deleted file mode 100644 index 1cc39de..0000000 --- a/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences.h +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_H_ - -#include <string> -#include <vector> - -#include "base/optional.h" -#include "base/strings/string16.h" -#include "base/time/time.h" -#include "build/build_config.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/user_agent/user_agent_metadata.h" -#include "ui/gfx/font_render_params.h" - -namespace blink { - -// User preferences passed between the browser and renderer processes. -// See //third_party/blink/public/mojom/renderer_preferences.mojom for a -// description of what each field is about. -struct BLINK_COMMON_EXPORT RendererPreferences { - bool can_accept_load_drops{true}; - bool should_antialias_text{true}; - gfx::FontRenderParams::Hinting hinting{gfx::FontRenderParams::HINTING_MEDIUM}; - bool use_autohinter{false}; - bool use_bitmaps{false}; - gfx::FontRenderParams::SubpixelRendering subpixel_rendering{ - gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE}; - bool use_subpixel_positioning{false}; - uint32_t focus_ring_color{0xFFE59700}; - uint32_t active_selection_bg_color{0xFF1E90FF}; - uint32_t active_selection_fg_color{0xFFFFFFFF}; - uint32_t inactive_selection_bg_color{0xFFC8C8C8}; - uint32_t inactive_selection_fg_color{0xFF323232}; - bool browser_handles_all_top_level_requests{false}; - base::Optional<base::TimeDelta> caret_blink_interval; - bool use_custom_colors{true}; - bool enable_referrers{true}; - bool allow_cross_origin_auth_prompt{false}; - bool enable_do_not_track{false}; - bool enable_encrypted_media{true}; - std::string webrtc_ip_handling_policy; - uint16_t webrtc_udp_min_port{0}; - uint16_t webrtc_udp_max_port{0}; - std::vector<std::string> webrtc_local_ips_allowed_urls; - bool webrtc_allow_legacy_tls_protocols{false}; - UserAgentOverride user_agent_override; - std::string accept_languages; -#if defined(OS_LINUX) || defined(OS_CHROMEOS) - std::string system_font_family_name; -#endif -#if defined(OS_WIN) - base::string16 caption_font_family_name; - int32_t caption_font_height{0}; - base::string16 small_caption_font_family_name; - int32_t small_caption_font_height{0}; - base::string16 menu_font_family_name; - int32_t menu_font_height{0}; - base::string16 status_font_family_name; - int32_t status_font_height{0}; - base::string16 message_font_family_name; - int32_t message_font_height{0}; - int32_t vertical_scroll_bar_width_in_dips{0}; - int32_t horizontal_scroll_bar_height_in_dips{0}; - int32_t arrow_bitmap_height_vertical_scroll_bar_in_dips{0}; - int32_t arrow_bitmap_width_horizontal_scroll_bar_in_dips{0}; -#endif -#if defined(USE_X11) || defined(USE_OZONE) - bool selection_clipboard_buffer_available{false}; -#endif - bool plugin_fullscreen_allowed{true}; - bool caret_browsing_enabled{false}; - - RendererPreferences(); - RendererPreferences(const RendererPreferences& other); - RendererPreferences(RendererPreferences&& other); - ~RendererPreferences(); - RendererPreferences& operator=(const RendererPreferences& other); - RendererPreferences& operator=(RendererPreferences&& other); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_H_
diff --git a/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h b/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h deleted file mode 100644 index cd59b71..0000000 --- a/chromium/src/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h +++ /dev/null
@@ -1,246 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_MOJOM_TRAITS_H_ - -#include <string> - -#include "build/build_config.h" -#include "mojo/public/cpp/base/time_mojom_traits.h" -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h" -#include "third_party/blink/public/common/user_agent/user_agent_mojom_traits.h" -#include "third_party/blink/public/mojom/renderer_preferences.mojom-shared.h" -#include "ui/gfx/mojom/font_render_params_mojom_traits.h" - -#if defined(OS_WIN) -#include "mojo/public/cpp/base/string16_mojom_traits.h" -#endif - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::RendererPreferencesDataView, - ::blink::RendererPreferences> { - static const bool& can_accept_load_drops( - const ::blink::RendererPreferences& data) { - return data.can_accept_load_drops; - } - - static const bool& should_antialias_text( - const ::blink::RendererPreferences& data) { - return data.should_antialias_text; - } - - static const gfx::FontRenderParams::Hinting& hinting( - const ::blink::RendererPreferences& data) { - return data.hinting; - } - - static const bool& use_autohinter(const ::blink::RendererPreferences& data) { - return data.use_autohinter; - } - - static const bool& use_bitmaps(const ::blink::RendererPreferences& data) { - return data.use_bitmaps; - } - - static const gfx::FontRenderParams::SubpixelRendering& subpixel_rendering( - const ::blink::RendererPreferences& data) { - return data.subpixel_rendering; - } - - static const bool& use_subpixel_positioning( - const ::blink::RendererPreferences& data) { - return data.use_subpixel_positioning; - } - - static const uint32_t& focus_ring_color( - const ::blink::RendererPreferences& data) { - return data.focus_ring_color; - } - - static const uint32_t& active_selection_bg_color( - const ::blink::RendererPreferences& data) { - return data.active_selection_bg_color; - } - - static const uint32_t& active_selection_fg_color( - const ::blink::RendererPreferences& data) { - return data.active_selection_fg_color; - } - - static const uint32_t& inactive_selection_bg_color( - const ::blink::RendererPreferences& data) { - return data.inactive_selection_bg_color; - } - - static const uint32_t& inactive_selection_fg_color( - const ::blink::RendererPreferences& data) { - return data.inactive_selection_fg_color; - } - - static const bool& browser_handles_all_top_level_requests( - const ::blink::RendererPreferences& data) { - return data.browser_handles_all_top_level_requests; - } - - static base::Optional<base::TimeDelta> caret_blink_interval( - const ::blink::RendererPreferences& data) { - return data.caret_blink_interval; - } - - static const bool& use_custom_colors( - const ::blink::RendererPreferences& data) { - return data.use_custom_colors; - } - - static const bool& enable_referrers( - const ::blink::RendererPreferences& data) { - return data.enable_referrers; - } - - static const bool& allow_cross_origin_auth_prompt( - const ::blink::RendererPreferences& data) { - return data.allow_cross_origin_auth_prompt; - } - - static const bool& enable_do_not_track( - const ::blink::RendererPreferences& data) { - return data.enable_do_not_track; - } - - static const bool& enable_encrypted_media( - const ::blink::RendererPreferences& data) { - return data.enable_encrypted_media; - } - - static const std::string& webrtc_ip_handling_policy( - const ::blink::RendererPreferences& data) { - return data.webrtc_ip_handling_policy; - } - - static const uint16_t& webrtc_udp_min_port( - const ::blink::RendererPreferences& data) { - return data.webrtc_udp_min_port; - } - - static const uint16_t& webrtc_udp_max_port( - const ::blink::RendererPreferences& data) { - return data.webrtc_udp_max_port; - } - - static const std::vector<std::string>& webrtc_local_ips_allowed_urls( - const ::blink::RendererPreferences& data) { - return data.webrtc_local_ips_allowed_urls; - } - - static const bool& webrtc_allow_legacy_tls_protocols( - const ::blink::RendererPreferences& data) { - return data.webrtc_allow_legacy_tls_protocols; - } - - static const ::blink::UserAgentOverride& user_agent_override( - const ::blink::RendererPreferences& data) { - return data.user_agent_override; - } - - static const std::string& accept_languages( - const ::blink::RendererPreferences& data) { - return data.accept_languages; - } - -#if defined(OS_LINUX) || defined(OS_CHROMEOS) - static const std::string& system_font_family_name( - const ::blink::RendererPreferences& data) { - return data.system_font_family_name; - } -#endif - -#if defined(USE_X11) || defined(USE_OZONE) - static const bool& selection_clipboard_buffer_available( - const ::blink::RendererPreferences& data) { - return data.selection_clipboard_buffer_available; - } -#endif - -#if defined(OS_WIN) - static const base::string16& caption_font_family_name( - const ::blink::RendererPreferences& data) { - return data.caption_font_family_name; - } - static const int32_t& caption_font_height( - const ::blink::RendererPreferences& data) { - return data.caption_font_height; - } - static const base::string16& small_caption_font_family_name( - const ::blink::RendererPreferences& data) { - return data.small_caption_font_family_name; - } - static const int32_t& small_caption_font_height( - const ::blink::RendererPreferences& data) { - return data.small_caption_font_height; - } - static const base::string16& menu_font_family_name( - const ::blink::RendererPreferences& data) { - return data.menu_font_family_name; - } - static const int32_t& menu_font_height( - const ::blink::RendererPreferences& data) { - return data.menu_font_height; - } - static const base::string16& status_font_family_name( - const ::blink::RendererPreferences& data) { - return data.status_font_family_name; - } - static const int32_t& status_font_height( - const ::blink::RendererPreferences& data) { - return data.status_font_height; - } - static const base::string16& message_font_family_name( - const ::blink::RendererPreferences& data) { - return data.message_font_family_name; - } - static const int32_t& message_font_height( - const ::blink::RendererPreferences& data) { - return data.message_font_height; - } - static const int32_t& vertical_scroll_bar_width_in_dips( - const ::blink::RendererPreferences& data) { - return data.vertical_scroll_bar_width_in_dips; - } - static const int32_t& horizontal_scroll_bar_height_in_dips( - const ::blink::RendererPreferences& data) { - return data.horizontal_scroll_bar_height_in_dips; - } - static const int32_t& arrow_bitmap_height_vertical_scroll_bar_in_dips( - const ::blink::RendererPreferences& data) { - return data.arrow_bitmap_height_vertical_scroll_bar_in_dips; - } - static const int32_t& arrow_bitmap_width_horizontal_scroll_bar_in_dips( - const ::blink::RendererPreferences& data) { - return data.arrow_bitmap_width_horizontal_scroll_bar_in_dips; - } -#endif - - static const bool& plugin_fullscreen_allowed( - const ::blink::RendererPreferences& data) { - return data.plugin_fullscreen_allowed; - } - - static const bool& caret_browsing_enabled( - const ::blink::RendererPreferences& data) { - return data.caret_browsing_enabled; - } - - static bool Read(blink::mojom::RendererPreferencesDataView, - ::blink::RendererPreferences* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_RENDERER_PREFERENCES_RENDERER_PREFERENCES_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/sampling_heap_profiler/OWNERS b/chromium/src/third_party/blink/public/common/sampling_heap_profiler/OWNERS deleted file mode 100644 index 87c9661..0000000 --- a/chromium/src/third_party/blink/public/common/sampling_heap_profiler/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -alph@chromium.org
diff --git a/chromium/src/third_party/blink/public/common/scheduler/OWNERS b/chromium/src/third_party/blink/public/common/scheduler/OWNERS deleted file mode 100644 index 6f83df0..0000000 --- a/chromium/src/third_party/blink/public/common/scheduler/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://third_party/blink/renderer/platform/scheduler/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h b/chromium/src/third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h deleted file mode 100644 index ae0864f..0000000 --- a/chromium/src/third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h +++ /dev/null
@@ -1,134 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_SCHEDULER_WEB_SCHEDULER_TRACKED_FEATURE_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_SCHEDULER_WEB_SCHEDULER_TRACKED_FEATURE_H_ - -#include <stdint.h> -#include <string> -#include "base/optional.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { -namespace scheduler { - -// A list of features which influence scheduling behaviour (throttling / -// freezing / back-forward cache) and which might be sent to the browser process -// for metrics-related purposes. -// -// Please keep in sync with WebSchedulerTrackedFeature in -// tools/metrics/histograms/enums.xml. These values should not be renumbered. -enum class WebSchedulerTrackedFeature { - kWebSocket = 0, - kWebRTC = 1, - - // TODO(rakina): Move tracking of cache-control usage from - // WebSchedulerTrackedFeature to RenderFrameHost. - kMainResourceHasCacheControlNoCache = 2, - kMainResourceHasCacheControlNoStore = 3, - kSubresourceHasCacheControlNoCache = 4, - kSubresourceHasCacheControlNoStore = 5, - - kPageShowEventListener = 6, - kPageHideEventListener = 7, - kBeforeUnloadEventListener = 8, - kUnloadEventListener = 9, - kFreezeEventListener = 10, - kResumeEventListener = 11, - - kContainsPlugins = 12, - kDocumentLoaded = 13, - kDedicatedWorkerOrWorklet = 14, - - // There are some other values defined for specific request context types - // (e.g., XHR). This value corresponds to a network requests not covered by - // specific context types down below. - kOutstandingNetworkRequestOthers = 15, - - // kServiceWorkerControlledPage = 16. Removed after implementing ServiceWorker - // support. - - kOutstandingIndexedDBTransaction = 17, - - // Whether the page tried to request a permission regardless of the outcome. - // TODO(altimin): Track this more accurately depending on the data. - // See permission.mojom for more details. - kRequestedGeolocationPermission = 19, - kRequestedNotificationsPermission = 20, - kRequestedMIDIPermission = 21, - kRequestedAudioCapturePermission = 22, - kRequestedVideoCapturePermission = 23, - kRequestedBackForwardCacheBlockedSensors = 24, - // This covers all background-related permissions, including background sync, - // background fetch and others. - kRequestedBackgroundWorkPermission = 26, - - kBroadcastChannel = 27, - - kIndexedDBConnection = 28, - - // kWebGL = 29. Removed after implementing WebGL support. - kWebVR = 30, - kWebXR = 31, - - kSharedWorker = 32, - - kWebLocks = 33, - kWebHID = 34, - - // kWakeLock = 35, Removed because clean-up is done upon visibility change. - - kWebShare = 36, - - kRequestedStorageAccessGrant = 37, - kWebNfc = 38, - kWebFileSystem = 39, - - kOutstandingNetworkRequestFetch = 40, - kOutstandingNetworkRequestXHR = 41, - - kAppBanner = 42, - kPrinting = 43, - kWebDatabase = 44, - kPictureInPicture = 45, - kPortal = 46, - kSpeechRecognizer = 47, - kIdleManager = 48, - kPaymentManager = 49, - kSpeechSynthesis = 50, - kKeyboardLock = 51, - kWebOTPService = 52, - kOutstandingNetworkRequestDirectSocket = 53, - - // NB: This enum is used in a bitmask, so kMaxValue must be less than 64. - kMaxValue = kOutstandingNetworkRequestDirectSocket -}; - -static_assert(static_cast<uint32_t>(WebSchedulerTrackedFeature::kMaxValue) < 64, - "This enum is used in a bitmask, so the values should fit into a" - "64-bit integer"); - -BLINK_COMMON_EXPORT std::string FeatureToHumanReadableString( - WebSchedulerTrackedFeature feature); - -BLINK_COMMON_EXPORT base::Optional<WebSchedulerTrackedFeature> StringToFeature( - const std::string& str); - -// Converts a WebSchedulerTrackedFeature to a bit for use in a bitmask. -BLINK_COMMON_EXPORT constexpr uint64_t FeatureToBit( - WebSchedulerTrackedFeature feature) { - return 1ull << static_cast<uint32_t>(feature); -} - -// Sticky features can't be unregistered and remain active for the rest of the -// lifetime of the page. -BLINK_COMMON_EXPORT bool IsFeatureSticky(WebSchedulerTrackedFeature feature); - -// All the sticky features in bitmask form. -BLINK_COMMON_EXPORT uint64_t StickyFeaturesBitmask(); - -} // namespace scheduler -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_SCHEDULER_WEB_SCHEDULER_TRACKED_FEATURE_H_
diff --git a/chromium/src/third_party/blink/public/common/service_worker/OWNERS b/chromium/src/third_party/blink/public/common/service_worker/OWNERS deleted file mode 100644 index c07cce4..0000000 --- a/chromium/src/third_party/blink/public/common/service_worker/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -file://content/browser/service_worker/OWNERS - -per-file *_type_converter*.*=set noparent -per-file *_type_converter*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/sms/OWNERS b/chromium/src/third_party/blink/public/common/sms/OWNERS deleted file mode 100644 index ad9d6f7..0000000 --- a/chromium/src/third_party/blink/public/common/sms/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://content/browser/sms/OWNERS
diff --git a/chromium/src/third_party/blink/public/common/switches.h b/chromium/src/third_party/blink/public/common/switches.h deleted file mode 100644 index 20225f9..0000000 --- a/chromium/src/third_party/blink/public/common/switches.h +++ /dev/null
@@ -1,55 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_SWITCHES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_SWITCHES_H_ - -#include "third_party/blink/public/common/common_export.h" - -namespace blink { -namespace switches { - -// base::Feature should be use instead of switches where possible. - -// All switches in alphabetical order. The switches should be documented -// alongside the definition of their values in the .cc file. -BLINK_COMMON_EXPORT extern const char kAllowPreCommitInput[]; -BLINK_COMMON_EXPORT extern const char kBlinkSettings[]; -BLINK_COMMON_EXPORT extern const char kDarkModeSettings[]; -BLINK_COMMON_EXPORT extern const char kDefaultTileWidth[]; -BLINK_COMMON_EXPORT extern const char kDefaultTileHeight[]; -BLINK_COMMON_EXPORT extern const char kDisableImageAnimationResync[]; -BLINK_COMMON_EXPORT extern const char kDisableLowResTiling[]; -BLINK_COMMON_EXPORT extern const char kDisablePartialRaster[]; -BLINK_COMMON_EXPORT extern const char kDisablePreferCompositingToLCDText[]; -BLINK_COMMON_EXPORT extern const char kDisableRGBA4444Textures[]; -BLINK_COMMON_EXPORT extern const char kDisableThreadedScrolling[]; -BLINK_COMMON_EXPORT extern const char kDisableZeroCopy[]; -BLINK_COMMON_EXPORT extern const char - kEnableGpuMemoryBufferCompositorResources[]; -BLINK_COMMON_EXPORT extern const char kEnableLowResTiling[]; -BLINK_COMMON_EXPORT extern const char kEnablePreferCompositingToLCDText[]; -BLINK_COMMON_EXPORT extern const char kEnableRGBA4444Textures[]; -BLINK_COMMON_EXPORT extern const char kEnableRasterSideDarkModeForImages[]; -BLINK_COMMON_EXPORT extern const char kEnableZeroCopy[]; -BLINK_COMMON_EXPORT extern const char kGpuRasterizationMSAASampleCount[]; -BLINK_COMMON_EXPORT extern const char kIntensiveWakeUpThrottlingPolicy[]; -BLINK_COMMON_EXPORT extern const char - kIntensiveWakeUpThrottlingPolicy_ForceDisable[]; -BLINK_COMMON_EXPORT extern const char - kIntensiveWakeUpThrottlingPolicy_ForceEnable[]; -BLINK_COMMON_EXPORT extern const char kMaxUntiledLayerHeight[]; -BLINK_COMMON_EXPORT extern const char kMaxUntiledLayerWidth[]; -BLINK_COMMON_EXPORT extern const char kMinHeightForGpuRasterTile[]; -BLINK_COMMON_EXPORT extern const char kNetworkQuietTimeout[]; -BLINK_COMMON_EXPORT extern const char kPassiveListenersDefault[]; -BLINK_COMMON_EXPORT extern const char kShowLayoutShiftRegions[]; -BLINK_COMMON_EXPORT extern const char kShowPaintRects[]; -BLINK_COMMON_EXPORT extern const char kTouchTextSelectionStrategy[]; - -BLINK_COMMON_EXPORT extern const char kUserAgentClientHintDisable[]; -} // namespace switches -} // namespace blink - -#endif // CONTENT_PUBLIC_COMMON_CONTENT_SWITCHES_H_
diff --git a/chromium/src/third_party/blink/public/common/tokens/OWNERS b/chromium/src/third_party/blink/public/common/tokens/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/tokens/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/user_agent/OWNERS b/chromium/src/third_party/blink/public/common/user_agent/OWNERS deleted file mode 100644 index bf152e4..0000000 --- a/chromium/src/third_party/blink/public/common/user_agent/OWNERS +++ /dev/null
@@ -1,4 +0,0 @@ -mkwst@chromium.org - -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/user_agent/user_agent_metadata.h b/chromium/src/third_party/blink/public/common/user_agent/user_agent_metadata.h deleted file mode 100644 index fd794a7..0000000 --- a/chromium/src/third_party/blink/public/common/user_agent/user_agent_metadata.h +++ /dev/null
@@ -1,84 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_METADATA_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_METADATA_H_ - -#include <string> - -#include "base/optional.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -// Note: if changing this, see also -// content/public/common/common_param_traits_macros.h -struct BLINK_COMMON_EXPORT UserAgentBrandVersion { - UserAgentBrandVersion() = default; - UserAgentBrandVersion(const std::string& ua_brand, - const std::string& ua_major_version); - - bool operator==(const UserAgentBrandVersion& a) const; - - std::string brand; - std::string major_version; -}; - -using UserAgentBrandList = std::vector<UserAgentBrandVersion>; - -// Note: if changing this, see also -// content/public/common/common_param_traits_macros.h -struct BLINK_COMMON_EXPORT UserAgentMetadata { - // Turning the brand list into a structured header comes up often enough and - // is just non-trivial enough that it's better to be in one place. - const std::string SerializeBrandVersionList(); - - static base::Optional<UserAgentMetadata> Demarshal( - const base::Optional<std::string>& encoded); - static base::Optional<std::string> Marshal( - const base::Optional<UserAgentMetadata>& ua_metadata); - UserAgentBrandList brand_version_list; - - std::string full_version; - std::string platform; - std::string platform_version; - std::string architecture; - std::string model; - bool mobile = false; -}; - -// Used when customizing the sent User-Agent and Sec-CH-UA-* for -// features like "request desktop site", which override those from defaults -// for some individual navigations. WebContents::SetUserAgentOverride() -// is the main entry point used for the functionality. -// -// Like above, this has legacy IPC traits in -// content/public/common/common_param_traits_macros.h -struct BLINK_COMMON_EXPORT UserAgentOverride { - // Helper which sets only UA, no client hints. - static UserAgentOverride UserAgentOnly(const std::string& ua) { - UserAgentOverride result; - result.ua_string_override = ua; - return result; - } - - // Empty |ua_string_override| means no override; - // |ua_metadata_override| must also be null in that case. - std::string ua_string_override; - - // Non-nullopt if custom values for user agent client hint properties - // should be used. If this is null, and |ua_string_override| is non-empty, - // no UA client hints will be sent. - base::Optional<UserAgentMetadata> ua_metadata_override; -}; - -bool BLINK_COMMON_EXPORT operator==(const UserAgentMetadata& a, - const UserAgentMetadata& b); - -bool BLINK_COMMON_EXPORT operator==(const UserAgentOverride& a, - const UserAgentOverride& b); - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_METADATA_H_
diff --git a/chromium/src/third_party/blink/public/common/user_agent/user_agent_mojom_traits.h b/chromium/src/third_party/blink/public/common/user_agent/user_agent_mojom_traits.h deleted file mode 100644 index 5928995..0000000 --- a/chromium/src/third_party/blink/public/common/user_agent/user_agent_mojom_traits.h +++ /dev/null
@@ -1,89 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/user_agent/user_agent_metadata.h" - -#include <string> - -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/user_agent/user_agent_metadata.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::UserAgentBrandVersionDataView, - ::blink::UserAgentBrandVersion> { - static const std::string& brand(const ::blink::UserAgentBrandVersion& data) { - return data.brand; - } - - static const std::string& major_version( - const ::blink::UserAgentBrandVersion& data) { - return data.major_version; - } - - static bool Read(blink::mojom::UserAgentBrandVersionDataView data, - ::blink::UserAgentBrandVersion* out); -}; - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::UserAgentMetadataDataView, - ::blink::UserAgentMetadata> { - static const blink::UserAgentBrandList& brand_version_list( - const ::blink::UserAgentMetadata& data) { - return data.brand_version_list; - } - - static const std::string& full_version( - const ::blink::UserAgentMetadata& data) { - return data.full_version; - } - static const std::string& platform(const ::blink::UserAgentMetadata& data) { - return data.platform; - } - static const std::string& platform_version( - const ::blink::UserAgentMetadata& data) { - return data.platform_version; - } - static const std::string& architecture( - const ::blink::UserAgentMetadata& data) { - return data.architecture; - } - static const std::string& model(const ::blink::UserAgentMetadata& data) { - return data.model; - } - - static const bool& mobile(const ::blink::UserAgentMetadata& data) { - return data.mobile; - } - - static bool Read(blink::mojom::UserAgentMetadataDataView data, - ::blink::UserAgentMetadata* out); -}; - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::UserAgentOverrideDataView, - ::blink::UserAgentOverride> { - static const std::string& ua_string_override( - const ::blink::UserAgentOverride& data) { - return data.ua_string_override; - } - - static const base::Optional<::blink::UserAgentMetadata> ua_metadata_override( - const ::blink::UserAgentOverride& data) { - return data.ua_metadata_override; - } - - static bool Read(blink::mojom::UserAgentOverrideDataView, - ::blink::UserAgentOverride* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_USER_AGENT_USER_AGENT_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/web_package/signed_exchange_consts.h b/chromium/src/third_party/blink/public/common/web_package/signed_exchange_consts.h deleted file mode 100644 index d9c67d9..0000000 --- a/chromium/src/third_party/blink/public/common/web_package/signed_exchange_consts.h +++ /dev/null
@@ -1,21 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_SIGNED_EXCHANGE_CONSTS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_SIGNED_EXCHANGE_CONSTS_H_ - -#include <stddef.h> -#include <string> - -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -BLINK_COMMON_EXPORT extern const char kSignedExchangeVariantsHeader[]; -BLINK_COMMON_EXPORT extern const char kSignedExchangeVariantKeyHeader[]; -BLINK_COMMON_EXPORT extern const char kSignedExchangeMimeType[]; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_SIGNED_EXCHANGE_CONSTS_H_
diff --git a/chromium/src/third_party/blink/public/common/web_package/web_package_request_matcher.h b/chromium/src/third_party/blink/public/common/web_package/web_package_request_matcher.h deleted file mode 100644 index 0cfbfe4..0000000 --- a/chromium/src/third_party/blink/public/common/web_package/web_package_request_matcher.h +++ /dev/null
@@ -1,77 +0,0 @@ -// Copyright 2019 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_WEB_PACKAGE_REQUEST_MATCHER_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_WEB_PACKAGE_REQUEST_MATCHER_H_ - -#include <map> -#include <string> -#include <vector> - -#include "base/gtest_prod_util.h" -#include "base/optional.h" -#include "net/http/http_request_headers.h" -#include "third_party/blink/public/common/common_export.h" - -namespace blink { - -// WebPackageRequestMatcher implements the Request Matching algorithm [1]. -// [1] https://wicg.github.io/webpackage/loading.html#request-matching -class BLINK_COMMON_EXPORT WebPackageRequestMatcher { - public: - // Keys must be lower-cased. - using HeaderMap = std::map<std::string, std::string>; - - // |request_headers| is the request headers of `browserRequest` in [1]. If - // it does not have an Accept-Language header, languages in |accept_langs| - // are used for matching. - // |accept_langs| is a comma separated ordered list of language codes. - WebPackageRequestMatcher(const net::HttpRequestHeaders& request_headers, - const std::string& accept_langs); - bool MatchRequest(const HeaderMap& response_headers) const; - - // Returns the iterator of |variant_keys_list| which contains the best - // matching variant key. This method use the preference order of the result of - // "Cache Behaviour" [2]. If there is no matching variant key, returns - // |variant_keys_list.end()|. - // [2]: - // https://httpwg.org/http-extensions/draft-ietf-httpbis-variants.html#cache - std::vector<std::string>::const_iterator FindBestMatchingVariantKey( - const std::string& variants, - const std::vector<std::string>& variant_keys_list) const; - - // Returns the index of best matching variant key within the all possible - // key for |variants|, in lexicographic (row-major) order. - base::Optional<size_t> FindBestMatchingIndex( - const std::string& variants) const; - - private: - net::HttpRequestHeaders request_headers_; - - static bool MatchRequest(const net::HttpRequestHeaders& request_headers, - const HeaderMap& response_headers); - static std::vector<std::vector<std::string>> CacheBehavior( - const std::vector<std::pair<std::string, std::vector<std::string>>>& - variants, - const net::HttpRequestHeaders& request_headers); - - static std::vector<std::string>::const_iterator FindBestMatchingVariantKey( - const net::HttpRequestHeaders& request_headers, - const std::string& variants, - const std::vector<std::string>& variant_key_list); - - static base::Optional<size_t> FindBestMatchingIndex( - const net::HttpRequestHeaders& request_headers, - const std::string& variants); - - FRIEND_TEST_ALL_PREFIXES(WebPackageRequestMatcherTest, MatchRequest); - FRIEND_TEST_ALL_PREFIXES(WebPackageRequestMatcherTest, CacheBehavior); - FRIEND_TEST_ALL_PREFIXES(WebPackageRequestMatcherTest, - FindBestMatchingVariantKey); - FRIEND_TEST_ALL_PREFIXES(WebPackageRequestMatcherTest, FindBestMatchingIndex); -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PACKAGE_WEB_PACKAGE_REQUEST_MATCHER_H_
diff --git a/chromium/src/third_party/blink/public/common/web_preferences/OWNERS b/chromium/src/third_party/blink/public/common/web_preferences/OWNERS deleted file mode 100644 index 585fa06..0000000 --- a/chromium/src/third_party/blink/public/common/web_preferences/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS \ No newline at end of file
diff --git a/chromium/src/third_party/blink/public/common/web_preferences/web_preferences.h b/chromium/src/third_party/blink/public/common/web_preferences/web_preferences.h deleted file mode 100644 index ab72775..0000000 --- a/chromium/src/third_party/blink/public/common/web_preferences/web_preferences.h +++ /dev/null
@@ -1,374 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_H_ - -#include <map> -#include <string> -#include <vector> - -#include "base/strings/string16.h" -#include "base/time/time.h" -#include "build/build_config.h" -#include "net/nqe/effective_connection_type.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/mojom/css/preferred_color_scheme.mojom-shared.h" -#include "third_party/blink/public/mojom/css/preferred_contrast.mojom-shared.h" -#include "third_party/blink/public/mojom/v8_cache_options.mojom-forward.h" -#include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom-shared.h" -#include "url/gurl.h" - -namespace blink { - -class WebView; - -namespace web_pref { - -using blink::mojom::EffectiveConnectionType; - -// Map of ISO 15924 four-letter script code to font family. For example, -// "Arab" to "My Arabic Font". -typedef std::map<std::string, base::string16> ScriptFontFamilyMap; - -// The ISO 15924 script code for undetermined script aka Common. It's the -// default used on WebKit's side to get/set a font setting when no script is -// specified. -BLINK_COMMON_EXPORT extern const char kCommonScript[]; - -// A struct for managing blink's settings. -// -// Adding new values to this class probably involves updating -// blink::WebSettings, -// browser/profiles/profile.cc, and -// content/public/common/common_param_traits_macros.h -struct BLINK_COMMON_EXPORT WebPreferences { - ScriptFontFamilyMap standard_font_family_map; - ScriptFontFamilyMap fixed_font_family_map; - ScriptFontFamilyMap serif_font_family_map; - ScriptFontFamilyMap sans_serif_font_family_map; - ScriptFontFamilyMap cursive_font_family_map; - ScriptFontFamilyMap fantasy_font_family_map; - ScriptFontFamilyMap pictograph_font_family_map; - int default_font_size; - int default_fixed_font_size; - int minimum_font_size; - int minimum_logical_font_size; - std::string default_encoding; - bool context_menu_on_mouse_up; - bool javascript_enabled; - bool web_security_enabled; - bool loads_images_automatically; - bool images_enabled; - bool plugins_enabled; - bool dom_paste_enabled; - bool shrinks_standalone_images_to_fit; - bool text_areas_are_resizable; - bool allow_scripts_to_close_windows; - bool remote_fonts_enabled; - bool javascript_can_access_clipboard; - bool xslt_enabled; - // We don't use dns_prefetching_enabled to disable DNS prefetching. Instead, - // we disable the feature at a lower layer so that we catch non-WebKit uses - // of DNS prefetch as well. - bool dns_prefetching_enabled; - // Preference to save data. When enabled, requests will contain the header - // 'Save-Data: on'. - bool data_saver_enabled; - // Whether data saver holdback for Web APIs is enabled. If enabled, data saver - // appears as disabled to the web consumers even if it has been actually - // enabled by the user. - bool data_saver_holdback_web_api_enabled; - bool local_storage_enabled; - bool databases_enabled; - bool application_cache_enabled; - bool tabs_to_links; - bool disable_ipc_flooding_protection; - bool hyperlink_auditing_enabled; - bool allow_universal_access_from_file_urls; - bool allow_file_access_from_file_urls; - bool webgl1_enabled; - bool webgl2_enabled; - bool pepper_3d_enabled; - bool flash_3d_enabled; - bool flash_stage3d_enabled; - bool flash_stage3d_baseline_enabled; - bool privileged_webgl_extensions_enabled; - bool webgl_errors_to_console_enabled; - bool hide_scrollbars; - bool accelerated_2d_canvas_enabled; - bool new_canvas_2d_api_enabled; - bool antialiased_2d_canvas_disabled; - bool antialiased_clips_2d_canvas_enabled; - bool accelerated_filters_enabled; - bool deferred_filters_enabled; - bool container_culling_enabled; - bool allow_running_insecure_content; - // If true, taints all <canvas> elements, regardless of origin. - bool disable_reading_from_canvas; - // Strict mixed content checking disables both displaying and running insecure - // mixed content, and disables embedder notifications that such content was - // requested (thereby preventing user override). - bool strict_mixed_content_checking; - // Strict powerful feature restrictions block insecure usage of powerful - // features (like device orientation) that we haven't yet disabled for the web - // at large. - bool strict_powerful_feature_restrictions; - // TODO(jww): Remove when WebView no longer needs this exception. - bool allow_geolocation_on_insecure_origins; - // Disallow user opt-in for blockable mixed content. - bool strictly_block_blockable_mixed_content; - bool block_mixed_plugin_content; - bool password_echo_enabled; - bool should_print_backgrounds; - bool should_clear_document_background; - bool enable_scroll_animator; - bool threaded_scrolling_enabled; - bool prefers_reduced_motion; - bool touch_event_feature_detection_enabled; - int pointer_events_max_touch_points; - int available_pointer_types; - blink::mojom::PointerType primary_pointer_type; - int available_hover_types; - blink::mojom::HoverType primary_hover_type; - bool dont_send_key_events_to_javascript; - bool barrel_button_for_drag_enabled = false; - bool sync_xhr_in_documents_enabled; - // TODO(https://crbug.com/1163644): Remove once Chrome Apps are deprecated. - bool target_blank_implies_no_opener_enabled_will_be_removed = true; - // TODO(https://crbug.com/1172495): Remove once Chrome Apps are deprecated. - bool allow_non_empty_navigator_plugins = false; - int number_of_cpu_cores; - blink::mojom::EditingBehavior editing_behavior; - bool supports_multiple_windows; - bool viewport_enabled; - bool viewport_meta_enabled; - - // If true - Blink will clamp the minimum scale factor to the content width, - // preventing zoom beyond the visible content. This is really only needed if - // viewport_enabled is on. - bool shrinks_viewport_contents_to_fit; - - blink::mojom::ViewportStyle viewport_style; - bool always_show_context_menu_on_touch; - bool smooth_scroll_for_find_enabled; - bool main_frame_resizes_are_orientation_changes; - bool initialize_at_minimum_page_scale; - bool smart_insert_delete_enabled; - bool spatial_navigation_enabled; - bool navigate_on_drag_drop; - blink::mojom::V8CacheOptions v8_cache_options; - bool record_whole_document; - - // This flags corresponds to a Page's Settings' setCookieEnabled state. It - // only controls whether or not the "document.cookie" field is properly - // connected to the backing store, for instance if you wanted to be able to - // define custom getters and setters from within a unique security content - // without raising a DOM security exception. - bool cookie_enabled; - - // This flag indicates whether H/W accelerated video decode is enabled. - // Defaults to false. - bool accelerated_video_decode_enabled; - - blink::mojom::ImageAnimationPolicy animation_policy = - blink::mojom::ImageAnimationPolicy::kImageAnimationPolicyAllowed; - - bool user_gesture_required_for_presentation; - - bool text_tracks_enabled; - - // These fields specify the foreground and background color for WebVTT text - // tracks. Their values can be any legal CSS color descriptor. - std::string text_track_background_color; - std::string text_track_text_color; - - // These fields specify values for CSS properties used to style WebVTT text - // tracks. - // Specifies CSS font-size property in percentage. - std::string text_track_text_size; - std::string text_track_text_shadow; - std::string text_track_font_family; - std::string text_track_font_style; - // Specifies the value for CSS font-variant property. - std::string text_track_font_variant; - - // These fields specify values for CSS properties used to style the window - // around WebVTT text tracks. - // Window color can be any legal CSS color descriptor. - std::string text_track_window_color; - // Window padding is in em. - std::string text_track_window_padding; - // Window radius is in pixels. - std::string text_track_window_radius; - - // Specifies the margin for WebVTT text tracks as a percentage of media - // element height/width (for horizontal/vertical text respectively). - // Cues will not be placed in this margin area. - float text_track_margin_percentage; - - bool immersive_mode_enabled; - - bool double_tap_to_zoom_enabled; - - bool fullscreen_supported; - - bool text_autosizing_enabled; - - // Representation of the Web App Manifest scope if any. - GURL web_app_scope; - -#if defined(OS_ANDROID) - float font_scale_factor; - float device_scale_adjustment; - bool force_enable_zoom; - GURL default_video_poster_url; - bool support_deprecated_target_density_dpi; - bool use_legacy_background_size_shorthand_behavior; - bool wide_viewport_quirk; - bool use_wide_viewport; - bool force_zero_layout_height; - bool viewport_meta_merge_content_quirk; - bool viewport_meta_non_user_scalable_quirk; - bool viewport_meta_zero_values_quirk; - bool clobber_user_agent_initial_scale_quirk; - bool ignore_main_frame_overflow_hidden_quirk; - bool report_screen_size_in_physical_pixels_quirk; - // Used by Android_WebView only to support legacy apps that inject script into - // a top-level initial empty document and expect it to persist on navigation. - bool reuse_global_for_unowned_main_frame; - // Specifies default setting for spellcheck when the spellcheck attribute is - // not explicitly specified. - bool spellcheck_enabled_by_default; - // If enabled, when a video goes fullscreen, the orientation should be locked. - bool video_fullscreen_orientation_lock_enabled; - // If enabled, fullscreen should be entered/exited when the device is rotated - // to/from the orientation of the video. - bool video_rotate_to_fullscreen_enabled; - bool embedded_media_experience_enabled; - // Enable 8 (#RRGGBBAA) and 4 (#RGBA) value hex colors in CSS Android - // WebView quirk (http://crbug.com/618472). - bool css_hex_alpha_color_enabled; - // Enable support for document.scrollingElement - // WebView sets this to false to retain old documentElement behaviour - // (http://crbug.com/761016). - bool scroll_top_left_interop_enabled; - // Disable features such as offscreen canvas that depend on the viz - // architecture of surface embedding. Android WebView does not support this - // architecture yet. - bool disable_features_depending_on_viz; - // Don't accelerate small canvases to avoid crashes TODO(crbug.com/1004304) - bool disable_accelerated_small_canvases; -#endif // defined(OS_ANDROID) - - // Enable forcibly modifying content rendering to result in a light on dark - // color scheme. - bool force_dark_mode_enabled = false; - - // Default (used if the page or UA doesn't override these) values for page - // scale limits. These are set directly on the WebView so there's no analogue - // in WebSettings. - float default_minimum_page_scale_factor; - float default_maximum_page_scale_factor; - - // Whether download UI should be hidden on this page. - bool hide_download_ui; - - // Whether it is a presentation receiver. - bool presentation_receiver; - - // If disabled, media controls should never be used. - bool media_controls_enabled; - - // Whether we want to disable updating selection on mutating selection range. - // This is to work around Samsung's email app issue. See - // https://crbug.com/699943 for details. - // TODO(changwan): remove this once we no longer support Android N. - bool do_not_update_selection_on_mutating_selection_range; - - // Defines the current autoplay policy. - blink::mojom::AutoplayPolicy autoplay_policy = - blink::mojom::AutoplayPolicy::kNoUserGestureRequired; - - // The preferred color scheme for the web content. The scheme is used to - // evaluate the prefers-color-scheme media query and resolve UA color scheme - // to be used based on the supported-color-schemes META tag and CSS property. - blink::mojom::PreferredColorScheme preferred_color_scheme = - blink::mojom::PreferredColorScheme::kLight; - - // The preferred contrast for the web content. The contrast is used to - // evaluate the prefers-contrast media query. - blink::mojom::PreferredContrast preferred_contrast = - blink::mojom::PreferredContrast::kNoPreference; - - // Network quality threshold below which resources from iframes are assigned - // either kVeryLow or kVeryLow Blink priority. - EffectiveConnectionType low_priority_iframes_threshold; - - // Whether Picture-in-Picture is enabled. - bool picture_in_picture_enabled; - - // Whether a translate service is available. - // blink's hrefTranslate attribute existence relies on the result. - // See https://github.com/dtapuska/html-translate - bool translate_service_available; - - // A value other than - // mojom::EffectiveConnectionType::kEffectiveConnectionUnknownType implies - // that the network quality estimate related Web APIs are in the holdback - // mode. When the holdback is enabled, the related Web APIs return network - // quality estimate corresponding to |network_quality_estimator_web_holdback| - // regardless of the actual quality. - EffectiveConnectionType network_quality_estimator_web_holdback; - - // Whether lazy loading of frames and images is enabled. - bool lazy_load_enabled = true; - - // Specifies how close a lazily loaded iframe or image should be from the - // viewport before it should start being loaded in, depending on the effective - // connection type of the current network. Blink will use the default distance - // threshold for effective connection types that aren't specified here. - std::map<EffectiveConnectionType, int> - lazy_frame_loading_distance_thresholds_px; - std::map<EffectiveConnectionType, int> - lazy_image_loading_distance_thresholds_px; - std::map<EffectiveConnectionType, int> lazy_image_first_k_fully_load; - - // Setting to false disables upgrades to HTTPS for HTTP resources in HTTPS - // sites. - bool allow_mixed_content_upgrades; - - // Whether the focused element should always be indicated (for example, by - // forcing :focus-visible to match regardless of focus method). - bool always_show_focus; - - // Whether touch input can trigger HTML drag-and-drop operations. The - // default value depends on the platform. - bool touch_drag_drop_enabled; - - // Whether the end of a drag fires a contextmenu event and possibly shows a - // context-menu (depends on how the event is handled). Currently touch-drags - // cannot show context menus, see crbug.com/1096189. - bool touch_dragend_context_menu = false; - - // By default, WebXR's immersive-ar session creation is allowed, but this can - // change depending on the enterprise policy if the platform supports it. - bool webxr_immersive_ar_allowed = true; - - // We try to keep the default values the same as the default values in - // chrome, except for the cases where it would require lots of extra work for - // the embedder to use the same default value. - WebPreferences(); - WebPreferences(const WebPreferences& other); - WebPreferences(WebPreferences&& other); - ~WebPreferences(); - WebPreferences& operator=(const WebPreferences& other); - WebPreferences& operator=(WebPreferences&& other); -}; - -} // namespace web_pref - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_H_
diff --git a/chromium/src/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h b/chromium/src/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h deleted file mode 100644 index 68d33ca..0000000 --- a/chromium/src/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h +++ /dev/null
@@ -1,776 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_MOJOM_TRAITS_H_ - -#include "build/build_config.h" -#include "mojo/public/cpp/bindings/struct_traits.h" -#include "net/nqe/effective_connection_type.h" -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/web_preferences/web_preferences.h" -#include "third_party/blink/public/mojom/webpreferences/web_preferences.mojom.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView, - blink::web_pref::WebPreferences> { - static const std::map<std::string, base::string16>& standard_font_family_map( - const blink::web_pref::WebPreferences& r) { - return r.standard_font_family_map; - } - - static const std::map<std::string, base::string16>& fixed_font_family_map( - const blink::web_pref::WebPreferences& r) { - return r.fixed_font_family_map; - } - - static const std::map<std::string, base::string16>& serif_font_family_map( - const blink::web_pref::WebPreferences& r) { - return r.serif_font_family_map; - } - - static const std::map<std::string, base::string16>& - sans_serif_font_family_map(const blink::web_pref::WebPreferences& r) { - return r.sans_serif_font_family_map; - } - - static const std::map<std::string, base::string16>& cursive_font_family_map( - const blink::web_pref::WebPreferences& r) { - return r.cursive_font_family_map; - } - - static const std::map<std::string, base::string16>& fantasy_font_family_map( - const blink::web_pref::WebPreferences& r) { - return r.fantasy_font_family_map; - } - - static const std::map<std::string, base::string16>& - pictograph_font_family_map(const blink::web_pref::WebPreferences& r) { - return r.pictograph_font_family_map; - } - - static uint32_t default_font_size(const blink::web_pref::WebPreferences& r) { - return r.default_font_size; - } - - static uint32_t default_fixed_font_size( - const blink::web_pref::WebPreferences& r) { - return r.default_fixed_font_size; - } - - static uint32_t minimum_font_size(const blink::web_pref::WebPreferences& r) { - return r.minimum_font_size; - } - - static uint32_t minimum_logical_font_size( - const blink::web_pref::WebPreferences& r) { - return r.minimum_logical_font_size; - } - - static std::string default_encoding( - const blink::web_pref::WebPreferences& r) { - return r.default_encoding; - } - - static bool context_menu_on_mouse_up( - const blink::web_pref::WebPreferences& r) { - return r.context_menu_on_mouse_up; - } - - static bool javascript_enabled(const blink::web_pref::WebPreferences& r) { - return r.javascript_enabled; - } - - static bool web_security_enabled(const blink::web_pref::WebPreferences& r) { - return r.web_security_enabled; - } - - static bool loads_images_automatically( - const blink::web_pref::WebPreferences& r) { - return r.loads_images_automatically; - } - - static bool images_enabled(const blink::web_pref::WebPreferences& r) { - return r.images_enabled; - } - - static bool plugins_enabled(const blink::web_pref::WebPreferences& r) { - return r.plugins_enabled; - } - - static bool dom_paste_enabled(const blink::web_pref::WebPreferences& r) { - return r.dom_paste_enabled; - } - - static bool shrinks_standalone_images_to_fit( - const blink::web_pref::WebPreferences& r) { - return r.shrinks_standalone_images_to_fit; - } - - static bool text_areas_are_resizable( - const blink::web_pref::WebPreferences& r) { - return r.text_areas_are_resizable; - } - - static bool allow_scripts_to_close_windows( - const blink::web_pref::WebPreferences& r) { - return r.allow_scripts_to_close_windows; - } - - static bool remote_fonts_enabled(const blink::web_pref::WebPreferences& r) { - return r.remote_fonts_enabled; - } - - static bool javascript_can_access_clipboard( - const blink::web_pref::WebPreferences& r) { - return r.javascript_can_access_clipboard; - } - - static bool xslt_enabled(const blink::web_pref::WebPreferences& r) { - return r.xslt_enabled; - } - - static bool dns_prefetching_enabled( - const blink::web_pref::WebPreferences& r) { - return r.dns_prefetching_enabled; - } - - static bool data_saver_enabled(const blink::web_pref::WebPreferences& r) { - return r.data_saver_enabled; - } - - static bool data_saver_holdback_web_api_enabled( - const blink::web_pref::WebPreferences& r) { - return r.data_saver_holdback_web_api_enabled; - } - - static bool local_storage_enabled(const blink::web_pref::WebPreferences& r) { - return r.local_storage_enabled; - } - - static bool databases_enabled(const blink::web_pref::WebPreferences& r) { - return r.databases_enabled; - } - - static bool application_cache_enabled( - const blink::web_pref::WebPreferences& r) { - return r.application_cache_enabled; - } - - static bool tabs_to_links(const blink::web_pref::WebPreferences& r) { - return r.tabs_to_links; - } - - static bool disable_ipc_flooding_protection( - const blink::web_pref::WebPreferences& r) { - return r.disable_ipc_flooding_protection; - } - - static bool hyperlink_auditing_enabled( - const blink::web_pref::WebPreferences& r) { - return r.hyperlink_auditing_enabled; - } - - static bool allow_universal_access_from_file_urls( - const blink::web_pref::WebPreferences& r) { - return r.allow_universal_access_from_file_urls; - } - - static bool allow_file_access_from_file_urls( - const blink::web_pref::WebPreferences& r) { - return r.allow_file_access_from_file_urls; - } - - static bool webgl1_enabled(const blink::web_pref::WebPreferences& r) { - return r.webgl1_enabled; - } - - static bool webgl2_enabled(const blink::web_pref::WebPreferences& r) { - return r.webgl2_enabled; - } - - static bool pepper_3d_enabled(const blink::web_pref::WebPreferences& r) { - return r.pepper_3d_enabled; - } - - static bool flash_3d_enabled(const blink::web_pref::WebPreferences& r) { - return r.flash_3d_enabled; - } - - static bool flash_stage3d_enabled(const blink::web_pref::WebPreferences& r) { - return r.flash_stage3d_enabled; - } - - static bool flash_stage3d_baseline_enabled( - const blink::web_pref::WebPreferences& r) { - return r.flash_stage3d_baseline_enabled; - } - - static bool privileged_webgl_extensions_enabled( - const blink::web_pref::WebPreferences& r) { - return r.privileged_webgl_extensions_enabled; - } - - static bool webgl_errors_to_console_enabled( - const blink::web_pref::WebPreferences& r) { - return r.webgl_errors_to_console_enabled; - } - - static bool hide_scrollbars(const blink::web_pref::WebPreferences& r) { - return r.hide_scrollbars; - } - - static bool accelerated_2d_canvas_enabled( - const blink::web_pref::WebPreferences& r) { - return r.accelerated_2d_canvas_enabled; - } - - static bool new_canvas_2d_api_enabled( - const blink::web_pref::WebPreferences& r) { - return r.new_canvas_2d_api_enabled; - } - - static bool antialiased_2d_canvas_disabled( - const blink::web_pref::WebPreferences& r) { - return r.antialiased_2d_canvas_disabled; - } - - static bool antialiased_clips_2d_canvas_enabled( - const blink::web_pref::WebPreferences& r) { - return r.antialiased_clips_2d_canvas_enabled; - } - - static bool accelerated_filters_enabled( - const blink::web_pref::WebPreferences& r) { - return r.accelerated_filters_enabled; - } - - static bool deferred_filters_enabled( - const blink::web_pref::WebPreferences& r) { - return r.deferred_filters_enabled; - } - - static bool container_culling_enabled( - const blink::web_pref::WebPreferences& r) { - return r.container_culling_enabled; - } - - static bool allow_running_insecure_content( - const blink::web_pref::WebPreferences& r) { - return r.allow_running_insecure_content; - } - - static bool disable_reading_from_canvas( - const blink::web_pref::WebPreferences& r) { - return r.disable_reading_from_canvas; - } - - static bool strict_mixed_content_checking( - const blink::web_pref::WebPreferences& r) { - return r.strict_mixed_content_checking; - } - - static bool strict_powerful_feature_restrictions( - const blink::web_pref::WebPreferences& r) { - return r.strict_powerful_feature_restrictions; - } - - static bool allow_geolocation_on_insecure_origins( - const blink::web_pref::WebPreferences& r) { - return r.allow_geolocation_on_insecure_origins; - } - - static bool strictly_block_blockable_mixed_content( - const blink::web_pref::WebPreferences& r) { - return r.strictly_block_blockable_mixed_content; - } - - static bool block_mixed_plugin_content( - const blink::web_pref::WebPreferences& r) { - return r.block_mixed_plugin_content; - } - - static bool password_echo_enabled(const blink::web_pref::WebPreferences& r) { - return r.password_echo_enabled; - } - - static bool should_clear_document_background( - const blink::web_pref::WebPreferences& r) { - return r.should_clear_document_background; - } - - static bool enable_scroll_animator(const blink::web_pref::WebPreferences& r) { - return r.enable_scroll_animator; - } - - static bool threaded_scrolling_enabled( - const blink::web_pref::WebPreferences& r) { - return r.threaded_scrolling_enabled; - } - - static bool prefers_reduced_motion(const blink::web_pref::WebPreferences& r) { - return r.prefers_reduced_motion; - } - - static bool touch_event_feature_detection_enabled( - const blink::web_pref::WebPreferences& r) { - return r.touch_event_feature_detection_enabled; - } - - static uint32_t pointer_events_max_touch_points( - const blink::web_pref::WebPreferences& r) { - return r.pointer_events_max_touch_points; - } - - static uint32_t available_pointer_types( - const blink::web_pref::WebPreferences& r) { - return r.available_pointer_types; - } - - static blink::mojom::PointerType primary_pointer_type( - const blink::web_pref::WebPreferences& r) { - return r.primary_pointer_type; - } - - static uint32_t available_hover_types( - const blink::web_pref::WebPreferences& r) { - return r.available_hover_types; - } - - static blink::mojom::HoverType primary_hover_type( - const blink::web_pref::WebPreferences& r) { - return r.primary_hover_type; - } - - static bool dont_send_key_events_to_javascript( - const blink::web_pref::WebPreferences& r) { - return r.dont_send_key_events_to_javascript; - } - - static bool barrel_button_for_drag_enabled( - const blink::web_pref::WebPreferences& r) { - return r.barrel_button_for_drag_enabled; - } - - static bool sync_xhr_in_documents_enabled( - const blink::web_pref::WebPreferences& r) { - return r.sync_xhr_in_documents_enabled; - } - - static bool target_blank_implies_no_opener_enabled_will_be_removed( - const blink::web_pref::WebPreferences& r) { - return r.target_blank_implies_no_opener_enabled_will_be_removed; - } - - static bool allow_non_empty_navigator_plugins( - const blink::web_pref::WebPreferences& r) { - return r.allow_non_empty_navigator_plugins; - } - - static uint32_t number_of_cpu_cores( - const blink::web_pref::WebPreferences& r) { - return r.number_of_cpu_cores; - } - - static blink::mojom::EditingBehavior editing_behavior( - const blink::web_pref::WebPreferences& r) { - return r.editing_behavior; - } - - static bool supports_multiple_windows( - const blink::web_pref::WebPreferences& r) { - return r.supports_multiple_windows; - } - - static bool viewport_enabled(const blink::web_pref::WebPreferences& r) { - return r.viewport_enabled; - } - - static bool viewport_meta_enabled(const blink::web_pref::WebPreferences& r) { - return r.viewport_meta_enabled; - } - - static bool shrinks_viewport_contents_to_fit( - const blink::web_pref::WebPreferences& r) { - return r.shrinks_viewport_contents_to_fit; - } - - static blink::mojom::ViewportStyle viewport_style( - const blink::web_pref::WebPreferences& r) { - return r.viewport_style; - } - - static bool smooth_scroll_for_find_enabled( - const blink::web_pref::WebPreferences& r) { - return r.smooth_scroll_for_find_enabled; - } - - static bool main_frame_resizes_are_orientation_changes( - const blink::web_pref::WebPreferences& r) { - return r.main_frame_resizes_are_orientation_changes; - } - - static bool initialize_at_minimum_page_scale( - const blink::web_pref::WebPreferences& r) { - return r.initialize_at_minimum_page_scale; - } - - static bool smart_insert_delete_enabled( - const blink::web_pref::WebPreferences& r) { - return r.smart_insert_delete_enabled; - } - - static bool spatial_navigation_enabled( - const blink::web_pref::WebPreferences& r) { - return r.spatial_navigation_enabled; - } - - static bool navigate_on_drag_drop(const blink::web_pref::WebPreferences& r) { - return r.navigate_on_drag_drop; - } - - static const blink::mojom::V8CacheOptions& v8_cache_options( - const blink::web_pref::WebPreferences& r) { - return r.v8_cache_options; - } - - static bool record_whole_document(const blink::web_pref::WebPreferences& r) { - return r.record_whole_document; - } - - static bool cookie_enabled(const blink::web_pref::WebPreferences& r) { - return r.cookie_enabled; - } - - static bool accelerated_video_decode_enabled( - const blink::web_pref::WebPreferences& r) { - return r.accelerated_video_decode_enabled; - } - - static blink::mojom::ImageAnimationPolicy animation_policy( - const blink::web_pref::WebPreferences& r) { - return r.animation_policy; - } - - static bool user_gesture_required_for_presentation( - const blink::web_pref::WebPreferences& r) { - return r.user_gesture_required_for_presentation; - } - - static bool text_tracks_enabled(const blink::web_pref::WebPreferences& r) { - return r.text_tracks_enabled; - } - - static const std::string& text_track_background_color( - const blink::web_pref::WebPreferences& r) { - return r.text_track_background_color; - } - - static const std::string& text_track_text_color( - const blink::web_pref::WebPreferences& r) { - return r.text_track_text_color; - } - - static const std::string& text_track_text_size( - const blink::web_pref::WebPreferences& r) { - return r.text_track_text_size; - } - - static const std::string& text_track_text_shadow( - const blink::web_pref::WebPreferences& r) { - return r.text_track_text_shadow; - } - - static const std::string& text_track_font_family( - const blink::web_pref::WebPreferences& r) { - return r.text_track_font_family; - } - - static const std::string& text_track_font_style( - const blink::web_pref::WebPreferences& r) { - return r.text_track_font_style; - } - - static const std::string& text_track_font_variant( - const blink::web_pref::WebPreferences& r) { - return r.text_track_font_variant; - } - - static const std::string& text_track_window_color( - const blink::web_pref::WebPreferences& r) { - return r.text_track_window_color; - } - - static const std::string& text_track_window_padding( - const blink::web_pref::WebPreferences& r) { - return r.text_track_window_padding; - } - - static const std::string& text_track_window_radius( - const blink::web_pref::WebPreferences& r) { - return r.text_track_window_radius; - } - - static float text_track_margin_percentage( - const blink::web_pref::WebPreferences& r) { - return r.text_track_margin_percentage; - } - - static bool immersive_mode_enabled(const blink::web_pref::WebPreferences& r) { - return r.immersive_mode_enabled; - } - - static bool double_tap_to_zoom_enabled( - const blink::web_pref::WebPreferences& r) { - return r.double_tap_to_zoom_enabled; - } - - static bool fullscreen_supported(const blink::web_pref::WebPreferences& r) { - return r.fullscreen_supported; - } - - static bool text_autosizing_enabled( - const blink::web_pref::WebPreferences& r) { - return r.text_autosizing_enabled; - } - - static const GURL& web_app_scope(const ::blink::web_pref::WebPreferences& r) { - return r.web_app_scope; - } - -#if defined(OS_ANDROID) - static float font_scale_factor(const blink::web_pref::WebPreferences& r) { - return r.font_scale_factor; - } - - static float device_scale_adjustment( - const blink::web_pref::WebPreferences& r) { - return r.device_scale_adjustment; - } - - static bool force_enable_zoom(const blink::web_pref::WebPreferences& r) { - return r.force_enable_zoom; - } - - static const GURL& default_video_poster_url( - const blink::web_pref::WebPreferences& r) { - return r.default_video_poster_url; - } - - static bool support_deprecated_target_density_dpi( - const blink::web_pref::WebPreferences& r) { - return r.support_deprecated_target_density_dpi; - } - - static bool use_legacy_background_size_shorthand_behavior( - const blink::web_pref::WebPreferences& r) { - return r.use_legacy_background_size_shorthand_behavior; - } - - static bool wide_viewport_quirk(const blink::web_pref::WebPreferences& r) { - return r.wide_viewport_quirk; - } - - static bool use_wide_viewport(const blink::web_pref::WebPreferences& r) { - return r.use_wide_viewport; - } - - static bool force_zero_layout_height( - const blink::web_pref::WebPreferences& r) { - return r.force_zero_layout_height; - } - - static bool viewport_meta_merge_content_quirk( - const blink::web_pref::WebPreferences& r) { - return r.viewport_meta_merge_content_quirk; - } - - static bool viewport_meta_non_user_scalable_quirk( - const blink::web_pref::WebPreferences& r) { - return r.viewport_meta_non_user_scalable_quirk; - } - - static bool viewport_meta_zero_values_quirk( - const blink::web_pref::WebPreferences& r) { - return r.viewport_meta_zero_values_quirk; - } - - static bool clobber_user_agent_initial_scale_quirk( - const blink::web_pref::WebPreferences& r) { - return r.clobber_user_agent_initial_scale_quirk; - } - - static bool ignore_main_frame_overflow_hidden_quirk( - const blink::web_pref::WebPreferences& r) { - return r.ignore_main_frame_overflow_hidden_quirk; - } - - static bool report_screen_size_in_physical_pixels_quirk( - const blink::web_pref::WebPreferences& r) { - return r.report_screen_size_in_physical_pixels_quirk; - } - - static bool reuse_global_for_unowned_main_frame( - const blink::web_pref::WebPreferences& r) { - return r.reuse_global_for_unowned_main_frame; - } - - static bool spellcheck_enabled_by_default( - const blink::web_pref::WebPreferences& r) { - return r.spellcheck_enabled_by_default; - } - - static bool video_fullscreen_orientation_lock_enabled( - const blink::web_pref::WebPreferences& r) { - return r.video_fullscreen_orientation_lock_enabled; - } - - static bool video_rotate_to_fullscreen_enabled( - const blink::web_pref::WebPreferences& r) { - return r.video_rotate_to_fullscreen_enabled; - } - - static bool embedded_media_experience_enabled( - const blink::web_pref::WebPreferences& r) { - return r.embedded_media_experience_enabled; - } - - static bool css_hex_alpha_color_enabled( - const blink::web_pref::WebPreferences& r) { - return r.css_hex_alpha_color_enabled; - } - - static bool scroll_top_left_interop_enabled( - const blink::web_pref::WebPreferences& r) { - return r.scroll_top_left_interop_enabled; - } - - static bool disable_features_depending_on_viz( - const blink::web_pref::WebPreferences& r) { - return r.disable_features_depending_on_viz; - } - - static bool disable_accelerated_small_canvases( - const blink::web_pref::WebPreferences& r) { - return r.disable_accelerated_small_canvases; - } -#endif - - static bool force_dark_mode_enabled( - const blink::web_pref::WebPreferences& r) { - return r.force_dark_mode_enabled; - } - - static float default_minimum_page_scale_factor( - const blink::web_pref::WebPreferences& r) { - return r.default_minimum_page_scale_factor; - } - - static float default_maximum_page_scale_factor( - const blink::web_pref::WebPreferences& r) { - return r.default_maximum_page_scale_factor; - } - - static bool hide_download_ui(const blink::web_pref::WebPreferences& r) { - return r.hide_download_ui; - } - - static bool presentation_receiver(const blink::web_pref::WebPreferences& r) { - return r.presentation_receiver; - } - - static bool media_controls_enabled(const blink::web_pref::WebPreferences& r) { - return r.media_controls_enabled; - } - - static bool do_not_update_selection_on_mutating_selection_range( - const blink::web_pref::WebPreferences& r) { - return r.do_not_update_selection_on_mutating_selection_range; - } - - static blink::mojom::AutoplayPolicy autoplay_policy( - const blink::web_pref::WebPreferences& r) { - return r.autoplay_policy; - } - - static blink::mojom::PreferredColorScheme preferred_color_scheme( - const blink::web_pref::WebPreferences& r) { - return r.preferred_color_scheme; - } - - static blink::mojom::PreferredContrast preferred_contrast( - const blink::web_pref::WebPreferences& r) { - return r.preferred_contrast; - } - - static blink::mojom::EffectiveConnectionType low_priority_iframes_threshold( - const blink::web_pref::WebPreferences& r) { - return r.low_priority_iframes_threshold; - } - - static bool picture_in_picture_enabled( - const blink::web_pref::WebPreferences& r) { - return r.picture_in_picture_enabled; - } - - static bool translate_service_available( - const blink::web_pref::WebPreferences& r) { - return r.translate_service_available; - } - - static blink::mojom::EffectiveConnectionType - network_quality_estimator_web_holdback( - const blink::web_pref::WebPreferences& r) { - return r.network_quality_estimator_web_holdback; - } - - static bool lazy_load_enabled(const blink::web_pref::WebPreferences& r) { - return r.lazy_load_enabled; - } - - static const std::map<blink::mojom::EffectiveConnectionType, int32_t>& - lazy_frame_loading_distance_thresholds_px( - const blink::web_pref::WebPreferences& r) { - return r.lazy_frame_loading_distance_thresholds_px; - } - - static const std::map<blink::mojom::EffectiveConnectionType, int32_t>& - lazy_image_loading_distance_thresholds_px( - const blink::web_pref::WebPreferences& r) { - return r.lazy_image_loading_distance_thresholds_px; - } - - static const std::map<blink::mojom::EffectiveConnectionType, int32_t>& - lazy_image_first_k_fully_load(const blink::web_pref::WebPreferences& r) { - return r.lazy_image_first_k_fully_load; - } - - static bool allow_mixed_content_upgrades( - const blink::web_pref::WebPreferences& r) { - return r.allow_mixed_content_upgrades; - } - - static bool always_show_focus(const blink::web_pref::WebPreferences& r) { - return r.always_show_focus; - } - - static bool touch_drag_drop_enabled( - const blink::web_pref::WebPreferences& r) { - return r.touch_drag_drop_enabled; - } - - static bool webxr_immersive_ar_allowed( - const blink::web_pref::WebPreferences& r) { - return r.webxr_immersive_ar_allowed; - } - - static bool Read(blink::mojom::WebPreferencesDataView r, - blink::web_pref::WebPreferences* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WEB_PREFERENCES_WEB_PREFERENCES_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/widget/OWNERS b/chromium/src/third_party/blink/public/common/widget/OWNERS deleted file mode 100644 index d5fefd8..0000000 --- a/chromium/src/third_party/blink/public/common/widget/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -per-file *_mojom_traits*.*=set noparent -per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
diff --git a/chromium/src/third_party/blink/public/common/widget/device_emulation_params.h b/chromium/src/third_party/blink/public/common/widget/device_emulation_params.h deleted file mode 100644 index c876cc3..0000000 --- a/chromium/src/third_party/blink/public/common/widget/device_emulation_params.h +++ /dev/null
@@ -1,84 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_DEVICE_EMULATION_PARAMS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_DEVICE_EMULATION_PARAMS_H_ - -#include "base/optional.h" -#include "third_party/blink/public/mojom/widget/device_emulation_params.mojom-shared.h" -#include "third_party/blink/public/mojom/widget/screen_orientation.mojom-shared.h" -#include "ui/gfx/geometry/point.h" -#include "ui/gfx/geometry/point_f.h" -#include "ui/gfx/geometry/rect.h" -#include "ui/gfx/geometry/size.h" - -namespace blink { - -// All sizes are measured in device independent pixels. -struct DeviceEmulationParams { - mojom::EmulatedScreenType screen_type = mojom::EmulatedScreenType::kDesktop; - - // Emulated screen size. Typically full / physical size of the device screen - // in DIP. Empty size means using default value: original one for kDesktop - // screen position, equal to |view_size| for kMobile. - gfx::Size screen_size; - - // Position of view on the screen. Missing position means using default value: - // original one for kDesktop screen position, (0, 0) for kMobile. - base::Optional<gfx::Point> view_position; - - // Emulated view size. A width or height of 0 means no override in that - // dimension, but the other can still be applied. When both are 0, then the - // |scale| will be applied to the view instead. - gfx::Size view_size; - - // If zero, the original device scale factor is preserved. - float device_scale_factor = 0; - - // Scale the contents of the main frame. The view's size will be scaled by - // this number when they are not specified in |view_size|. - float scale = 1; - - // Forced viewport offset for screenshots during emulation, (-1, -1) for - // disabled. - gfx::PointF viewport_offset = gfx::PointF(-1, -1); - - // Viewport scale for screenshots during emulation, 0 for current. - float viewport_scale = 0; - - // Optional screen orientation type, with mojom::ScreenOrientation::kUndefined - // value meaning no emulation necessary. - mojom::ScreenOrientation screen_orientation_type = - mojom::ScreenOrientation::kUndefined; - - // Screen orientation angle, used together with screenOrientationType. - uint32_t screen_orientation_angle = 0; - - // Screen window segments dimensions. - std::vector<gfx::Rect> window_segments; - - DeviceEmulationParams() = default; -}; - -inline bool operator==(const DeviceEmulationParams& a, - const DeviceEmulationParams& b) { - return a.screen_type == b.screen_type && a.screen_size == b.screen_size && - a.view_position == b.view_position && - a.device_scale_factor == b.device_scale_factor && - a.view_size == b.view_size && a.scale == b.scale && - a.screen_orientation_type == b.screen_orientation_type && - a.screen_orientation_angle == b.screen_orientation_angle && - a.viewport_offset == b.viewport_offset && - a.viewport_scale == b.viewport_scale && - a.window_segments == b.window_segments; -} - -inline bool operator!=(const DeviceEmulationParams& a, - const DeviceEmulationParams& b) { - return !(a == b); -} - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/widget/device_emulation_params_mojom_traits.h b/chromium/src/third_party/blink/public/common/widget/device_emulation_params_mojom_traits.h deleted file mode 100644 index abcf659..0000000 --- a/chromium/src/third_party/blink/public/common/widget/device_emulation_params_mojom_traits.h +++ /dev/null
@@ -1,72 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_DEVICE_EMULATION_PARAMS_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_DEVICE_EMULATION_PARAMS_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/widget/device_emulation_params.h" -#include "third_party/blink/public/mojom/widget/device_emulation_params.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::DeviceEmulationParamsDataView, - blink::DeviceEmulationParams> { - static blink::mojom::EmulatedScreenType screen_type( - const blink::DeviceEmulationParams& r) { - return r.screen_type; - } - - static const gfx::Size& screen_size(const blink::DeviceEmulationParams& r) { - return r.screen_size; - } - - static base::Optional<gfx::Point> view_position( - const blink::DeviceEmulationParams& r) { - return r.view_position; - } - - static const gfx::Size& view_size(const blink::DeviceEmulationParams& r) { - return r.view_size; - } - - static float device_scale_factor(const blink::DeviceEmulationParams& r) { - return r.device_scale_factor; - } - - static float scale(const blink::DeviceEmulationParams& r) { return r.scale; } - - static const gfx::PointF& viewport_offset( - const blink::DeviceEmulationParams& r) { - return r.viewport_offset; - } - - static float viewport_scale(const blink::DeviceEmulationParams& r) { - return r.viewport_scale; - } - - static blink::mojom::ScreenOrientation screen_orientation_type( - const blink::DeviceEmulationParams& r) { - return r.screen_orientation_type; - } - - static uint32_t screen_orientation_angle( - const blink::DeviceEmulationParams& r) { - return r.screen_orientation_angle; - } - - static const std::vector<gfx::Rect>& window_segments( - const blink::DeviceEmulationParams& r) { - return r.window_segments; - } - - static bool Read(blink::mojom::DeviceEmulationParamsDataView r, - blink::DeviceEmulationParams* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_DEVICE_EMULATION_PARAMS_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/widget/screen_info.h b/chromium/src/third_party/blink/public/common/widget/screen_info.h deleted file mode 100644 index c6574c8..0000000 --- a/chromium/src/third_party/blink/public/common/widget/screen_info.h +++ /dev/null
@@ -1,117 +0,0 @@ -/* - * Copyright (C) 2009 Google Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_H_ - -#include "third_party/blink/public/mojom/widget/screen_orientation.mojom-shared.h" -#include "ui/gfx/display_color_spaces.h" -#include "ui/gfx/geometry/rect.h" - -namespace blink { - -struct ScreenInfo { - // Device scale factor. Specifies the ratio between physical and logical - // pixels. - float device_scale_factor = 1.f; - - // The color spaces used by output display for various content types. - gfx::DisplayColorSpaces display_color_spaces; - - // The screen depth in bits per pixel. - int depth = 0; - - // The bits per colour component. This assumes that the colours are balanced - // equally. - int depth_per_component = 0; - - // This can be true for black and white printers - bool is_monochrome = false; - - // The display frequency in Hz of the monitor. Set to 0 if it fails in the - // monitor frequency query. - int display_frequency = 0; - - // This is set from the rcMonitor member of MONITORINFOEX, to whit: - // "A RECT structure that specifies the display monitor rectangle, - // expressed in virtual-screen coordinates. Note that if the monitor - // is not the primary display monitor, some of the rectangle's - // coordinates may be negative values." - gfx::Rect rect; - - // This is set from the rcWork member of MONITORINFOEX, to whit: - // "A RECT structure that specifies the work area rectangle of the - // display monitor that can be used by applications, expressed in - // virtual-screen coordinates. Windows uses this rectangle to - // maximize an application on the monitor. The rest of the area in - // rcMonitor contains system windows such as the task bar and side - // bars. Note that if the monitor is not the primary display monitor, - // some of the rectangle's coordinates may be negative values". - gfx::Rect available_rect; - - // This is the orientation 'type' or 'name', as in landscape-primary or - // portrait-secondary for examples. - // See public/mojom/screen_orientation.mojom for the full list. - mojom::ScreenOrientation orientation_type = - mojom::ScreenOrientation::kUndefined; - - // This is the orientation angle of the displayed content in degrees. - // It is the opposite of the physical rotation. - // TODO(crbug.com/840189): we should use an enum rather than a number here. - uint16_t orientation_angle = 0; - - // Proposed: https://github.com/webscreens/window-placement - // Whether this Screen is part of a multi-screen extended visual workspace. - bool is_extended = false; - - ScreenInfo() = default; - - bool operator==(const ScreenInfo& other) const { - return this->device_scale_factor == other.device_scale_factor && - this->display_color_spaces == other.display_color_spaces && - this->depth == other.depth && - this->depth_per_component == other.depth_per_component && - this->is_monochrome == other.is_monochrome && - this->display_frequency == other.display_frequency && - this->rect == other.rect && - this->available_rect == other.available_rect && - this->orientation_type == other.orientation_type && - this->orientation_angle == other.orientation_angle && - this->is_extended == other.is_extended; - } - - bool operator!=(const ScreenInfo& other) const { - return !this->operator==(other); - } -}; - -} // namespace blink - -#endif
diff --git a/chromium/src/third_party/blink/public/common/widget/screen_info_mojom_traits.h b/chromium/src/third_party/blink/public/common/widget/screen_info_mojom_traits.h deleted file mode 100644 index 4f53fa0..0000000 --- a/chromium/src/third_party/blink/public/common/widget/screen_info_mojom_traits.h +++ /dev/null
@@ -1,62 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/widget/screen_info.h" -#include "third_party/blink/public/mojom/widget/screen_info.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT - StructTraits<blink::mojom::ScreenInfoDataView, blink::ScreenInfo> { - static float device_scale_factor(const blink::ScreenInfo& r) { - return r.device_scale_factor; - } - - static const gfx::DisplayColorSpaces& display_color_spaces( - const blink::ScreenInfo& r) { - return r.display_color_spaces; - } - - static int depth(const blink::ScreenInfo& r) { return r.depth; } - - static int depth_per_component(const blink::ScreenInfo& r) { - return r.depth_per_component; - } - - static bool is_monochrome(const blink::ScreenInfo& r) { - return r.is_monochrome; - } - - static int display_frequency(const blink::ScreenInfo& r) { - return r.display_frequency; - } - - static const gfx::Rect& rect(const blink::ScreenInfo& r) { return r.rect; } - - static const gfx::Rect& available_rect(const blink::ScreenInfo& r) { - return r.available_rect; - } - - static blink::mojom::ScreenOrientation orientation_type( - const blink::ScreenInfo& r) { - return r.orientation_type; - } - - static uint16_t orientation_angle(const blink::ScreenInfo& r) { - return r.orientation_angle; - } - - static bool is_extended(const blink::ScreenInfo& r) { return r.is_extended; } - - static bool Read(blink::mojom::ScreenInfoDataView r, blink::ScreenInfo* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_SCREEN_INFO_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/common/widget/visual_properties.h b/chromium/src/third_party/blink/public/common/widget/visual_properties.h deleted file mode 100644 index ea252f8..0000000 --- a/chromium/src/third_party/blink/public/common/widget/visual_properties.h +++ /dev/null
@@ -1,134 +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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_H_ - -#include "base/optional.h" -#include "base/time/time.h" -#include "cc/trees/browser_controls_params.h" -#include "components/viz/common/surfaces/local_surface_id.h" -#include "third_party/blink/public/common/widget/screen_info.h" -#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h" -#include "ui/gfx/geometry/size.h" - -namespace blink { - -// Visual properties contain context required to render a frame tree. -// For legacy reasons, both Page visual properties [shared by all Renderers] and -// Widget visual properties [unique to local frame roots] are passed along the -// same data structure. Separating these is tricky because they both affect -// rendering, and if updates are received asynchronously, this can cause -// incorrect behavior. -// Visual properties are also used for Pepper fullscreen and popups, which are -// also based on Widgets. -// -// The data flow for VisualProperties is tricky. For legacy reasons, visual -// properties are currently always sent from RenderWidgetHosts to RenderWidgets. -// However, RenderWidgets can also send visual properties to out-of-process -// subframes [by bouncing through CrossProcessFrameConnector]. This causes a -// cascading series of VisualProperty messages. This is necessary due to the -// current implementation to make sure that cross-process surfaces get -// simultaneously synchronized. For more details, see: -// https://docs.google.com/document/d/1VKOLBYlujcn862w9LAyUbv6oW9RZgD65oDCI_G5AEVQ/edit#heading=h.wno2seszsyen -// https://docs.google.com/document/d/1J7BTRsylGApm6KHaaTu-m6LLvSWJgf1B9CM-USKIp1k/edit#heading=h.ichmoicfam1y -// -// Known problems: -// + It's not clear which properties are page-specific and which are -// widget-specific. We should document them. -// + It's not clear which properties are only set by the browser, which are only -// set by the renderer, and which are set by both. -// + Given the frame tree A(B(A')) where A and A' are same-origin, same process -// and B is separate origin separate process: -// (1) RenderWidget A gets SynchronizeVisualProperties, passes it to proxy for -// B, sets values on RenderView/Page. -// (2) RenderWidget B gets SynchronizeVisualProperties, passes it to proxy for -// A' -// (3) RenderWidget A' gets SynchronizeVisualProperties. -// In between (1) and (3), frames associated with RenderWidget A' will see -// updated page properties from (1) but are still seeing old widget properties. - -struct VisualProperties { - // Information about the screen (dpi, depth, etc..). - ScreenInfo screen_info; - - // Whether or not blink should be in auto-resize mode. - bool auto_resize_enabled = false; - - // The minimum size for Blink if auto-resize is enabled. - gfx::Size min_size_for_auto_resize; - - // The maximum size for Blink if auto-resize is enabled. - gfx::Size max_size_for_auto_resize; - - // The size for the widget in DIPs. - gfx::Size new_size; - - // The size of the area of the widget that is visible to the user, in DIPs. - // The visible area may be empty if the visible area does not intersect with - // the widget, for example in the case of a child frame that is entirely - // scrolled out of the main frame's viewport. It may also be smaller than the - // widget's size in |new_size| due to the UI hiding part of the widget, such - // as with an on-screen keyboard. - gfx::Size visible_viewport_size; - - // The rect of compositor's viewport in pixels. Note that for top level - // widgets this is roughly the DSF scaled new_size put into a rect. For child - // frame widgets it is a pixel-perfect bounds of the visible region of the - // widget. The size would be similar to visible_viewport_size, but in physical - // pixels and computed via very different means. - // TODO(danakj): It would be super nice to remove one of |new_size|, - // |visible_viewport_size| and |compositor_viewport_pixel_rect|. Their values - // overlap in purpose, creating a very confusing situation about which to use - // for what, and how they should relate or not. - gfx::Rect compositor_viewport_pixel_rect; - - // Browser controls params such as top and bottom controls heights, whether - // controls shrink blink size etc. - cc::BrowserControlsParams browser_controls_params; - - // Whether or not the focused node should be scrolled into view after the - // resize. - bool scroll_focused_node_into_view = false; - - // The local surface ID to use (if valid). - base::Optional<viz::LocalSurfaceId> local_surface_id; - - // Indicates whether tab-initiated fullscreen was granted. - bool is_fullscreen_granted = false; - - // The display mode. - mojom::DisplayMode display_mode = mojom::DisplayMode::kUndefined; - - // This represents the latest capture sequence number requested. When this is - // incremented, that means the caller wants to synchronize surfaces which - // should cause a new LocalSurfaceId to be generated. - uint32_t capture_sequence_number = 0u; - - // This represents the page zoom level for a WebContents. - // (0 is the default value which results in 1.0 zoom factor). - double zoom_level = 0; - - // This represents the page's scale factor, which changes during pinch zoom. - // It needs to be shared with subframes. - float page_scale_factor = 1.f; - - // This represents the child frame's raster scale factor which takes into - // account the transform from child frame space to main frame space. - float compositing_scale_factor = 1.f; - - // The logical segments of the root widget, in widget-relative DIPs. This - // property is set by the root RenderWidget in the renderer process, then - // propagated to child local frame roots via RenderFrameProxy/ - // CrossProcessFrameConnector. - std::vector<gfx::Rect> root_widget_window_segments; - - // Indicates whether a pinch gesture is currently active. Originates in the - // main frame's renderer, and needs to be shared with subframes. - bool is_pinch_gesture_active = false; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_H_
diff --git a/chromium/src/third_party/blink/public/common/widget/visual_properties_mojom_traits.h b/chromium/src/third_party/blink/public/common/widget/visual_properties_mojom_traits.h deleted file mode 100644 index 589e895..0000000 --- a/chromium/src/third_party/blink/public/common/widget/visual_properties_mojom_traits.h +++ /dev/null
@@ -1,106 +0,0 @@ -// Copyright 2020 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 THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_MOJOM_TRAITS_H_ -#define THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_MOJOM_TRAITS_H_ - -#include "third_party/blink/public/common/common_export.h" -#include "third_party/blink/public/common/widget/visual_properties.h" -#include "third_party/blink/public/mojom/widget/visual_properties.mojom-shared.h" - -namespace mojo { - -template <> -struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::VisualPropertiesDataView, - blink::VisualProperties> { - static const blink::ScreenInfo& screen_info( - const blink::VisualProperties& r) { - return r.screen_info; - } - - static bool auto_resize_enabled(const blink::VisualProperties& r) { - return r.auto_resize_enabled; - } - - static const gfx::Size& min_size_for_auto_resize( - const blink::VisualProperties& r) { - return r.min_size_for_auto_resize; - } - - static const gfx::Size& max_size_for_auto_resize( - const blink::VisualProperties& r) { - return r.max_size_for_auto_resize; - } - - static const gfx::Size& new_size(const blink::VisualProperties& r) { - return r.new_size; - } - - static const gfx::Size& visible_viewport_size( - const blink::VisualProperties& r) { - return r.visible_viewport_size; - } - - static const gfx::Rect& compositor_viewport_pixel_rect( - const blink::VisualProperties& r) { - return r.compositor_viewport_pixel_rect; - } - - static base::Optional<cc::BrowserControlsParams> browser_controls_params( - const blink::VisualProperties& r) { - return r.browser_controls_params; - } - - static bool scroll_focused_node_into_view(const blink::VisualProperties& r) { - return r.scroll_focused_node_into_view; - } - - static base::Optional<viz::LocalSurfaceId> local_surface_id( - const blink::VisualProperties& r) { - return r.local_surface_id; - } - - static bool is_fullscreen_granted(const blink::VisualProperties& r) { - return r.is_fullscreen_granted; - } - - static blink::mojom::DisplayMode display_mode( - const blink::VisualProperties& r) { - return r.display_mode; - } - - static uint32_t capture_sequence_number(const blink::VisualProperties& r) { - return r.capture_sequence_number; - } - - static double zoom_level(const blink::VisualProperties& r) { - return r.zoom_level; - } - - static double page_scale_factor(const blink::VisualProperties& r) { - DCHECK_GT(r.page_scale_factor, 0); - return r.page_scale_factor; - } - - static double compositing_scale_factor(const blink::VisualProperties& r) { - DCHECK_GT(r.compositing_scale_factor, 0); - return r.compositing_scale_factor; - } - - static const std::vector<gfx::Rect>& root_widget_window_segments( - const blink::VisualProperties& r) { - return r.root_widget_window_segments; - } - - static bool is_pinch_gesture_active(const blink::VisualProperties& r) { - return r.is_pinch_gesture_active; - } - - static bool Read(blink::mojom::VisualPropertiesDataView r, - blink::VisualProperties* out); -}; - -} // namespace mojo - -#endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_WIDGET_VISUAL_PROPERTIES_MOJOM_TRAITS_H_
diff --git a/chromium/src/third_party/blink/public/devtools_protocol/OWNERS b/chromium/src/third_party/blink/public/devtools_protocol/OWNERS deleted file mode 100644 index 5925879..0000000 --- a/chromium/src/third_party/blink/public/devtools_protocol/OWNERS +++ /dev/null
@@ -1,5 +0,0 @@ -alph@chromium.org -caseq@chromium.org -dgozman@chromium.org -pfeldman@chromium.org -sigurds@chromium.org
diff --git a/chromium/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/chromium/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl deleted file mode 100644 index 19c7dfb..0000000 --- a/chromium/src/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ /dev/null
@@ -1,9050 +0,0 @@ -# Copyright 2017 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. -# -# Contributing to Chrome DevTools Protocol: https://docs.google.com/document/d/1c-COD2kaK__5iMM5SEx-PzNA7HFmgttcYfOHHX0HaOM/edit?usp=sharing - -version - major 1 - minor 3 - -experimental domain Accessibility - depends on DOM - - # Unique accessibility node identifier. - type AXNodeId extends string - - # Enum of possible property types. - type AXValueType extends string - enum - boolean - tristate - booleanOrUndefined - idref - idrefList - integer - node - nodeList - number - string - computedString - token - tokenList - domRelation - role - internalRole - valueUndefined - - # Enum of possible property sources. - type AXValueSourceType extends string - enum - attribute - implicit - style - contents - placeholder - relatedElement - - # Enum of possible native property sources (as a subtype of a particular AXValueSourceType). - type AXValueNativeSourceType extends string - enum - figcaption - label - labelfor - labelwrapped - legend - rubyannotation - tablecaption - title - other - - # A single source for a computed AX property. - type AXValueSource extends object - properties - # What type of source this is. - AXValueSourceType type - # The value of this property source. - optional AXValue value - # The name of the relevant attribute, if any. - optional string attribute - # The value of the relevant attribute, if any. - optional AXValue attributeValue - # Whether this source is superseded by a higher priority source. - optional boolean superseded - # The native markup source for this value, e.g. a <label> element. - optional AXValueNativeSourceType nativeSource - # The value, such as a node or node list, of the native source. - optional AXValue nativeSourceValue - # Whether the value for this property is invalid. - optional boolean invalid - # Reason for the value being invalid, if it is. - optional string invalidReason - - type AXRelatedNode extends object - properties - # The BackendNodeId of the related DOM node. - DOM.BackendNodeId backendDOMNodeId - # The IDRef value provided, if any. - optional string idref - # The text alternative of this node in the current context. - optional string text - - type AXProperty extends object - properties - # The name of this property. - AXPropertyName name - # The value of this property. - AXValue value - - # A single computed AX property. - type AXValue extends object - properties - # The type of this value. - AXValueType type - # The computed value of this property. - optional any value - # One or more related nodes, if applicable. - optional array of AXRelatedNode relatedNodes - # The sources which contributed to the computation of this property. - optional array of AXValueSource sources - - # Values of AXProperty name: - # - from 'busy' to 'roledescription': states which apply to every AX node - # - from 'live' to 'root': attributes which apply to nodes in live regions - # - from 'autocomplete' to 'valuetext': attributes which apply to widgets - # - from 'checked' to 'selected': states which apply to widgets - # - from 'activedescendant' to 'owns' - relationships between elements other than parent/child/sibling. - type AXPropertyName extends string - enum - busy - disabled - editable - focusable - focused - hidden - hiddenRoot - invalid - keyshortcuts - settable - roledescription - live - atomic - relevant - root - autocomplete - hasPopup - level - multiselectable - orientation - multiline - readonly - required - valuemin - valuemax - valuetext - checked - expanded - modal - pressed - selected - activedescendant - controls - describedby - details - errormessage - flowto - labelledby - owns - - # A node in the accessibility tree. - type AXNode extends object - properties - # Unique identifier for this node. - AXNodeId nodeId - # Whether this node is ignored for accessibility - boolean ignored - # Collection of reasons why this node is hidden. - optional array of AXProperty ignoredReasons - # This `Node`'s role, whether explicit or implicit. - optional AXValue role - # The accessible name for this `Node`. - optional AXValue name - # The accessible description for this `Node`. - optional AXValue description - # The value for this `Node`. - optional AXValue value - # All other properties - optional array of AXProperty properties - # IDs for each of this node's child nodes. - optional array of AXNodeId childIds - # The backend ID for the associated DOM node, if any. - optional DOM.BackendNodeId backendDOMNodeId - - # Disables the accessibility domain. - command disable - - # Enables the accessibility domain which causes `AXNodeId`s to remain consistent between method calls. - # This turns on accessibility for the page, which can impact performance until accessibility is disabled. - command enable - - # Fetches the accessibility node and partial accessibility tree for this DOM node, if it exists. - experimental command getPartialAXTree - parameters - # Identifier of the node to get the partial accessibility tree for. - optional DOM.NodeId nodeId - # Identifier of the backend node to get the partial accessibility tree for. - optional DOM.BackendNodeId backendNodeId - # JavaScript object id of the node wrapper to get the partial accessibility tree for. - optional Runtime.RemoteObjectId objectId - # Whether to fetch this nodes ancestors, siblings and children. Defaults to true. - optional boolean fetchRelatives - returns - # The `Accessibility.AXNode` for this DOM node, if it exists, plus its ancestors, siblings and - # children, if requested. - array of AXNode nodes - - # Fetches the entire accessibility tree for the root Document - experimental command getFullAXTree - parameters - # The maximum depth at which descendants of the root node should be retrieved. - # If omitted, the full tree is returned. - optional integer max_depth - returns - array of AXNode nodes - - # Fetches a particular accessibility node by AXNodeId. - # Requires `enable()` to have been called previously. - experimental command getChildAXNodes - parameters - AXNodeId id - returns - array of AXNode nodes - - # Query a DOM node's accessibility subtree for accessible name and role. - # This command computes the name and role for all nodes in the subtree, including those that are - # ignored for accessibility, and returns those that mactch the specified name and role. If no DOM - # node is specified, or the DOM node does not exist, the command returns an error. If neither - # `accessibleName` or `role` is specified, it returns all the accessibility nodes in the subtree. - experimental command queryAXTree - parameters - # Identifier of the node for the root to query. - optional DOM.NodeId nodeId - # Identifier of the backend node for the root to query. - optional DOM.BackendNodeId backendNodeId - # JavaScript object id of the node wrapper for the root to query. - optional Runtime.RemoteObjectId objectId - # Find nodes with this computed name. - optional string accessibleName - # Find nodes with this computed role. - optional string role - returns - # A list of `Accessibility.AXNode` matching the specified attributes, - # including nodes that are ignored for accessibility. - array of AXNode nodes - -experimental domain Animation - depends on Runtime - depends on DOM - - # Animation instance. - type Animation extends object - properties - # `Animation`'s id. - string id - # `Animation`'s name. - string name - # `Animation`'s internal paused state. - boolean pausedState - # `Animation`'s play state. - string playState - # `Animation`'s playback rate. - number playbackRate - # `Animation`'s start time. - number startTime - # `Animation`'s current time. - number currentTime - # Animation type of `Animation`. - enum type - CSSTransition - CSSAnimation - WebAnimation - # `Animation`'s source animation node. - optional AnimationEffect source - # A unique ID for `Animation` representing the sources that triggered this CSS - # animation/transition. - optional string cssId - - # AnimationEffect instance - type AnimationEffect extends object - properties - # `AnimationEffect`'s delay. - number delay - # `AnimationEffect`'s end delay. - number endDelay - # `AnimationEffect`'s iteration start. - number iterationStart - # `AnimationEffect`'s iterations. - number iterations - # `AnimationEffect`'s iteration duration. - number duration - # `AnimationEffect`'s playback direction. - string direction - # `AnimationEffect`'s fill mode. - string fill - # `AnimationEffect`'s target node. - optional DOM.BackendNodeId backendNodeId - # `AnimationEffect`'s keyframes. - optional KeyframesRule keyframesRule - # `AnimationEffect`'s timing function. - string easing - - # Keyframes Rule - type KeyframesRule extends object - properties - # CSS keyframed animation's name. - optional string name - # List of animation keyframes. - array of KeyframeStyle keyframes - - # Keyframe Style - type KeyframeStyle extends object - properties - # Keyframe's time offset. - string offset - # `AnimationEffect`'s timing function. - string easing - - # Disables animation domain notifications. - command disable - - # Enables animation domain notifications. - command enable - - # Returns the current time of the an animation. - command getCurrentTime - parameters - # Id of animation. - string id - returns - # Current time of the page. - number currentTime - - # Gets the playback rate of the document timeline. - command getPlaybackRate - returns - # Playback rate for animations on page. - number playbackRate - - # Releases a set of animations to no longer be manipulated. - command releaseAnimations - parameters - # List of animation ids to seek. - array of string animations - - # Gets the remote object of the Animation. - command resolveAnimation - parameters - # Animation id. - string animationId - returns - # Corresponding remote object. - Runtime.RemoteObject remoteObject - - # Seek a set of animations to a particular time within each animation. - command seekAnimations - parameters - # List of animation ids to seek. - array of string animations - # Set the current time of each animation. - number currentTime - - # Sets the paused state of a set of animations. - command setPaused - parameters - # Animations to set the pause state of. - array of string animations - # Paused state to set to. - boolean paused - - # Sets the playback rate of the document timeline. - command setPlaybackRate - parameters - # Playback rate for animations on page - number playbackRate - - # Sets the timing of an animation node. - command setTiming - parameters - # Animation id. - string animationId - # Duration of the animation. - number duration - # Delay of the animation. - number delay - - # Event for when an animation has been cancelled. - event animationCanceled - parameters - # Id of the animation that was cancelled. - string id - - # Event for each animation that has been created. - event animationCreated - parameters - # Id of the animation that was created. - string id - - # Event for animation that has been started. - event animationStarted - parameters - # Animation that was started. - Animation animation - -experimental domain ApplicationCache - depends on Page - - # Detailed application cache resource information. - type ApplicationCacheResource extends object - properties - # Resource url. - string url - # Resource size. - integer size - # Resource type. - string type - - # Detailed application cache information. - type ApplicationCache extends object - properties - # Manifest URL. - string manifestURL - # Application cache size. - number size - # Application cache creation time. - number creationTime - # Application cache update time. - number updateTime - # Application cache resources. - array of ApplicationCacheResource resources - - # Frame identifier - manifest URL pair. - type FrameWithManifest extends object - properties - # Frame identifier. - Page.FrameId frameId - # Manifest URL. - string manifestURL - # Application cache status. - integer status - - # Enables application cache domain notifications. - command enable - - # Returns relevant application cache data for the document in given frame. - command getApplicationCacheForFrame - parameters - # Identifier of the frame containing document whose application cache is retrieved. - Page.FrameId frameId - returns - # Relevant application cache data for the document in given frame. - ApplicationCache applicationCache - - # Returns array of frame identifiers with manifest urls for each frame containing a document - # associated with some application cache. - command getFramesWithManifests - returns - # Array of frame identifiers with manifest urls for each frame containing a document - # associated with some application cache. - array of FrameWithManifest frameIds - - # Returns manifest URL for document in the given frame. - command getManifestForFrame - parameters - # Identifier of the frame containing document whose manifest is retrieved. - Page.FrameId frameId - returns - # Manifest URL for document in the given frame. - string manifestURL - - event applicationCacheStatusUpdated - parameters - # Identifier of the frame containing document whose application cache updated status. - Page.FrameId frameId - # Manifest URL. - string manifestURL - # Updated application cache status. - integer status - - event networkStateUpdated - parameters - boolean isNowOnline - -# Audits domain allows investigation of page violations and possible improvements. -experimental domain Audits - depends on Network - - # Information about a cookie that is affected by an inspector issue. - type AffectedCookie extends object - properties - # The following three properties uniquely identify a cookie - string name - string path - string domain - - # Information about a request that is affected by an inspector issue. - type AffectedRequest extends object - properties - # The unique request id. - Network.RequestId requestId - optional string url - - # Information about the frame affected by an inspector issue. - type AffectedFrame extends object - properties - Page.FrameId frameId - - type SameSiteCookieExclusionReason extends string - enum - ExcludeSameSiteUnspecifiedTreatedAsLax - ExcludeSameSiteNoneInsecure - ExcludeSameSiteLax - ExcludeSameSiteStrict - - type SameSiteCookieWarningReason extends string - enum - WarnSameSiteUnspecifiedCrossSiteContext - WarnSameSiteNoneInsecure - WarnSameSiteUnspecifiedLaxAllowUnsafe - WarnSameSiteStrictLaxDowngradeStrict - WarnSameSiteStrictCrossDowngradeStrict - WarnSameSiteStrictCrossDowngradeLax - WarnSameSiteLaxCrossDowngradeStrict - WarnSameSiteLaxCrossDowngradeLax - - type SameSiteCookieOperation extends string - enum - SetCookie - ReadCookie - - # This information is currently necessary, as the front-end has a difficult - # time finding a specific cookie. With this, we can convey specific error - # information without the cookie. - type SameSiteCookieIssueDetails extends object - properties - AffectedCookie cookie - array of SameSiteCookieWarningReason cookieWarningReasons - array of SameSiteCookieExclusionReason cookieExclusionReasons - # Optionally identifies the site-for-cookies and the cookie url, which - # may be used by the front-end as additional context. - SameSiteCookieOperation operation - optional string siteForCookies - optional string cookieUrl - optional AffectedRequest request - - type MixedContentResolutionStatus extends string - enum - MixedContentBlocked - MixedContentAutomaticallyUpgraded - MixedContentWarning - - type MixedContentResourceType extends string - enum - Audio - Beacon - CSPReport - Download - EventSource - Favicon - Font - Form - Frame - Image - Import - Manifest - Ping - PluginData - PluginResource - Prefetch - Resource - Script - ServiceWorker - SharedWorker - Stylesheet - Track - Video - Worker - XMLHttpRequest - XSLT - - type MixedContentIssueDetails extends object - properties - # The type of resource causing the mixed content issue (css, js, iframe, - # form,...). Marked as optional because it is mapped to from - # blink::mojom::RequestContextType, which will be replaced - # by network::mojom::RequestDestination - optional MixedContentResourceType resourceType - # The way the mixed content issue is being resolved. - MixedContentResolutionStatus resolutionStatus - # The unsafe http url causing the mixed content issue. - string insecureURL - # The url responsible for the call to an unsafe url. - string mainResourceURL - # The mixed content request. - # Does not always exist (e.g. for unsafe form submission urls). - optional AffectedRequest request - # Optional because not every mixed content issue is necessarily linked to a frame. - optional AffectedFrame frame - - # Enum indicating the reason a response has been blocked. These reasons are - # refinements of the net error BLOCKED_BY_RESPONSE. - type BlockedByResponseReason extends string - enum - CoepFrameResourceNeedsCoepHeader - CoopSandboxedIFrameCannotNavigateToCoopPage - CorpNotSameOrigin - CorpNotSameOriginAfterDefaultedToSameOriginByCoep - CorpNotSameSite - - # Details for a request that has been blocked with the BLOCKED_BY_RESPONSE - # code. Currently only used for COEP/COOP, but may be extended to include - # some CSP errors in the future. - type BlockedByResponseIssueDetails extends object - properties - AffectedRequest request - optional AffectedFrame parentFrame - optional AffectedFrame blockedFrame - BlockedByResponseReason reason - - type HeavyAdResolutionStatus extends string - enum - HeavyAdBlocked - HeavyAdWarning - - type HeavyAdReason extends string - enum - NetworkTotalLimit - CpuTotalLimit - CpuPeakLimit - - type HeavyAdIssueDetails extends object - properties - # The resolution status, either blocking the content or warning. - HeavyAdResolutionStatus resolution - # The reason the ad was blocked, total network or cpu or peak cpu. - HeavyAdReason reason - # The frame that was blocked. - AffectedFrame frame - - type ContentSecurityPolicyViolationType extends string - enum - kInlineViolation - kEvalViolation - kURLViolation - kTrustedTypesSinkViolation - kTrustedTypesPolicyViolation - - type SourceCodeLocation extends object - properties - optional Runtime.ScriptId scriptId - string url - integer lineNumber - integer columnNumber - - type ContentSecurityPolicyIssueDetails extends object - properties - # The url not included in allowed sources. - optional string blockedURL - # Specific directive that is violated, causing the CSP issue. - string violatedDirective - boolean isReportOnly - ContentSecurityPolicyViolationType contentSecurityPolicyViolationType - optional AffectedFrame frameAncestor - optional SourceCodeLocation sourceCodeLocation - optional DOM.BackendNodeId violatingNodeId - - type SharedArrayBufferIssueType extends string - enum - TransferIssue - CreationIssue - - # Details for a issue arising from an SAB being instantiated in, or - # transfered to a context that is not cross-origin isolated. - type SharedArrayBufferIssueDetails extends object - properties - SourceCodeLocation sourceCodeLocation - boolean isWarning - SharedArrayBufferIssueType type - - type TwaQualityEnforcementViolationType extends string - enum - kHttpError - kUnavailableOffline - kDigitalAssetLinks - - type TrustedWebActivityIssueDetails extends object - properties - # The url that triggers the violation. - string url - TwaQualityEnforcementViolationType violationType - optional integer httpStatusCode - # The package name of the Trusted Web Activity client app. This field is - # only used when violation type is kDigitalAssetLinks. - optional string packageName - # The signature of the Trusted Web Activity client app. This field is only - # used when violation type is kDigitalAssetLinks. - optional string signature - - type LowTextContrastIssueDetails extends object - properties - DOM.BackendNodeId violatingNodeId - string violatingNodeSelector - number contrastRatio - number thresholdAA - number thresholdAAA - string fontSize - string fontWeight - - # Details for a CORS related issue, e.g. a warning or error related to - # CORS RFC1918 enforcement. - type CorsIssueDetails extends object - properties - Network.CorsErrorStatus corsErrorStatus - boolean isWarning - AffectedRequest request - optional Network.IPAddressSpace resourceIPAddressSpace - optional Network.ClientSecurityState clientSecurityState - - # A unique identifier for the type of issue. Each type may use one of the - # optional fields in InspectorIssueDetails to convey more specific - # information about the kind of issue. - type InspectorIssueCode extends string - enum - SameSiteCookieIssue - MixedContentIssue - BlockedByResponseIssue - HeavyAdIssue - ContentSecurityPolicyIssue - SharedArrayBufferIssue - TrustedWebActivityIssue - LowTextContrastIssue - CorsIssue - - # This struct holds a list of optional fields with additional information - # specific to the kind of issue. When adding a new issue code, please also - # add a new optional field to this type. - type InspectorIssueDetails extends object - properties - optional SameSiteCookieIssueDetails sameSiteCookieIssueDetails - optional MixedContentIssueDetails mixedContentIssueDetails - optional BlockedByResponseIssueDetails blockedByResponseIssueDetails - optional HeavyAdIssueDetails heavyAdIssueDetails - optional ContentSecurityPolicyIssueDetails contentSecurityPolicyIssueDetails - optional SharedArrayBufferIssueDetails sharedArrayBufferIssueDetails - optional TrustedWebActivityIssueDetails twaQualityEnforcementDetails - optional LowTextContrastIssueDetails lowTextContrastIssueDetails - optional CorsIssueDetails corsIssueDetails - - # An inspector issue reported from the back-end. - type InspectorIssue extends object - properties - InspectorIssueCode code - InspectorIssueDetails details - - # Returns the response body and size if it were re-encoded with the specified settings. Only - # applies to images. - command getEncodedResponse - parameters - # Identifier of the network request to get content for. - Network.RequestId requestId - # The encoding to use. - enum encoding - webp - jpeg - png - # The quality of the encoding (0-1). (defaults to 1) - optional number quality - # Whether to only return the size information (defaults to false). - optional boolean sizeOnly - returns - # The encoded body as a base64 string. Omitted if sizeOnly is true. - optional binary body - # Size before re-encoding. - integer originalSize - # Size after re-encoding. - integer encodedSize - - # Disables issues domain, prevents further issues from being reported to the client. - command disable - - # Enables issues domain, sends the issues collected so far to the client by means of the - # `issueAdded` event. - command enable - - # Runs the contrast check for the target page. Found issues are reported - # using Audits.issueAdded event. - command checkContrast - parameters - # Whether to report WCAG AAA level issues. Default is false. - optional boolean reportAAA - - event issueAdded - parameters - InspectorIssue issue - -# Defines events for background web platform features. -experimental domain BackgroundService - # The Background Service that will be associated with the commands/events. - # Every Background Service operates independently, but they share the same - # API. - type ServiceName extends string - enum - backgroundFetch - backgroundSync - pushMessaging - notifications - paymentHandler - periodicBackgroundSync - - # Enables event updates for the service. - command startObserving - parameters - ServiceName service - - # Disables event updates for the service. - command stopObserving - parameters - ServiceName service - - # Set the recording state for the service. - command setRecording - parameters - boolean shouldRecord - ServiceName service - - # Clears all stored data for the service. - command clearEvents - parameters - ServiceName service - - # Called when the recording state for the service has been updated. - event recordingStateChanged - parameters - boolean isRecording - ServiceName service - - # A key-value pair for additional event information to pass along. - type EventMetadata extends object - properties - string key - string value - - type BackgroundServiceEvent extends object - properties - # Timestamp of the event (in seconds). - Network.TimeSinceEpoch timestamp - # The origin this event belongs to. - string origin - # The Service Worker ID that initiated the event. - ServiceWorker.RegistrationID serviceWorkerRegistrationId - # The Background Service this event belongs to. - ServiceName service - # A description of the event. - string eventName - # An identifier that groups related events together. - string instanceId - # A list of event-specific information. - array of EventMetadata eventMetadata - - # Called with all existing backgroundServiceEvents when enabled, and all new - # events afterwards if enabled and recording. - event backgroundServiceEventReceived - parameters - BackgroundServiceEvent backgroundServiceEvent - -# The Browser domain defines methods and events for browser managing. -domain Browser - experimental type BrowserContextID extends string - experimental type WindowID extends integer - - # The state of the browser window. - experimental type WindowState extends string - enum - normal - minimized - maximized - fullscreen - - # Browser window bounds information - experimental type Bounds extends object - properties - # The offset from the left edge of the screen to the window in pixels. - optional integer left - # The offset from the top edge of the screen to the window in pixels. - optional integer top - # The window width in pixels. - optional integer width - # The window height in pixels. - optional integer height - # The window state. Default to normal. - optional WindowState windowState - - experimental type PermissionType extends string - enum - accessibilityEvents - audioCapture - backgroundSync - backgroundFetch - clipboardReadWrite - clipboardSanitizedWrite - displayCapture - durableStorage - flash - geolocation - midi - midiSysex - nfc - notifications - paymentHandler - periodicBackgroundSync - protectedMediaIdentifier - sensors - videoCapture - videoCapturePanTiltZoom - idleDetection - wakeLockScreen - wakeLockSystem - - experimental type PermissionSetting extends string - enum - granted - denied - prompt - - # Definition of PermissionDescriptor defined in the Permissions API: - # https://w3c.github.io/permissions/#dictdef-permissiondescriptor. - experimental type PermissionDescriptor extends object - properties - # Name of permission. - # See https://cs.chromium.org/chromium/src/third_party/blink/renderer/modules/permissions/permission_descriptor.idl for valid permission names. - string name - # For "midi" permission, may also specify sysex control. - optional boolean sysex - # For "push" permission, may specify userVisibleOnly. - # Note that userVisibleOnly = true is the only currently supported type. - optional boolean userVisibleOnly - # For "clipboard" permission, may specify allowWithoutSanitization. - optional boolean allowWithoutSanitization - # For "camera" permission, may specify panTiltZoom. - optional boolean panTiltZoom - - # Browser command ids used by executeBrowserCommand. - experimental type BrowserCommandId extends string - enum - openTabSearch - closeTabSearch - - # Set permission settings for given origin. - experimental command setPermission - parameters - # Descriptor of permission to override. - PermissionDescriptor permission - # Setting of the permission. - PermissionSetting setting - # Origin the permission applies to, all origins if not specified. - optional string origin - # Context to override. When omitted, default browser context is used. - optional BrowserContextID browserContextId - - # Grant specific permissions to the given origin and reject all others. - experimental command grantPermissions - parameters - array of PermissionType permissions - # Origin the permission applies to, all origins if not specified. - optional string origin - # BrowserContext to override permissions. When omitted, default browser context is used. - optional BrowserContextID browserContextId - - # Reset all permission management for all origins. - experimental command resetPermissions - parameters - # BrowserContext to reset permissions. When omitted, default browser context is used. - optional BrowserContextID browserContextId - - # Set the behavior when downloading a file. - experimental command setDownloadBehavior - parameters - # Whether to allow all or deny all download requests, or use default Chrome behavior if - # available (otherwise deny). |allowAndName| allows download and names files according to - # their dowmload guids. - enum behavior - deny - allow - allowAndName - default - # BrowserContext to set download behavior. When omitted, default browser context is used. - optional BrowserContextID browserContextId - # The default path to save downloaded files to. This is requred if behavior is set to 'allow' - # or 'allowAndName'. - optional string downloadPath - - # Close browser gracefully. - command close - - # Crashes browser on the main thread. - experimental command crash - - # Crashes GPU process. - experimental command crashGpuProcess - - # Returns version information. - command getVersion - returns - # Protocol version. - string protocolVersion - # Product name. - string product - # Product revision. - string revision - # User-Agent. - string userAgent - # V8 version. - string jsVersion - - # Returns the command line switches for the browser process if, and only if - # --enable-automation is on the commandline. - experimental command getBrowserCommandLine - returns - # Commandline parameters - array of string arguments - - # Chrome histogram bucket. - experimental type Bucket extends object - properties - # Minimum value (inclusive). - integer low - # Maximum value (exclusive). - integer high - # Number of samples. - integer count - - # Chrome histogram. - experimental type Histogram extends object - properties - # Name. - string name - # Sum of sample values. - integer sum - # Total number of samples. - integer count - # Buckets. - array of Bucket buckets - - # Get Chrome histograms. - experimental command getHistograms - parameters - # Requested substring in name. Only histograms which have query as a - # substring in their name are extracted. An empty or absent query returns - # all histograms. - optional string query - # If true, retrieve delta since last call. - optional boolean delta - - returns - # Histograms. - array of Histogram histograms - - # Get a Chrome histogram by name. - experimental command getHistogram - parameters - # Requested histogram name. - string name - # If true, retrieve delta since last call. - optional boolean delta - returns - # Histogram. - Histogram histogram - - # Get position and size of the browser window. - experimental command getWindowBounds - parameters - # Browser window id. - WindowID windowId - returns - # Bounds information of the window. When window state is 'minimized', the restored window - # position and size are returned. - Bounds bounds - - # Get the browser window that contains the devtools target. - experimental command getWindowForTarget - parameters - # Devtools agent host id. If called as a part of the session, associated targetId is used. - optional Target.TargetID targetId - returns - # Browser window id. - WindowID windowId - # Bounds information of the window. When window state is 'minimized', the restored window - # position and size are returned. - Bounds bounds - - # Set position and/or size of the browser window. - experimental command setWindowBounds - parameters - # Browser window id. - WindowID windowId - # New window bounds. The 'minimized', 'maximized' and 'fullscreen' states cannot be combined - # with 'left', 'top', 'width' or 'height'. Leaves unspecified fields unchanged. - Bounds bounds - - # Set dock tile details, platform-specific. - experimental command setDockTile - parameters - optional string badgeLabel - # Png encoded image. - optional binary image - - # Invoke custom browser commands used by telemetry. - experimental command executeBrowserCommand - parameters - BrowserCommandId commandId - -# This domain exposes CSS read/write operations. All CSS objects (stylesheets, rules, and styles) -# have an associated `id` used in subsequent operations on the related object. Each object type has -# a specific `id` structure, and those are not interchangeable between objects of different kinds. -# CSS objects can be loaded using the `get*ForNode()` calls (which accept a DOM node id). A client -# can also keep track of stylesheets via the `styleSheetAdded`/`styleSheetRemoved` events and -# subsequently load the required stylesheet contents using the `getStyleSheet[Text]()` methods. -experimental domain CSS - depends on DOM - depends on Page - - type StyleSheetId extends string - - # Stylesheet type: "injected" for stylesheets injected via extension, "user-agent" for user-agent - # stylesheets, "inspector" for stylesheets created by the inspector (i.e. those holding the "via - # inspector" rules), "regular" for regular stylesheets. - type StyleSheetOrigin extends string - enum - injected - user-agent - inspector - regular - - # CSS rule collection for a single pseudo style. - type PseudoElementMatches extends object - properties - # Pseudo element type. - DOM.PseudoType pseudoType - # Matches of CSS rules applicable to the pseudo style. - array of RuleMatch matches - - # Inherited CSS rule collection from ancestor node. - type InheritedStyleEntry extends object - properties - # The ancestor node's inline style, if any, in the style inheritance chain. - optional CSSStyle inlineStyle - # Matches of CSS rules matching the ancestor node in the style inheritance chain. - array of RuleMatch matchedCSSRules - - # Match data for a CSS rule. - type RuleMatch extends object - properties - # CSS rule in the match. - CSSRule rule - # Matching selector indices in the rule's selectorList selectors (0-based). - array of integer matchingSelectors - - # Data for a simple selector (these are delimited by commas in a selector list). - type Value extends object - properties - # Value text. - string text - # Value range in the underlying resource (if available). - optional SourceRange range - - # Selector list data. - type SelectorList extends object - properties - # Selectors in the list. - array of Value selectors - # Rule selector text. - string text - - # CSS stylesheet metainformation. - type CSSStyleSheetHeader extends object - properties - # The stylesheet identifier. - StyleSheetId styleSheetId - # Owner frame identifier. - Page.FrameId frameId - # Stylesheet resource URL. - string sourceURL - # URL of source map associated with the stylesheet (if any). - optional string sourceMapURL - # Stylesheet origin. - StyleSheetOrigin origin - # Stylesheet title. - string title - # The backend id for the owner node of the stylesheet. - optional DOM.BackendNodeId ownerNode - # Denotes whether the stylesheet is disabled. - boolean disabled - # Whether the sourceURL field value comes from the sourceURL comment. - optional boolean hasSourceURL - # Whether this stylesheet is created for STYLE tag by parser. This flag is not set for - # document.written STYLE tags. - boolean isInline - # Whether this stylesheet is mutable. Inline stylesheets become mutable - # after they have been modified via CSSOM API. - # <link> element's stylesheets become mutable only if DevTools modifies them. - # Constructed stylesheets (new CSSStyleSheet()) are mutable immediately after creation. - boolean isMutable - # Whether this stylesheet is a constructed stylesheet (created using new CSSStyleSheet()). - boolean isConstructed - # Line offset of the stylesheet within the resource (zero based). - number startLine - # Column offset of the stylesheet within the resource (zero based). - number startColumn - # Size of the content (in characters). - number length - # Line offset of the end of the stylesheet within the resource (zero based). - number endLine - # Column offset of the end of the stylesheet within the resource (zero based). - number endColumn - - # CSS rule representation. - type CSSRule extends object - properties - # The css style sheet identifier (absent for user agent stylesheet and user-specified - # stylesheet rules) this rule came from. - optional StyleSheetId styleSheetId - # Rule selector data. - SelectorList selectorList - # Parent stylesheet's origin. - StyleSheetOrigin origin - # Associated style declaration. - CSSStyle style - # Media list array (for rules involving media queries). The array enumerates media queries - # starting with the innermost one, going outwards. - optional array of CSSMedia media - - # CSS coverage information. - type RuleUsage extends object - properties - # The css style sheet identifier (absent for user agent stylesheet and user-specified - # stylesheet rules) this rule came from. - StyleSheetId styleSheetId - # Offset of the start of the rule (including selector) from the beginning of the stylesheet. - number startOffset - # Offset of the end of the rule body from the beginning of the stylesheet. - number endOffset - # Indicates whether the rule was actually used by some element in the page. - boolean used - - # Text range within a resource. All numbers are zero-based. - type SourceRange extends object - properties - # Start line of range. - integer startLine - # Start column of range (inclusive). - integer startColumn - # End line of range - integer endLine - # End column of range (exclusive). - integer endColumn - - type ShorthandEntry extends object - properties - # Shorthand name. - string name - # Shorthand value. - string value - # Whether the property has "!important" annotation (implies `false` if absent). - optional boolean important - - type CSSComputedStyleProperty extends object - properties - # Computed style property name. - string name - # Computed style property value. - string value - - # CSS style representation. - type CSSStyle extends object - properties - # The css style sheet identifier (absent for user agent stylesheet and user-specified - # stylesheet rules) this rule came from. - optional StyleSheetId styleSheetId - # CSS properties in the style. - array of CSSProperty cssProperties - # Computed values for all shorthands found in the style. - array of ShorthandEntry shorthandEntries - # Style declaration text (if available). - optional string cssText - # Style declaration range in the enclosing stylesheet (if available). - optional SourceRange range - - # CSS property declaration data. - type CSSProperty extends object - properties - # The property name. - string name - # The property value. - string value - # Whether the property has "!important" annotation (implies `false` if absent). - optional boolean important - # Whether the property is implicit (implies `false` if absent). - optional boolean implicit - # The full property text as specified in the style. - optional string text - # Whether the property is understood by the browser (implies `true` if absent). - optional boolean parsedOk - # Whether the property is disabled by the user (present for source-based properties only). - optional boolean disabled - # The entire property range in the enclosing style declaration (if available). - optional SourceRange range - - # CSS media rule descriptor. - type CSSMedia extends object - properties - # Media query text. - string text - # Source of the media query: "mediaRule" if specified by a @media rule, "importRule" if - # specified by an @import rule, "linkedSheet" if specified by a "media" attribute in a linked - # stylesheet's LINK tag, "inlineSheet" if specified by a "media" attribute in an inline - # stylesheet's STYLE tag. - enum source - mediaRule - importRule - linkedSheet - inlineSheet - # URL of the document containing the media query description. - optional string sourceURL - # The associated rule (@media or @import) header range in the enclosing stylesheet (if - # available). - optional SourceRange range - # Identifier of the stylesheet containing this object (if exists). - optional StyleSheetId styleSheetId - # Array of media queries. - optional array of MediaQuery mediaList - - # Media query descriptor. - type MediaQuery extends object - properties - # Array of media query expressions. - array of MediaQueryExpression expressions - # Whether the media query condition is satisfied. - boolean active - - # Media query expression descriptor. - type MediaQueryExpression extends object - properties - # Media query expression value. - number value - # Media query expression units. - string unit - # Media query expression feature. - string feature - # The associated range of the value text in the enclosing stylesheet (if available). - optional SourceRange valueRange - # Computed length of media query expression (if applicable). - optional number computedLength - - # Information about amount of glyphs that were rendered with given font. - type PlatformFontUsage extends object - properties - # Font's family name reported by platform. - string familyName - # Indicates if the font was downloaded or resolved locally. - boolean isCustomFont - # Amount of glyphs that were rendered with this font. - number glyphCount - - # Information about font variation axes for variable fonts - type FontVariationAxis extends object - properties - # The font-variation-setting tag (a.k.a. "axis tag"). - string tag - # Human-readable variation name in the default language (normally, "en"). - string name - # The minimum value (inclusive) the font supports for this tag. - number minValue - # The maximum value (inclusive) the font supports for this tag. - number maxValue - # The default value. - number defaultValue - - # Properties of a web font: https://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#font-descriptions - # and additional information such as platformFontFamily and fontVariationAxes. - type FontFace extends object - properties - # The font-family. - string fontFamily - # The font-style. - string fontStyle - # The font-variant. - string fontVariant - # The font-weight. - string fontWeight - # The font-stretch. - string fontStretch - # The unicode-range. - string unicodeRange - # The src. - string src - # The resolved platform font family - string platformFontFamily - # Available variation settings (a.k.a. "axes"). - optional array of FontVariationAxis fontVariationAxes - - # CSS keyframes rule representation. - type CSSKeyframesRule extends object - properties - # Animation name. - Value animationName - # List of keyframes. - array of CSSKeyframeRule keyframes - - # CSS keyframe rule representation. - type CSSKeyframeRule extends object - properties - # The css style sheet identifier (absent for user agent stylesheet and user-specified - # stylesheet rules) this rule came from. - optional StyleSheetId styleSheetId - # Parent stylesheet's origin. - StyleSheetOrigin origin - # Associated key text. - Value keyText - # Associated style declaration. - CSSStyle style - - # A descriptor of operation to mutate style declaration text. - type StyleDeclarationEdit extends object - properties - # The css style sheet identifier. - StyleSheetId styleSheetId - # The range of the style text in the enclosing stylesheet. - SourceRange range - # New style text. - string text - - # Inserts a new rule with the given `ruleText` in a stylesheet with given `styleSheetId`, at the - # position specified by `location`. - command addRule - parameters - # The css style sheet identifier where a new rule should be inserted. - StyleSheetId styleSheetId - # The text of a new rule. - string ruleText - # Text position of a new rule in the target style sheet. - SourceRange location - returns - # The newly created rule. - CSSRule rule - - # Returns all class names from specified stylesheet. - command collectClassNames - parameters - StyleSheetId styleSheetId - returns - # Class name list. - array of string classNames - - # Creates a new special "via-inspector" stylesheet in the frame with given `frameId`. - command createStyleSheet - parameters - # Identifier of the frame where "via-inspector" stylesheet should be created. - Page.FrameId frameId - returns - # Identifier of the created "via-inspector" stylesheet. - StyleSheetId styleSheetId - - # Disables the CSS agent for the given page. - command disable - - # Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been - # enabled until the result of this command is received. - command enable - - # Ensures that the given node will have specified pseudo-classes whenever its style is computed by - # the browser. - command forcePseudoState - parameters - # The element id for which to force the pseudo state. - DOM.NodeId nodeId - # Element pseudo classes to force when computing the element's style. - array of string forcedPseudoClasses - - command getBackgroundColors - parameters - # Id of the node to get background colors for. - DOM.NodeId nodeId - returns - # The range of background colors behind this element, if it contains any visible text. If no - # visible text is present, this will be undefined. In the case of a flat background color, - # this will consist of simply that color. In the case of a gradient, this will consist of each - # of the color stops. For anything more complicated, this will be an empty array. Images will - # be ignored (as if the image had failed to load). - optional array of string backgroundColors - # The computed font size for this node, as a CSS computed value string (e.g. '12px'). - optional string computedFontSize - # The computed font weight for this node, as a CSS computed value string (e.g. 'normal' or - # '100'). - optional string computedFontWeight - - # Returns the computed style for a DOM node identified by `nodeId`. - command getComputedStyleForNode - parameters - DOM.NodeId nodeId - returns - # Computed style for the specified DOM node. - array of CSSComputedStyleProperty computedStyle - - # Returns the styles defined inline (explicitly in the "style" attribute and implicitly, using DOM - # attributes) for a DOM node identified by `nodeId`. - command getInlineStylesForNode - parameters - DOM.NodeId nodeId - returns - # Inline style for the specified DOM node. - optional CSSStyle inlineStyle - # Attribute-defined element style (e.g. resulting from "width=20 height=100%"). - optional CSSStyle attributesStyle - - # Returns requested styles for a DOM node identified by `nodeId`. - command getMatchedStylesForNode - parameters - DOM.NodeId nodeId - returns - # Inline style for the specified DOM node. - optional CSSStyle inlineStyle - # Attribute-defined element style (e.g. resulting from "width=20 height=100%"). - optional CSSStyle attributesStyle - # CSS rules matching this node, from all applicable stylesheets. - optional array of RuleMatch matchedCSSRules - # Pseudo style matches for this node. - optional array of PseudoElementMatches pseudoElements - # A chain of inherited styles (from the immediate node parent up to the DOM tree root). - optional array of InheritedStyleEntry inherited - # A list of CSS keyframed animations matching this node. - optional array of CSSKeyframesRule cssKeyframesRules - - # Returns all media queries parsed by the rendering engine. - command getMediaQueries - returns - array of CSSMedia medias - - # Requests information about platform fonts which we used to render child TextNodes in the given - # node. - command getPlatformFontsForNode - parameters - DOM.NodeId nodeId - returns - # Usage statistics for every employed platform font. - array of PlatformFontUsage fonts - - # Returns the current textual content for a stylesheet. - command getStyleSheetText - parameters - StyleSheetId styleSheetId - returns - # The stylesheet text. - string text - - # Starts tracking the given computed styles for updates. The specified array of properties - # replaces the one previously specified. Pass empty array to disable tracking. - # Use takeComputedStyleUpdates to retrieve the list of nodes that had properties modified. - # The changes to computed style properties are only tracked for nodes pushed to the front-end - # by the DOM agent. If no changes to the tracked properties occur after the node has been pushed - # to the front-end, no updates will be issued for the node. - experimental command trackComputedStyleUpdates - parameters - array of CSSComputedStyleProperty propertiesToTrack - - # Polls the next batch of computed style updates. - experimental command takeComputedStyleUpdates - returns - # The list of node Ids that have their tracked computed styles updated - array of DOM.NodeId nodeIds - - # Find a rule with the given active property for the given node and set the new value for this - # property - command setEffectivePropertyValueForNode - parameters - # The element id for which to set property. - DOM.NodeId nodeId - string propertyName - string value - - # Modifies the keyframe rule key text. - command setKeyframeKey - parameters - StyleSheetId styleSheetId - SourceRange range - string keyText - returns - # The resulting key text after modification. - Value keyText - - # Modifies the rule selector. - command setMediaText - parameters - StyleSheetId styleSheetId - SourceRange range - string text - returns - # The resulting CSS media rule after modification. - CSSMedia media - - # Modifies the rule selector. - command setRuleSelector - parameters - StyleSheetId styleSheetId - SourceRange range - string selector - returns - # The resulting selector list after modification. - SelectorList selectorList - - # Sets the new stylesheet text. - command setStyleSheetText - parameters - StyleSheetId styleSheetId - string text - returns - # URL of source map associated with script (if any). - optional string sourceMapURL - - # Applies specified style edits one after another in the given order. - command setStyleTexts - parameters - array of StyleDeclarationEdit edits - returns - # The resulting styles after modification. - array of CSSStyle styles - - # Enables the selector recording. - command startRuleUsageTracking - - # Stop tracking rule usage and return the list of rules that were used since last call to - # `takeCoverageDelta` (or since start of coverage instrumentation) - command stopRuleUsageTracking - returns - array of RuleUsage ruleUsage - - # Obtain list of rules that became used since last call to this method (or since start of coverage - # instrumentation) - command takeCoverageDelta - returns - array of RuleUsage coverage - # Monotonically increasing time, in seconds. - number timestamp - - # Enables/disables rendering of local CSS fonts (enabled by default). - experimental command setLocalFontsEnabled - parameters - # Whether rendering of local fonts is enabled. - boolean enabled - - # Fires whenever a web font is updated. A non-empty font parameter indicates a successfully loaded - # web font - event fontsUpdated - parameters - # The web font that has loaded. - optional FontFace font - - # Fires whenever a MediaQuery result changes (for example, after a browser window has been - # resized.) The current implementation considers only viewport-dependent media features. - event mediaQueryResultChanged - - # Fired whenever an active document stylesheet is added. - event styleSheetAdded - parameters - # Added stylesheet metainfo. - CSSStyleSheetHeader header - - # Fired whenever a stylesheet is changed as a result of the client operation. - event styleSheetChanged - parameters - StyleSheetId styleSheetId - - # Fired whenever an active document stylesheet is removed. - event styleSheetRemoved - parameters - # Identifier of the removed stylesheet. - StyleSheetId styleSheetId - -experimental domain CacheStorage - - # Unique identifier of the Cache object. - type CacheId extends string - - # type of HTTP response cached - type CachedResponseType extends string - enum - basic - cors - default - error - opaqueResponse - opaqueRedirect - - # Data entry. - type DataEntry extends object - properties - # Request URL. - string requestURL - # Request method. - string requestMethod - # Request headers - array of Header requestHeaders - # Number of seconds since epoch. - number responseTime - # HTTP response status code. - integer responseStatus - # HTTP response status text. - string responseStatusText - # HTTP response type - CachedResponseType responseType - # Response headers - array of Header responseHeaders - - # Cache identifier. - type Cache extends object - properties - # An opaque unique id of the cache. - CacheId cacheId - # Security origin of the cache. - string securityOrigin - # The name of the cache. - string cacheName - - type Header extends object - properties - string name - string value - - # Cached response - type CachedResponse extends object - properties - # Entry content, base64-encoded. - binary body - - # Deletes a cache. - command deleteCache - parameters - # Id of cache for deletion. - CacheId cacheId - - # Deletes a cache entry. - command deleteEntry - parameters - # Id of cache where the entry will be deleted. - CacheId cacheId - # URL spec of the request. - string request - - # Requests cache names. - command requestCacheNames - parameters - # Security origin. - string securityOrigin - returns - # Caches for the security origin. - array of Cache caches - - # Fetches cache entry. - command requestCachedResponse - parameters - # Id of cache that contains the entry. - CacheId cacheId - # URL spec of the request. - string requestURL - # headers of the request. - array of Header requestHeaders - returns - # Response read from the cache. - CachedResponse response - - # Requests data from cache. - command requestEntries - parameters - # ID of cache to get entries from. - CacheId cacheId - # Number of records to skip. - optional integer skipCount - # Number of records to fetch. - optional integer pageSize - # If present, only return the entries containing this substring in the path - optional string pathFilter - returns - # Array of object store data entries. - array of DataEntry cacheDataEntries - # Count of returned entries from this storage. If pathFilter is empty, it - # is the count of all entries from this storage. - number returnCount - -# A domain for interacting with Cast, Presentation API, and Remote Playback API -# functionalities. -experimental domain Cast - - type Sink extends object - properties - string name - string id - # Text describing the current session. Present only if there is an active - # session on the sink. - optional string session - - # Starts observing for sinks that can be used for tab mirroring, and if set, - # sinks compatible with |presentationUrl| as well. When sinks are found, a - # |sinksUpdated| event is fired. - # Also starts observing for issue messages. When an issue is added or removed, - # an |issueUpdated| event is fired. - command enable - parameters - optional string presentationUrl - - # Stops observing for sinks and issues. - command disable - - # Sets a sink to be used when the web page requests the browser to choose a - # sink via Presentation API, Remote Playback API, or Cast SDK. - command setSinkToUse - parameters - string sinkName - - # Starts mirroring the tab to the sink. - command startTabMirroring - parameters - string sinkName - - # Stops the active Cast session on the sink. - command stopCasting - parameters - string sinkName - - # This is fired whenever the list of available sinks changes. A sink is a - # device or a software surface that you can cast to. - event sinksUpdated - parameters - array of Sink sinks - - # This is fired whenever the outstanding issue/error message changes. - # |issueMessage| is empty if there is no issue. - event issueUpdated - parameters - string issueMessage - - -# This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object -# that has an `id`. This `id` can be used to get additional information on the Node, resolve it into -# the JavaScript object wrapper, etc. It is important that client receives DOM events only for the -# nodes that are known to the client. Backend keeps track of the nodes that were sent to the client -# and never sends the same node twice. It is client's responsibility to collect information about -# the nodes that were sent to the client.<p>Note that `iframe` owner elements will return -# corresponding document elements as their child nodes.</p> -domain DOM - depends on Runtime - - # Unique DOM node identifier. - type NodeId extends integer - - # Unique DOM node identifier used to reference a node that may not have been pushed to the - # front-end. - type BackendNodeId extends integer - - # Backend node with a friendly name. - type BackendNode extends object - properties - # `Node`'s nodeType. - integer nodeType - # `Node`'s nodeName. - string nodeName - BackendNodeId backendNodeId - - # Pseudo element type. - type PseudoType extends string - enum - first-line - first-letter - before - after - marker - backdrop - selection - target-text - spelling-error - grammar-error - first-line-inherited - scrollbar - scrollbar-thumb - scrollbar-button - scrollbar-track - scrollbar-track-piece - scrollbar-corner - resizer - input-list-button - - # Shadow root type. - type ShadowRootType extends string - enum - user-agent - open - closed - - # DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. - # DOMNode is a base node mirror type. - type Node extends object - properties - # Node identifier that is passed into the rest of the DOM messages as the `nodeId`. Backend - # will only push node with given `id` once. It is aware of all requested nodes and will only - # fire DOM events for nodes known to the client. - NodeId nodeId - # The id of the parent node if any. - optional NodeId parentId - # The BackendNodeId for this node. - BackendNodeId backendNodeId - # `Node`'s nodeType. - integer nodeType - # `Node`'s nodeName. - string nodeName - # `Node`'s localName. - string localName - # `Node`'s nodeValue. - string nodeValue - # Child count for `Container` nodes. - optional integer childNodeCount - # Child nodes of this node when requested with children. - optional array of Node children - # Attributes of the `Element` node in the form of flat array `[name1, value1, name2, value2]`. - optional array of string attributes - # Document URL that `Document` or `FrameOwner` node points to. - optional string documentURL - # Base URL that `Document` or `FrameOwner` node uses for URL completion. - optional string baseURL - # `DocumentType`'s publicId. - optional string publicId - # `DocumentType`'s systemId. - optional string systemId - # `DocumentType`'s internalSubset. - optional string internalSubset - # `Document`'s XML version in case of XML documents. - optional string xmlVersion - # `Attr`'s name. - optional string name - # `Attr`'s value. - optional string value - # Pseudo element type for this node. - optional PseudoType pseudoType - # Shadow root type. - optional ShadowRootType shadowRootType - # Frame ID for frame owner elements. - optional Page.FrameId frameId - # Content document for frame owner elements. - optional Node contentDocument - # Shadow root list for given element host. - optional array of Node shadowRoots - # Content document fragment for template elements. - optional Node templateContent - # Pseudo elements associated with this node. - optional array of Node pseudoElements - # Import document for the HTMLImport links. - optional Node importedDocument - # Distributed nodes for given insertion point. - optional array of BackendNode distributedNodes - # Whether the node is SVG. - optional boolean isSVG - - # A structure holding an RGBA color. - type RGBA extends object - properties - # The red component, in the [0-255] range. - integer r - # The green component, in the [0-255] range. - integer g - # The blue component, in the [0-255] range. - integer b - # The alpha component, in the [0-1] range (default: 1). - optional number a - - # An array of quad vertices, x immediately followed by y for each point, points clock-wise. - type Quad extends array of number - - # Box model. - type BoxModel extends object - properties - # Content box - Quad content - # Padding box - Quad padding - # Border box - Quad border - # Margin box - Quad margin - # Node width - integer width - # Node height - integer height - # Shape outside coordinates - optional ShapeOutsideInfo shapeOutside - - # CSS Shape Outside details. - type ShapeOutsideInfo extends object - properties - # Shape bounds - Quad bounds - # Shape coordinate details - array of any shape - # Margin shape bounds - array of any marginShape - - # Rectangle. - type Rect extends object - properties - # X coordinate - number x - # Y coordinate - number y - # Rectangle width - number width - # Rectangle height - number height - - type CSSComputedStyleProperty extends object - properties - # Computed style property name. - string name - # Computed style property value. - string value - - # Collects class names for the node with given id and all of it's child nodes. - experimental command collectClassNamesFromSubtree - parameters - # Id of the node to collect class names. - NodeId nodeId - returns - # Class name list. - array of string classNames - - # Creates a deep copy of the specified node and places it into the target container before the - # given anchor. - experimental command copyTo - parameters - # Id of the node to copy. - NodeId nodeId - # Id of the element to drop the copy into. - NodeId targetNodeId - # Drop the copy before this node (if absent, the copy becomes the last child of - # `targetNodeId`). - optional NodeId insertBeforeNodeId - returns - # Id of the node clone. - NodeId nodeId - - # Describes node given its id, does not require domain to be enabled. Does not start tracking any - # objects, can be used for automation. - command describeNode - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - # The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the - # entire subtree or provide an integer larger than 0. - optional integer depth - # Whether or not iframes and shadow roots should be traversed when returning the subtree - # (default is false). - optional boolean pierce - returns - # Node description. - Node node - - # Scrolls the specified rect of the given node into view if not already visible. - # Note: exactly one between nodeId, backendNodeId and objectId should be passed - # to identify the node. - experimental command scrollIntoViewIfNeeded - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - # The rect to be scrolled into view, relative to the node's border box, in CSS pixels. - # When omitted, center of the node will be used, similar to Element.scrollIntoView. - optional Rect rect - - # Disables DOM agent for the given page. - command disable - - # Discards search results from the session with the given id. `getSearchResults` should no longer - # be called for that search. - experimental command discardSearchResults - parameters - # Unique search session identifier. - string searchId - - # Enables DOM agent for the given page. - command enable - - # Focuses the given element. - command focus - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - - # Returns attributes for the specified node. - command getAttributes - parameters - # Id of the node to retrieve attibutes for. - NodeId nodeId - returns - # An interleaved array of node attribute names and values. - array of string attributes - - # Returns boxes for the given node. - command getBoxModel - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - returns - # Box model for the node. - BoxModel model - - # Returns quads that describe node position on the page. This method - # might return multiple quads for inline nodes. - experimental command getContentQuads - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - returns - # Quads that describe node layout relative to viewport. - array of Quad quads - - # Returns the root DOM node (and optionally the subtree) to the caller. - command getDocument - parameters - # The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the - # entire subtree or provide an integer larger than 0. - optional integer depth - # Whether or not iframes and shadow roots should be traversed when returning the subtree - # (default is false). - optional boolean pierce - returns - # Resulting node. - Node root - - # Returns the root DOM node (and optionally the subtree) to the caller. - # Deprecated, as it is not designed to work well with the rest of the DOM agent. - # Use DOMSnapshot.captureSnapshot instead. - deprecated command getFlattenedDocument - parameters - # The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the - # entire subtree or provide an integer larger than 0. - optional integer depth - # Whether or not iframes and shadow roots should be traversed when returning the subtree - # (default is false). - optional boolean pierce - returns - # Resulting node. - array of Node nodes - - # Finds nodes with a given computed style in a subtree. - experimental command getNodesForSubtreeByStyle - parameters - # Node ID pointing to the root of a subtree. - NodeId nodeId - # The style to filter nodes by (includes nodes if any of properties matches). - array of CSSComputedStyleProperty computedStyles - # Whether or not iframes and shadow roots in the same target should be traversed when returning the - # results (default is false). - optional boolean pierce - returns - # Resulting nodes. - array of NodeId nodeIds - - # Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is - # either returned or not. - command getNodeForLocation - parameters - # X coordinate. - integer x - # Y coordinate. - integer y - # False to skip to the nearest non-UA shadow root ancestor (default: false). - optional boolean includeUserAgentShadowDOM - # Whether to ignore pointer-events: none on elements and hit test them. - optional boolean ignorePointerEventsNone - returns - # Resulting node. - BackendNodeId backendNodeId - # Frame this node belongs to. - Page.FrameId frameId - # Id of the node at given coordinates, only when enabled and requested document. - optional NodeId nodeId - - # Returns node's HTML markup. - command getOuterHTML - parameters - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - returns - # Outer HTML markup. - string outerHTML - - # Returns the id of the nearest ancestor that is a relayout boundary. - experimental command getRelayoutBoundary - parameters - # Id of the node. - NodeId nodeId - returns - # Relayout boundary node id for the given node. - NodeId nodeId - - # Returns search results from given `fromIndex` to given `toIndex` from the search with the given - # identifier. - experimental command getSearchResults - parameters - # Unique search session identifier. - string searchId - # Start index of the search result to be returned. - integer fromIndex - # End index of the search result to be returned. - integer toIndex - returns - # Ids of the search result nodes. - array of NodeId nodeIds - - # Hides any highlight. - command hideHighlight - # Use 'Overlay.hideHighlight' instead - redirect Overlay - - # Highlights DOM node. - command highlightNode - # Use 'Overlay.highlightNode' instead - redirect Overlay - - # Highlights given rectangle. - command highlightRect - # Use 'Overlay.highlightRect' instead - redirect Overlay - - # Marks last undoable state. - experimental command markUndoableState - - # Moves node into the new container, places it before the given anchor. - command moveTo - parameters - # Id of the node to move. - NodeId nodeId - # Id of the element to drop the moved node into. - NodeId targetNodeId - # Drop node before this one (if absent, the moved node becomes the last child of - # `targetNodeId`). - optional NodeId insertBeforeNodeId - returns - # New id of the moved node. - NodeId nodeId - - # Searches for a given string in the DOM tree. Use `getSearchResults` to access search results or - # `cancelSearch` to end this search session. - experimental command performSearch - parameters - # Plain text or query selector or XPath search query. - string query - # True to search in user agent shadow DOM. - optional boolean includeUserAgentShadowDOM - returns - # Unique search session identifier. - string searchId - # Number of search results. - integer resultCount - - # Requests that the node is sent to the caller given its path. // FIXME, use XPath - experimental command pushNodeByPathToFrontend - parameters - # Path to node in the proprietary format. - string path - returns - # Id of the node for given path. - NodeId nodeId - - # Requests that a batch of nodes is sent to the caller given their backend node ids. - experimental command pushNodesByBackendIdsToFrontend - parameters - # The array of backend node ids. - array of BackendNodeId backendNodeIds - returns - # The array of ids of pushed nodes that correspond to the backend ids specified in - # backendNodeIds. - array of NodeId nodeIds - - # Executes `querySelector` on a given node. - command querySelector - parameters - # Id of the node to query upon. - NodeId nodeId - # Selector string. - string selector - returns - # Query selector result. - NodeId nodeId - - # Executes `querySelectorAll` on a given node. - command querySelectorAll - parameters - # Id of the node to query upon. - NodeId nodeId - # Selector string. - string selector - returns - # Query selector result. - array of NodeId nodeIds - - # Re-does the last undone action. - experimental command redo - - # Removes attribute with given name from an element with given id. - command removeAttribute - parameters - # Id of the element to remove attribute from. - NodeId nodeId - # Name of the attribute to remove. - string name - - # Removes node with given id. - command removeNode - parameters - # Id of the node to remove. - NodeId nodeId - - # Requests that children of the node with given id are returned to the caller in form of - # `setChildNodes` events where not only immediate children are retrieved, but all children down to - # the specified depth. - command requestChildNodes - parameters - # Id of the node to get children for. - NodeId nodeId - # The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the - # entire subtree or provide an integer larger than 0. - optional integer depth - # Whether or not iframes and shadow roots should be traversed when returning the sub-tree - # (default is false). - optional boolean pierce - - # Requests that the node is sent to the caller given the JavaScript node object reference. All - # nodes that form the path from the node to the root are also sent to the client as a series of - # `setChildNodes` notifications. - command requestNode - parameters - # JavaScript object id to convert into node. - Runtime.RemoteObjectId objectId - returns - # Node id for given object. - NodeId nodeId - - # Resolves the JavaScript node object for a given NodeId or BackendNodeId. - command resolveNode - parameters - # Id of the node to resolve. - optional NodeId nodeId - # Backend identifier of the node to resolve. - optional DOM.BackendNodeId backendNodeId - # Symbolic group name that can be used to release multiple objects. - optional string objectGroup - # Execution context in which to resolve the node. - optional Runtime.ExecutionContextId executionContextId - returns - # JavaScript object wrapper for given node. - Runtime.RemoteObject object - - # Sets attribute for an element with given id. - command setAttributeValue - parameters - # Id of the element to set attribute for. - NodeId nodeId - # Attribute name. - string name - # Attribute value. - string value - - # Sets attributes on element with given id. This method is useful when user edits some existing - # attribute value and types in several attribute name/value pairs. - command setAttributesAsText - parameters - # Id of the element to set attributes for. - NodeId nodeId - # Text with a number of attributes. Will parse this text using HTML parser. - string text - # Attribute name to replace with new attributes derived from text in case text parsed - # successfully. - optional string name - - # Sets files for the given file input element. - command setFileInputFiles - parameters - # Array of file paths to set. - array of string files - # Identifier of the node. - optional NodeId nodeId - # Identifier of the backend node. - optional BackendNodeId backendNodeId - # JavaScript object id of the node wrapper. - optional Runtime.RemoteObjectId objectId - - # Sets if stack traces should be captured for Nodes. See `Node.getNodeStackTraces`. Default is disabled. - experimental command setNodeStackTracesEnabled - parameters - # Enable or disable. - boolean enable - - # Gets stack traces associated with a Node. As of now, only provides stack trace for Node creation. - experimental command getNodeStackTraces - parameters - # Id of the node to get stack traces for. - NodeId nodeId - returns - # Creation stack trace, if available. - optional Runtime.StackTrace creation - - # Returns file information for the given - # File wrapper. - experimental command getFileInfo - parameters - # JavaScript object id of the node wrapper. - Runtime.RemoteObjectId objectId - returns - string path - - # Enables console to refer to the node with given id via $x (see Command Line API for more details - # $x functions). - experimental command setInspectedNode - parameters - # DOM node id to be accessible by means of $x command line API. - NodeId nodeId - - # Sets node name for a node with given id. - command setNodeName - parameters - # Id of the node to set name for. - NodeId nodeId - # New node's name. - string name - returns - # New node's id. - NodeId nodeId - - # Sets node value for a node with given id. - command setNodeValue - parameters - # Id of the node to set value for. - NodeId nodeId - # New node's value. - string value - - # Sets node HTML markup, returns new node id. - command setOuterHTML - parameters - # Id of the node to set markup for. - NodeId nodeId - # Outer HTML markup to set. - string outerHTML - - # Undoes the last performed action. - experimental command undo - - # Returns iframe node that owns iframe with the given domain. - experimental command getFrameOwner - parameters - Page.FrameId frameId - returns - # Resulting node. - BackendNodeId backendNodeId - # Id of the node at given coordinates, only when enabled and requested document. - optional NodeId nodeId - - # Fired when `Element`'s attribute is modified. - event attributeModified - parameters - # Id of the node that has changed. - NodeId nodeId - # Attribute name. - string name - # Attribute value. - string value - - # Fired when `Element`'s attribute is removed. - event attributeRemoved - parameters - # Id of the node that has changed. - NodeId nodeId - # A ttribute name. - string name - - # Mirrors `DOMCharacterDataModified` event. - event characterDataModified - parameters - # Id of the node that has changed. - NodeId nodeId - # New text value. - string characterData - - # Fired when `Container`'s child node count has changed. - event childNodeCountUpdated - parameters - # Id of the node that has changed. - NodeId nodeId - # New node count. - integer childNodeCount - - # Mirrors `DOMNodeInserted` event. - event childNodeInserted - parameters - # Id of the node that has changed. - NodeId parentNodeId - # If of the previous siblint. - NodeId previousNodeId - # Inserted node data. - Node node - - # Mirrors `DOMNodeRemoved` event. - event childNodeRemoved - parameters - # Parent id. - NodeId parentNodeId - # Id of the node that has been removed. - NodeId nodeId - - # Called when distrubution is changed. - experimental event distributedNodesUpdated - parameters - # Insertion point where distrubuted nodes were updated. - NodeId insertionPointId - # Distributed nodes for given insertion point. - array of BackendNode distributedNodes - - # Fired when `Document` has been totally updated. Node ids are no longer valid. - event documentUpdated - - # Fired when `Element`'s inline style is modified via a CSS property modification. - experimental event inlineStyleInvalidated - parameters - # Ids of the nodes for which the inline styles have been invalidated. - array of NodeId nodeIds - - # Called when a pseudo element is added to an element. - experimental event pseudoElementAdded - parameters - # Pseudo element's parent element id. - NodeId parentId - # The added pseudo element. - Node pseudoElement - - # Called when a pseudo element is removed from an element. - experimental event pseudoElementRemoved - parameters - # Pseudo element's parent element id. - NodeId parentId - # The removed pseudo element id. - NodeId pseudoElementId - - # Fired when backend wants to provide client with the missing DOM structure. This happens upon - # most of the calls requesting node ids. - event setChildNodes - parameters - # Parent node id to populate with children. - NodeId parentId - # Child nodes array. - array of Node nodes - - # Called when shadow root is popped from the element. - experimental event shadowRootPopped - parameters - # Host element id. - NodeId hostId - # Shadow root id. - NodeId rootId - - # Called when shadow root is pushed into the element. - experimental event shadowRootPushed - parameters - # Host element id. - NodeId hostId - # Shadow root. - Node root - -# DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript -# execution will stop on these operations as if there was a regular breakpoint set. -domain DOMDebugger - depends on DOM - depends on Debugger - depends on Runtime - - # DOM breakpoint type. - type DOMBreakpointType extends string - enum - subtree-modified - attribute-modified - node-removed - - # CSP Violation type. - experimental type CSPViolationType extends string - enum - trustedtype-sink-violation - trustedtype-policy-violation - - # Object event listener. - type EventListener extends object - properties - # `EventListener`'s type. - string type - # `EventListener`'s useCapture. - boolean useCapture - # `EventListener`'s passive flag. - boolean passive - # `EventListener`'s once flag. - boolean once - # Script id of the handler code. - Runtime.ScriptId scriptId - # Line number in the script (0-based). - integer lineNumber - # Column number in the script (0-based). - integer columnNumber - # Event handler function value. - optional Runtime.RemoteObject handler - # Event original handler function value. - optional Runtime.RemoteObject originalHandler - # Node the listener is added to (if any). - optional DOM.BackendNodeId backendNodeId - - # Returns event listeners of the given object. - command getEventListeners - parameters - # Identifier of the object to return listeners for. - Runtime.RemoteObjectId objectId - # The maximum depth at which Node children should be retrieved, defaults to 1. Use -1 for the - # entire subtree or provide an integer larger than 0. - optional integer depth - # Whether or not iframes and shadow roots should be traversed when returning the subtree - # (default is false). Reports listeners for all contexts if pierce is enabled. - optional boolean pierce - returns - # Array of relevant listeners. - array of EventListener listeners - - # Removes DOM breakpoint that was set using `setDOMBreakpoint`. - command removeDOMBreakpoint - parameters - # Identifier of the node to remove breakpoint from. - DOM.NodeId nodeId - # Type of the breakpoint to remove. - DOMBreakpointType type - - # Removes breakpoint on particular DOM event. - command removeEventListenerBreakpoint - parameters - # Event name. - string eventName - # EventTarget interface name. - experimental optional string targetName - - # Removes breakpoint on particular native event. - experimental command removeInstrumentationBreakpoint - parameters - # Instrumentation name to stop on. - string eventName - - # Removes breakpoint from XMLHttpRequest. - command removeXHRBreakpoint - parameters - # Resource URL substring. - string url - - # Sets breakpoint on particular CSP violations. - experimental command setBreakOnCSPViolation - parameters - # CSP Violations to stop upon. - array of CSPViolationType violationTypes - - # Sets breakpoint on particular operation with DOM. - command setDOMBreakpoint - parameters - # Identifier of the node to set breakpoint on. - DOM.NodeId nodeId - # Type of the operation to stop upon. - DOMBreakpointType type - - # Sets breakpoint on particular DOM event. - command setEventListenerBreakpoint - parameters - # DOM Event name to stop on (any DOM event will do). - string eventName - # EventTarget interface name to stop on. If equal to `"*"` or not provided, will stop on any - # EventTarget. - experimental optional string targetName - - # Sets breakpoint on particular native event. - experimental command setInstrumentationBreakpoint - parameters - # Instrumentation name to stop on. - string eventName - - # Sets breakpoint on XMLHttpRequest. - command setXHRBreakpoint - parameters - # Resource URL substring. All XHRs having this substring in the URL will get stopped upon. - string url - -# This domain facilitates obtaining document snapshots with DOM, layout, and style information. -experimental domain DOMSnapshot - depends on CSS - depends on DOM - depends on DOMDebugger - depends on Page - - # A Node in the DOM tree. - type DOMNode extends object - properties - # `Node`'s nodeType. - integer nodeType - # `Node`'s nodeName. - string nodeName - # `Node`'s nodeValue. - string nodeValue - # Only set for textarea elements, contains the text value. - optional string textValue - # Only set for input elements, contains the input's associated text value. - optional string inputValue - # Only set for radio and checkbox input elements, indicates if the element has been checked - optional boolean inputChecked - # Only set for option elements, indicates if the element has been selected - optional boolean optionSelected - # `Node`'s id, corresponds to DOM.Node.backendNodeId. - DOM.BackendNodeId backendNodeId - # The indexes of the node's child nodes in the `domNodes` array returned by `getSnapshot`, if - # any. - optional array of integer childNodeIndexes - # Attributes of an `Element` node. - optional array of NameValue attributes - # Indexes of pseudo elements associated with this node in the `domNodes` array returned by - # `getSnapshot`, if any. - optional array of integer pseudoElementIndexes - # The index of the node's related layout tree node in the `layoutTreeNodes` array returned by - # `getSnapshot`, if any. - optional integer layoutNodeIndex - # Document URL that `Document` or `FrameOwner` node points to. - optional string documentURL - # Base URL that `Document` or `FrameOwner` node uses for URL completion. - optional string baseURL - # Only set for documents, contains the document's content language. - optional string contentLanguage - # Only set for documents, contains the document's character set encoding. - optional string documentEncoding - # `DocumentType` node's publicId. - optional string publicId - # `DocumentType` node's systemId. - optional string systemId - # Frame ID for frame owner elements and also for the document node. - optional Page.FrameId frameId - # The index of a frame owner element's content document in the `domNodes` array returned by - # `getSnapshot`, if any. - optional integer contentDocumentIndex - # Type of a pseudo element node. - optional DOM.PseudoType pseudoType - # Shadow root type. - optional DOM.ShadowRootType shadowRootType - # Whether this DOM node responds to mouse clicks. This includes nodes that have had click - # event listeners attached via JavaScript as well as anchor tags that naturally navigate when - # clicked. - optional boolean isClickable - # Details of the node's event listeners, if any. - optional array of DOMDebugger.EventListener eventListeners - # The selected url for nodes with a srcset attribute. - optional string currentSourceURL - # The url of the script (if any) that generates this node. - optional string originURL - # Scroll offsets, set when this node is a Document. - optional number scrollOffsetX - optional number scrollOffsetY - - # Details of post layout rendered text positions. The exact layout should not be regarded as - # stable and may change between versions. - type InlineTextBox extends object - properties - # The bounding box in document coordinates. Note that scroll offset of the document is ignored. - DOM.Rect boundingBox - # The starting index in characters, for this post layout textbox substring. Characters that - # would be represented as a surrogate pair in UTF-16 have length 2. - integer startCharacterIndex - # The number of characters in this post layout textbox substring. Characters that would be - # represented as a surrogate pair in UTF-16 have length 2. - integer numCharacters - - # Details of an element in the DOM tree with a LayoutObject. - type LayoutTreeNode extends object - properties - # The index of the related DOM node in the `domNodes` array returned by `getSnapshot`. - integer domNodeIndex - # The bounding box in document coordinates. Note that scroll offset of the document is ignored. - DOM.Rect boundingBox - # Contents of the LayoutText, if any. - optional string layoutText - # The post-layout inline text nodes, if any. - optional array of InlineTextBox inlineTextNodes - # Index into the `computedStyles` array returned by `getSnapshot`. - optional integer styleIndex - # Global paint order index, which is determined by the stacking order of the nodes. Nodes - # that are painted together will have the same index. Only provided if includePaintOrder in - # getSnapshot was true. - optional integer paintOrder - # Set to true to indicate the element begins a new stacking context. - optional boolean isStackingContext - - # A subset of the full ComputedStyle as defined by the request whitelist. - type ComputedStyle extends object - properties - # Name/value pairs of computed style properties. - array of NameValue properties - - # A name/value pair. - type NameValue extends object - properties - # Attribute/property name. - string name - # Attribute/property value. - string value - - # Index of the string in the strings table. - type StringIndex extends integer - - # Index of the string in the strings table. - type ArrayOfStrings extends array of StringIndex - - # Data that is only present on rare nodes. - type RareStringData extends object - properties - array of integer index - array of StringIndex value - - type RareBooleanData extends object - properties - array of integer index - - type RareIntegerData extends object - properties - array of integer index - array of integer value - - type Rectangle extends array of number - - # Document snapshot. - type DocumentSnapshot extends object - properties - # Document URL that `Document` or `FrameOwner` node points to. - StringIndex documentURL - # Document title. - StringIndex title - # Base URL that `Document` or `FrameOwner` node uses for URL completion. - StringIndex baseURL - # Contains the document's content language. - StringIndex contentLanguage - # Contains the document's character set encoding. - StringIndex encodingName - # `DocumentType` node's publicId. - StringIndex publicId - # `DocumentType` node's systemId. - StringIndex systemId - # Frame ID for frame owner elements and also for the document node. - StringIndex frameId - # A table with dom nodes. - NodeTreeSnapshot nodes - # The nodes in the layout tree. - LayoutTreeSnapshot layout - # The post-layout inline text nodes. - TextBoxSnapshot textBoxes - # Horizontal scroll offset. - optional number scrollOffsetX - # Vertical scroll offset. - optional number scrollOffsetY - # Document content width. - optional number contentWidth - # Document content height. - optional number contentHeight - - # Table containing nodes. - type NodeTreeSnapshot extends object - properties - # Parent node index. - optional array of integer parentIndex - # `Node`'s nodeType. - optional array of integer nodeType - # `Node`'s nodeName. - optional array of StringIndex nodeName - # `Node`'s nodeValue. - optional array of StringIndex nodeValue - # `Node`'s id, corresponds to DOM.Node.backendNodeId. - optional array of DOM.BackendNodeId backendNodeId - # Attributes of an `Element` node. Flatten name, value pairs. - optional array of ArrayOfStrings attributes - # Only set for textarea elements, contains the text value. - optional RareStringData textValue - # Only set for input elements, contains the input's associated text value. - optional RareStringData inputValue - # Only set for radio and checkbox input elements, indicates if the element has been checked - optional RareBooleanData inputChecked - # Only set for option elements, indicates if the element has been selected - optional RareBooleanData optionSelected - # The index of the document in the list of the snapshot documents. - optional RareIntegerData contentDocumentIndex - # Type of a pseudo element node. - optional RareStringData pseudoType - # Whether this DOM node responds to mouse clicks. This includes nodes that have had click - # event listeners attached via JavaScript as well as anchor tags that naturally navigate when - # clicked. - optional RareBooleanData isClickable - # The selected url for nodes with a srcset attribute. - optional RareStringData currentSourceURL - # The url of the script (if any) that generates this node. - optional RareStringData originURL - - # Table of details of an element in the DOM tree with a LayoutObject. - type LayoutTreeSnapshot extends object - properties - # Index of the corresponding node in the `NodeTreeSnapshot` array returned by `captureSnapshot`. - array of integer nodeIndex - # Array of indexes specifying computed style strings, filtered according to the `computedStyles` parameter passed to `captureSnapshot`. - array of ArrayOfStrings styles - # The absolute position bounding box. - array of Rectangle bounds - # Contents of the LayoutText, if any. - array of StringIndex text - # Stacking context information. - RareBooleanData stackingContexts - # Global paint order index, which is determined by the stacking order of the nodes. Nodes - # that are painted together will have the same index. Only provided if includePaintOrder in - # captureSnapshot was true. - optional array of integer paintOrders - # The offset rect of nodes. Only available when includeDOMRects is set to true - optional array of Rectangle offsetRects - # The scroll rect of nodes. Only available when includeDOMRects is set to true - optional array of Rectangle scrollRects - # The client rect of nodes. Only available when includeDOMRects is set to true - optional array of Rectangle clientRects - - # Table of details of the post layout rendered text positions. The exact layout should not be regarded as - # stable and may change between versions. - type TextBoxSnapshot extends object - properties - # Index of the layout tree node that owns this box collection. - array of integer layoutIndex - # The absolute position bounding box. - array of Rectangle bounds - # The starting index in characters, for this post layout textbox substring. Characters that - # would be represented as a surrogate pair in UTF-16 have length 2. - array of integer start - # The number of characters in this post layout textbox substring. Characters that would be - # represented as a surrogate pair in UTF-16 have length 2. - array of integer length - - # Disables DOM snapshot agent for the given page. - command disable - - # Enables DOM snapshot agent for the given page. - command enable - - # Returns a document snapshot, including the full DOM tree of the root node (including iframes, - # template contents, and imported documents) in a flattened array, as well as layout and - # white-listed computed style information for the nodes. Shadow DOM in the returned DOM tree is - # flattened. - deprecated command getSnapshot - parameters - # Whitelist of computed styles to return. - array of string computedStyleWhitelist - # Whether or not to retrieve details of DOM listeners (default false). - optional boolean includeEventListeners - # Whether to determine and include the paint order index of LayoutTreeNodes (default false). - optional boolean includePaintOrder - # Whether to include UA shadow tree in the snapshot (default false). - optional boolean includeUserAgentShadowTree - returns - # The nodes in the DOM tree. The DOMNode at index 0 corresponds to the root document. - array of DOMNode domNodes - # The nodes in the layout tree. - array of LayoutTreeNode layoutTreeNodes - # Whitelisted ComputedStyle properties for each node in the layout tree. - array of ComputedStyle computedStyles - - # Returns a document snapshot, including the full DOM tree of the root node (including iframes, - # template contents, and imported documents) in a flattened array, as well as layout and - # white-listed computed style information for the nodes. Shadow DOM in the returned DOM tree is - # flattened. - command captureSnapshot - parameters - # Whitelist of computed styles to return. - array of string computedStyles - # Whether to include layout object paint orders into the snapshot. - optional boolean includePaintOrder - # Whether to include DOM rectangles (offsetRects, clientRects, scrollRects) into the snapshot - optional boolean includeDOMRects - returns - # The nodes in the DOM tree. The DOMNode at index 0 corresponds to the root document. - array of DocumentSnapshot documents - # Shared string table that all string properties refer to with indexes. - array of string strings - -# Query and modify DOM storage. -experimental domain DOMStorage - - # DOM Storage identifier. - type StorageId extends object - properties - # Security origin for the storage. - string securityOrigin - # Whether the storage is local storage (not session storage). - boolean isLocalStorage - - # DOM Storage item. - type Item extends array of string - - command clear - parameters - StorageId storageId - - # Disables storage tracking, prevents storage events from being sent to the client. - command disable - - # Enables storage tracking, storage events will now be delivered to the client. - command enable - - command getDOMStorageItems - parameters - StorageId storageId - returns - array of Item entries - - command removeDOMStorageItem - parameters - StorageId storageId - string key - - command setDOMStorageItem - parameters - StorageId storageId - string key - string value - - event domStorageItemAdded - parameters - StorageId storageId - string key - string newValue - - event domStorageItemRemoved - parameters - StorageId storageId - string key - - event domStorageItemUpdated - parameters - StorageId storageId - string key - string oldValue - string newValue - - event domStorageItemsCleared - parameters - StorageId storageId - -experimental domain Database - - # Unique identifier of Database object. - type DatabaseId extends string - - # Database object. - type Database extends object - properties - # Database ID. - DatabaseId id - # Database domain. - string domain - # Database name. - string name - # Database version. - string version - - # Database error. - type Error extends object - properties - # Error message. - string message - # Error code. - integer code - - # Disables database tracking, prevents database events from being sent to the client. - command disable - - # Enables database tracking, database events will now be delivered to the client. - command enable - - command executeSQL - parameters - DatabaseId databaseId - string query - returns - optional array of string columnNames - optional array of any values - optional Error sqlError - - command getDatabaseTableNames - parameters - DatabaseId databaseId - returns - array of string tableNames - - event addDatabase - parameters - Database database - -experimental domain DeviceOrientation - - # Clears the overridden Device Orientation. - command clearDeviceOrientationOverride - - # Overrides the Device Orientation. - command setDeviceOrientationOverride - parameters - # Mock alpha - number alpha - # Mock beta - number beta - # Mock gamma - number gamma - -# This domain emulates different environments for the page. -domain Emulation - depends on DOM - depends on Page - depends on Runtime - - # Screen orientation. - type ScreenOrientation extends object - properties - # Orientation type. - enum type - portraitPrimary - portraitSecondary - landscapePrimary - landscapeSecondary - # Orientation angle. - integer angle - - type DisplayFeature extends object - properties - # Orientation of a display feature in relation to screen - enum orientation - vertical - horizontal - # The offset from the screen origin in either the x (for vertical - # orientation) or y (for horizontal orientation) direction. - integer offset - # A display feature may mask content such that it is not physically - # displayed - this length along with the offset describes this area. - # A display feature that only splits content will have a 0 mask_length. - integer maskLength - - type MediaFeature extends object - properties - string name - string value - - # advance: If the scheduler runs out of immediate work, the virtual time base may fast forward to - # allow the next delayed task (if any) to run; pause: The virtual time base may not advance; - # pauseIfNetworkFetchesPending: The virtual time base may not advance if there are any pending - # resource fetches. - experimental type VirtualTimePolicy extends string - enum - advance - pause - pauseIfNetworkFetchesPending - - # Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints - experimental type UserAgentBrandVersion extends object - properties - string brand - string version - - # Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints - # Missing optional values will be filled in by the target with what it would normally use. - experimental type UserAgentMetadata extends object - properties - optional array of UserAgentBrandVersion brands - optional string fullVersion - string platform - string platformVersion - string architecture - string model - boolean mobile - - # Tells whether emulation is supported. - command canEmulate - returns - # True if emulation is supported. - boolean result - - # Clears the overriden device metrics. - command clearDeviceMetricsOverride - - # Clears the overriden Geolocation Position and Error. - command clearGeolocationOverride - - # Requests that page scale factor is reset to initial values. - experimental command resetPageScaleFactor - - # Enables or disables simulating a focused and active page. - experimental command setFocusEmulationEnabled - parameters - # Whether to enable to disable focus emulation. - boolean enabled - - # Enables CPU throttling to emulate slow CPUs. - experimental command setCPUThrottlingRate - parameters - # Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc). - number rate - - # Sets or clears an override of the default background color of the frame. This override is used - # if the content does not specify one. - command setDefaultBackgroundColorOverride - parameters - # RGBA of the default background color. If not specified, any existing override will be - # cleared. - optional DOM.RGBA color - - # Overrides the values of device screen dimensions (window.screen.width, window.screen.height, - # window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media - # query results). - command setDeviceMetricsOverride - parameters - # Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override. - integer width - # Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override. - integer height - # Overriding device scale factor value. 0 disables the override. - number deviceScaleFactor - # Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text - # autosizing and more. - boolean mobile - # Scale to apply to resulting view image. - experimental optional number scale - # Overriding screen width value in pixels (minimum 0, maximum 10000000). - experimental optional integer screenWidth - # Overriding screen height value in pixels (minimum 0, maximum 10000000). - experimental optional integer screenHeight - # Overriding view X position on screen in pixels (minimum 0, maximum 10000000). - experimental optional integer positionX - # Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). - experimental optional integer positionY - # Do not set visible view size, rely upon explicit setVisibleSize call. - experimental optional boolean dontSetVisibleSize - # Screen orientation override. - optional ScreenOrientation screenOrientation - # If set, the visible area of the page will be overridden to this viewport. This viewport - # change is not observed by the page, e.g. viewport-relative elements do not change positions. - experimental optional Page.Viewport viewport - # If set, the display feature of a multi-segment screen. If not set, multi-segment support - # is turned-off. - experimental optional DisplayFeature displayFeature - - experimental command setScrollbarsHidden - parameters - # Whether scrollbars should be always hidden. - boolean hidden - - experimental command setDocumentCookieDisabled - parameters - # Whether document.coookie API should be disabled. - boolean disabled - - experimental command setEmitTouchEventsForMouse - parameters - # Whether touch emulation based on mouse input should be enabled. - boolean enabled - # Touch/gesture events configuration. Default: current platform. - optional enum configuration - mobile - desktop - - # Emulates the given media type or media feature for CSS media queries. - command setEmulatedMedia - parameters - # Media type to emulate. Empty string disables the override. - optional string media - # Media features to emulate. - optional array of MediaFeature features - - # Emulates the given vision deficiency. - experimental command setEmulatedVisionDeficiency - parameters - # Vision deficiency to emulate. - enum type - none - achromatopsia - blurredVision - deuteranopia - protanopia - tritanopia - - # Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position - # unavailable. - command setGeolocationOverride - parameters - # Mock latitude - optional number latitude - # Mock longitude - optional number longitude - # Mock accuracy - optional number accuracy - - # Overrides the Idle state. - experimental command setIdleOverride - parameters - # Mock isUserActive - boolean isUserActive - # Mock isScreenUnlocked - boolean isScreenUnlocked - - # Clears Idle state overrides. - experimental command clearIdleOverride - - # Overrides value returned by the javascript navigator object. - experimental deprecated command setNavigatorOverrides - parameters - # The platform navigator.platform should return. - string platform - - # Sets a specified page scale factor. - experimental command setPageScaleFactor - parameters - # Page scale factor. - number pageScaleFactor - - # Switches script execution in the page. - command setScriptExecutionDisabled - parameters - # Whether script execution should be disabled in the page. - boolean value - - # Enables touch on platforms which do not support them. - command setTouchEmulationEnabled - parameters - # Whether the touch event emulation should be enabled. - boolean enabled - # Maximum touch points supported. Defaults to one. - optional integer maxTouchPoints - - # Turns on virtual time for all frames (replacing real-time with a synthetic time source) and sets - # the current virtual time policy. Note this supersedes any previous time budget. - experimental command setVirtualTimePolicy - parameters - VirtualTimePolicy policy - # If set, after this many virtual milliseconds have elapsed virtual time will be paused and a - # virtualTimeBudgetExpired event is sent. - optional number budget - # If set this specifies the maximum number of tasks that can be run before virtual is forced - # forwards to prevent deadlock. - optional integer maxVirtualTimeTaskStarvationCount - # If set the virtual time policy change should be deferred until any frame starts navigating. - # Note any previous deferred policy change is superseded. - optional boolean waitForNavigation - # If set, base::Time::Now will be overriden to initially return this value. - optional Network.TimeSinceEpoch initialVirtualTime - returns - # Absolute timestamp at which virtual time was first enabled (up time in milliseconds). - number virtualTimeTicksBase - - # Overrides default host system locale with the specified one. - experimental command setLocaleOverride - parameters - # ICU style C locale (e.g. "en_US"). If not specified or empty, disables the override and - # restores default host system locale. - optional string locale - - # Overrides default host system timezone with the specified one. - experimental command setTimezoneOverride - parameters - # The timezone identifier. If empty, disables the override and - # restores default host system timezone. - string timezoneId - - # Resizes the frame/viewport of the page. Note that this does not affect the frame's container - # (e.g. browser window). Can be used to produce screenshots of the specified size. Not supported - # on Android. - experimental deprecated command setVisibleSize - parameters - # Frame width (DIP). - integer width - # Frame height (DIP). - integer height - - # Notification sent after the virtual time budget for the current VirtualTimePolicy has run out. - experimental event virtualTimeBudgetExpired - - # Enum of image types that can be disabled. - experimental type DisabledImageType extends string - enum - avif - webp - - experimental command setDisabledImageTypes - parameters - # Image types to disable. - array of DisabledImageType imageTypes - - # Allows overriding user agent with the given string. - command setUserAgentOverride - parameters - # User agent to use. - string userAgent - # Browser langugage to emulate. - optional string acceptLanguage - # The platform navigator.platform should return. - optional string platform - # To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData - experimental optional UserAgentMetadata userAgentMetadata - -# This domain provides experimental commands only supported in headless mode. -experimental domain HeadlessExperimental - depends on Page - depends on Runtime - - # Encoding options for a screenshot. - type ScreenshotParams extends object - properties - # Image compression format (defaults to png). - optional enum format - jpeg - png - # Compression quality from range [0..100] (jpeg only). - optional integer quality - - # Sends a BeginFrame to the target and returns when the frame was completed. Optionally captures a - # screenshot from the resulting frame. Requires that the target was created with enabled - # BeginFrameControl. Designed for use with --run-all-compositor-stages-before-draw, see also - # https://goo.gl/3zHXhB for more background. - command beginFrame - parameters - # Timestamp of this BeginFrame in Renderer TimeTicks (milliseconds of uptime). If not set, - # the current time will be used. - optional number frameTimeTicks - # The interval between BeginFrames that is reported to the compositor, in milliseconds. - # Defaults to a 60 frames/second interval, i.e. about 16.666 milliseconds. - optional number interval - # Whether updates should not be committed and drawn onto the display. False by default. If - # true, only side effects of the BeginFrame will be run, such as layout and animations, but - # any visual updates may not be visible on the display or in screenshots. - optional boolean noDisplayUpdates - # If set, a screenshot of the frame will be captured and returned in the response. Otherwise, - # no screenshot will be captured. Note that capturing a screenshot can fail, for example, - # during renderer initialization. In such a case, no screenshot data will be returned. - optional ScreenshotParams screenshot - returns - # Whether the BeginFrame resulted in damage and, thus, a new frame was committed to the - # display. Reported for diagnostic uses, may be removed in the future. - boolean hasDamage - # Base64-encoded image data of the screenshot, if one was requested and successfully taken. - optional binary screenshotData - - # Disables headless events for the target. - command disable - - # Enables headless events for the target. - command enable - - # Issued when the target starts or stops needing BeginFrames. - # Deprecated. Issue beginFrame unconditionally instead and use result from - # beginFrame to detect whether the frames were suppressed. - deprecated event needsBeginFramesChanged - parameters - # True if BeginFrames are needed, false otherwise. - boolean needsBeginFrames - -# Input/Output operations for streams produced by DevTools. -domain IO - - # This is either obtained from another method or specifed as `blob:<uuid>` where - # `<uuid>` is an UUID of a Blob. - type StreamHandle extends string - - # Close the stream, discard any temporary backing storage. - command close - parameters - # Handle of the stream to close. - StreamHandle handle - - # Read a chunk of the stream - command read - parameters - # Handle of the stream to read. - StreamHandle handle - # Seek to the specified offset before reading (if not specificed, proceed with offset - # following the last read). Some types of streams may only support sequential reads. - optional integer offset - # Maximum number of bytes to read (left upon the agent discretion if not specified). - optional integer size - returns - # Set if the data is base64-encoded - optional boolean base64Encoded - # Data that were read. - string data - # Set if the end-of-file condition occured while reading. - boolean eof - - # Return UUID of Blob object specified by a remote object id. - command resolveBlob - parameters - # Object id of a Blob object wrapper. - Runtime.RemoteObjectId objectId - returns - # UUID of the specified Blob. - string uuid - -experimental domain IndexedDB - depends on Runtime - - # Database with an array of object stores. - type DatabaseWithObjectStores extends object - properties - # Database name. - string name - # Database version (type is not 'integer', as the standard - # requires the version number to be 'unsigned long long') - number version - # Object stores in this database. - array of ObjectStore objectStores - - # Object store. - type ObjectStore extends object - properties - # Object store name. - string name - # Object store key path. - KeyPath keyPath - # If true, object store has auto increment flag set. - boolean autoIncrement - # Indexes in this object store. - array of ObjectStoreIndex indexes - - # Object store index. - type ObjectStoreIndex extends object - properties - # Index name. - string name - # Index key path. - KeyPath keyPath - # If true, index is unique. - boolean unique - # If true, index allows multiple entries for a key. - boolean multiEntry - - # Key. - type Key extends object - properties - # Key type. - enum type - number - string - date - array - # Number value. - optional number number - # String value. - optional string string - # Date value. - optional number date - # Array value. - optional array of Key array - - # Key range. - type KeyRange extends object - properties - # Lower bound. - optional Key lower - # Upper bound. - optional Key upper - # If true lower bound is open. - boolean lowerOpen - # If true upper bound is open. - boolean upperOpen - - # Data entry. - type DataEntry extends object - properties - # Key object. - Runtime.RemoteObject key - # Primary key object. - Runtime.RemoteObject primaryKey - # Value object. - Runtime.RemoteObject value - - # Key path. - type KeyPath extends object - properties - # Key path type. - enum type - null - string - array - # String value. - optional string string - # Array value. - optional array of string array - - # Clears all entries from an object store. - command clearObjectStore - parameters - # Security origin. - string securityOrigin - # Database name. - string databaseName - # Object store name. - string objectStoreName - - # Deletes a database. - command deleteDatabase - parameters - # Security origin. - string securityOrigin - # Database name. - string databaseName - - # Delete a range of entries from an object store - command deleteObjectStoreEntries - parameters - string securityOrigin - string databaseName - string objectStoreName - # Range of entry keys to delete - KeyRange keyRange - - # Disables events from backend. - command disable - - # Enables events from backend. - command enable - - # Requests data from object store or index. - command requestData - parameters - # Security origin. - string securityOrigin - # Database name. - string databaseName - # Object store name. - string objectStoreName - # Index name, empty string for object store data requests. - string indexName - # Number of records to skip. - integer skipCount - # Number of records to fetch. - integer pageSize - # Key range. - optional KeyRange keyRange - returns - # Array of object store data entries. - array of DataEntry objectStoreDataEntries - # If true, there are more entries to fetch in the given range. - boolean hasMore - - # Gets metadata of an object store - command getMetadata - parameters - # Security origin. - string securityOrigin - # Database name. - string databaseName - # Object store name. - string objectStoreName - returns - # the entries count - number entriesCount - # the current value of key generator, to become the next inserted - # key into the object store. Valid if objectStore.autoIncrement - # is true. - number keyGeneratorValue - - # Requests database with given name in given frame. - command requestDatabase - parameters - # Security origin. - string securityOrigin - # Database name. - string databaseName - returns - # Database with an array of object stores. - DatabaseWithObjectStores databaseWithObjectStores - - # Requests database names for given security origin. - command requestDatabaseNames - parameters - # Security origin. - string securityOrigin - returns - # Database names for origin. - array of string databaseNames - -domain Input - - type TouchPoint extends object - properties - # X coordinate of the event relative to the main frame's viewport in CSS pixels. - number x - # Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to - # the top of the viewport and Y increases as it proceeds towards the bottom of the viewport. - number y - # X radius of the touch area (default: 1.0). - optional number radiusX - # Y radius of the touch area (default: 1.0). - optional number radiusY - # Rotation angle (default: 0.0). - optional number rotationAngle - # Force (default: 1.0). - optional number force - # The normalized tangential pressure, which has a range of [-1,1] (default: 0). - experimental optional number tangentialPressure - # The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0) - experimental optional integer tiltX - # The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0). - experimental optional integer tiltY - # The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0). - experimental optional integer twist - # Identifier used to track touch sources between events, must be unique within an event. - optional number id - - experimental type GestureSourceType extends string - enum - default - touch - mouse - - type MouseButton extends string - enum - none - left - middle - right - back - forward - - # UTC time in seconds, counted from January 1, 1970. - type TimeSinceEpoch extends number - - # Dispatches a key event to the page. - command dispatchKeyEvent - parameters - # Type of the key event. - enum type - keyDown - keyUp - rawKeyDown - char - # Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 - # (default: 0). - optional integer modifiers - # Time at which the event occurred. - optional TimeSinceEpoch timestamp - # Text as generated by processing a virtual key code with a keyboard layout. Not needed for - # for `keyUp` and `rawKeyDown` events (default: "") - optional string text - # Text that would have been generated by the keyboard if no modifiers were pressed (except for - # shift). Useful for shortcut (accelerator) key handling (default: ""). - optional string unmodifiedText - # Unique key identifier (e.g., 'U+0041') (default: ""). - optional string keyIdentifier - # Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: ""). - optional string code - # Unique DOM defined string value describing the meaning of the key in the context of active - # modifiers, keyboard layout, etc (e.g., 'AltGr') (default: ""). - optional string key - # Windows virtual key code (default: 0). - optional integer windowsVirtualKeyCode - # Native virtual key code (default: 0). - optional integer nativeVirtualKeyCode - # Whether the event was generated from auto repeat (default: false). - optional boolean autoRepeat - # Whether the event was generated from the keypad (default: false). - optional boolean isKeypad - # Whether the event was a system key event (default: false). - optional boolean isSystemKey - # Whether the event was from the left or right side of the keyboard. 1=Left, 2=Right (default: - # 0). - optional integer location - # Editing commands to send with the key event (e.g., 'selectAll') (default: []). - # These are related to but not equal the command names used in `document.execCommand` and NSStandardKeyBindingResponding. - # See https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names. - experimental optional array of string commands - - # This method emulates inserting text that doesn't come from a key press, - # for example an emoji keyboard or an IME. - experimental command insertText - parameters - # The text to insert. - string text - - # Dispatches a mouse event to the page. - command dispatchMouseEvent - parameters - # Type of the mouse event. - enum type - mousePressed - mouseReleased - mouseMoved - mouseWheel - # X coordinate of the event relative to the main frame's viewport in CSS pixels. - number x - # Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to - # the top of the viewport and Y increases as it proceeds towards the bottom of the viewport. - number y - # Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 - # (default: 0). - optional integer modifiers - # Time at which the event occurred. - optional TimeSinceEpoch timestamp - # Mouse button (default: "none"). - optional MouseButton button - # A number indicating which buttons are pressed on the mouse when a mouse event is triggered. - # Left=1, Right=2, Middle=4, Back=8, Forward=16, None=0. - optional integer buttons - # Number of times the mouse button was clicked (default: 0). - optional integer clickCount - # The normalized pressure, which has a range of [0,1] (default: 0). - experimental optional number force - # The normalized tangential pressure, which has a range of [-1,1] (default: 0). - experimental optional number tangentialPressure - # The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0). - experimental optional integer tiltX - # The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0). - experimental optional integer tiltY - # The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0). - experimental optional integer twist - # X delta in CSS pixels for mouse wheel event (default: 0). - optional number deltaX - # Y delta in CSS pixels for mouse wheel event (default: 0). - optional number deltaY - # Pointer type (default: "mouse"). - optional enum pointerType - mouse - pen - - # Dispatches a touch event to the page. - command dispatchTouchEvent - parameters - # Type of the touch event. TouchEnd and TouchCancel must not contain any touch points, while - # TouchStart and TouchMove must contains at least one. - enum type - touchStart - touchEnd - touchMove - touchCancel - # Active touch points on the touch device. One event per any changed point (compared to - # previous touch event in a sequence) is generated, emulating pressing/moving/releasing points - # one by one. - array of TouchPoint touchPoints - # Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 - # (default: 0). - optional integer modifiers - # Time at which the event occurred. - optional TimeSinceEpoch timestamp - - # Emulates touch event from the mouse event parameters. - experimental command emulateTouchFromMouseEvent - parameters - # Type of the mouse event. - enum type - mousePressed - mouseReleased - mouseMoved - mouseWheel - # X coordinate of the mouse pointer in DIP. - integer x - # Y coordinate of the mouse pointer in DIP. - integer y - # Mouse button. Only "none", "left", "right" are supported. - MouseButton button - # Time at which the event occurred (default: current time). - optional TimeSinceEpoch timestamp - # X delta in DIP for mouse wheel event (default: 0). - optional number deltaX - # Y delta in DIP for mouse wheel event (default: 0). - optional number deltaY - # Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 - # (default: 0). - optional integer modifiers - # Number of times the mouse button was clicked (default: 0). - optional integer clickCount - - # Ignores input events (useful while auditing page). - command setIgnoreInputEvents - parameters - # Ignores input events processing when set to true. - boolean ignore - - # Synthesizes a pinch gesture over a time period by issuing appropriate touch events. - experimental command synthesizePinchGesture - parameters - # X coordinate of the start of the gesture in CSS pixels. - number x - # Y coordinate of the start of the gesture in CSS pixels. - number y - # Relative scale factor after zooming (>1.0 zooms in, <1.0 zooms out). - number scaleFactor - # Relative pointer speed in pixels per second (default: 800). - optional integer relativeSpeed - # Which type of input events to be generated (default: 'default', which queries the platform - # for the preferred input type). - optional GestureSourceType gestureSourceType - - # Synthesizes a scroll gesture over a time period by issuing appropriate touch events. - experimental command synthesizeScrollGesture - parameters - # X coordinate of the start of the gesture in CSS pixels. - number x - # Y coordinate of the start of the gesture in CSS pixels. - number y - # The distance to scroll along the X axis (positive to scroll left). - optional number xDistance - # The distance to scroll along the Y axis (positive to scroll up). - optional number yDistance - # The number of additional pixels to scroll back along the X axis, in addition to the given - # distance. - optional number xOverscroll - # The number of additional pixels to scroll back along the Y axis, in addition to the given - # distance. - optional number yOverscroll - # Prevent fling (default: true). - optional boolean preventFling - # Swipe speed in pixels per second (default: 800). - optional integer speed - # Which type of input events to be generated (default: 'default', which queries the platform - # for the preferred input type). - optional GestureSourceType gestureSourceType - # The number of times to repeat the gesture (default: 0). - optional integer repeatCount - # The number of milliseconds delay between each repeat. (default: 250). - optional integer repeatDelayMs - # The name of the interaction markers to generate, if not empty (default: ""). - optional string interactionMarkerName - - # Synthesizes a tap gesture over a time period by issuing appropriate touch events. - experimental command synthesizeTapGesture - parameters - # X coordinate of the start of the gesture in CSS pixels. - number x - # Y coordinate of the start of the gesture in CSS pixels. - number y - # Duration between touchdown and touchup events in ms (default: 50). - optional integer duration - # Number of times to perform the tap (e.g. 2 for double tap, default: 1). - optional integer tapCount - # Which type of input events to be generated (default: 'default', which queries the platform - # for the preferred input type). - optional GestureSourceType gestureSourceType - -experimental domain Inspector - - # Disables inspector domain notifications. - command disable - - # Enables inspector domain notifications. - command enable - - # Fired when remote debugging connection is about to be terminated. Contains detach reason. - event detached - parameters - # The reason why connection has been terminated. - string reason - - # Fired when debugging target has crashed - event targetCrashed - - # Fired when debugging target has reloaded after crash - event targetReloadedAfterCrash - -experimental domain LayerTree - depends on DOM - - # Unique Layer identifier. - type LayerId extends string - - # Unique snapshot identifier. - type SnapshotId extends string - - # Rectangle where scrolling happens on the main thread. - type ScrollRect extends object - properties - # Rectangle itself. - DOM.Rect rect - # Reason for rectangle to force scrolling on the main thread - enum type - RepaintsOnScroll - TouchEventHandler - WheelEventHandler - - # Sticky position constraints. - type StickyPositionConstraint extends object - properties - # Layout rectangle of the sticky element before being shifted - DOM.Rect stickyBoxRect - # Layout rectangle of the containing block of the sticky element - DOM.Rect containingBlockRect - # The nearest sticky layer that shifts the sticky box - optional LayerId nearestLayerShiftingStickyBox - # The nearest sticky layer that shifts the containing block - optional LayerId nearestLayerShiftingContainingBlock - - # Serialized fragment of layer picture along with its offset within the layer. - type PictureTile extends object - properties - # Offset from owning layer left boundary - number x - # Offset from owning layer top boundary - number y - # Base64-encoded snapshot data. - binary picture - - # Information about a compositing layer. - type Layer extends object - properties - # The unique id for this layer. - LayerId layerId - # The id of parent (not present for root). - optional LayerId parentLayerId - # The backend id for the node associated with this layer. - optional DOM.BackendNodeId backendNodeId - # Offset from parent layer, X coordinate. - number offsetX - # Offset from parent layer, Y coordinate. - number offsetY - # Layer width. - number width - # Layer height. - number height - # Transformation matrix for layer, default is identity matrix - optional array of number transform - # Transform anchor point X, absent if no transform specified - optional number anchorX - # Transform anchor point Y, absent if no transform specified - optional number anchorY - # Transform anchor point Z, absent if no transform specified - optional number anchorZ - # Indicates how many time this layer has painted. - integer paintCount - # Indicates whether this layer hosts any content, rather than being used for - # transform/scrolling purposes only. - boolean drawsContent - # Set if layer is not visible. - optional boolean invisible - # Rectangles scrolling on main thread only. - optional array of ScrollRect scrollRects - # Sticky position constraint information - optional StickyPositionConstraint stickyPositionConstraint - - # Array of timings, one per paint step. - type PaintProfile extends array of number - - # Provides the reasons why the given layer was composited. - command compositingReasons - parameters - # The id of the layer for which we want to get the reasons it was composited. - LayerId layerId - returns - # A list of strings specifying reasons for the given layer to become composited. - deprecated array of string compositingReasons - # A list of strings specifying reason IDs for the given layer to become composited. - array of string compositingReasonIds - - # Disables compositing tree inspection. - command disable - - # Enables compositing tree inspection. - command enable - - # Returns the snapshot identifier. - command loadSnapshot - parameters - # An array of tiles composing the snapshot. - array of PictureTile tiles - returns - # The id of the snapshot. - SnapshotId snapshotId - - # Returns the layer snapshot identifier. - command makeSnapshot - parameters - # The id of the layer. - LayerId layerId - returns - # The id of the layer snapshot. - SnapshotId snapshotId - - command profileSnapshot - parameters - # The id of the layer snapshot. - SnapshotId snapshotId - # The maximum number of times to replay the snapshot (1, if not specified). - optional integer minRepeatCount - # The minimum duration (in seconds) to replay the snapshot. - optional number minDuration - # The clip rectangle to apply when replaying the snapshot. - optional DOM.Rect clipRect - returns - # The array of paint profiles, one per run. - array of PaintProfile timings - - # Releases layer snapshot captured by the back-end. - command releaseSnapshot - parameters - # The id of the layer snapshot. - SnapshotId snapshotId - - # Replays the layer snapshot and returns the resulting bitmap. - command replaySnapshot - parameters - # The id of the layer snapshot. - SnapshotId snapshotId - # The first step to replay from (replay from the very start if not specified). - optional integer fromStep - # The last step to replay to (replay till the end if not specified). - optional integer toStep - # The scale to apply while replaying (defaults to 1). - optional number scale - returns - # A data: URL for resulting image. - string dataURL - - # Replays the layer snapshot and returns canvas log. - command snapshotCommandLog - parameters - # The id of the layer snapshot. - SnapshotId snapshotId - returns - # The array of canvas function calls. - array of object commandLog - - event layerPainted - parameters - # The id of the painted layer. - LayerId layerId - # Clip rectangle. - DOM.Rect clip - - event layerTreeDidChange - parameters - # Layer tree, absent if not in the comspositing mode. - optional array of Layer layers - -# Provides access to log entries. -domain Log - depends on Runtime - depends on Network - - # Log entry. - type LogEntry extends object - properties - # Log entry source. - enum source - xml - javascript - network - storage - appcache - rendering - security - deprecation - worker - violation - intervention - recommendation - other - # Log entry severity. - enum level - verbose - info - warning - error - # Logged text. - string text - # Timestamp when this entry was added. - Runtime.Timestamp timestamp - # URL of the resource if known. - optional string url - # Line number in the resource. - optional integer lineNumber - # JavaScript stack trace. - optional Runtime.StackTrace stackTrace - # Identifier of the network request associated with this entry. - optional Network.RequestId networkRequestId - # Identifier of the worker associated with this entry. - optional string workerId - # Call arguments. - optional array of Runtime.RemoteObject args - - # Violation configuration setting. - type ViolationSetting extends object - properties - # Violation type. - enum name - longTask - longLayout - blockedEvent - blockedParser - discouragedAPIUse - handler - recurringHandler - # Time threshold to trigger upon. - number threshold - - # Clears the log. - command clear - - # Disables log domain, prevents further log entries from being reported to the client. - command disable - - # Enables log domain, sends the entries collected so far to the client by means of the - # `entryAdded` notification. - command enable - - # start violation reporting. - command startViolationsReport - parameters - # Configuration for violations. - array of ViolationSetting config - - # Stop violation reporting. - command stopViolationsReport - - # Issued when new message was logged. - event entryAdded - parameters - # The entry. - LogEntry entry - -experimental domain Memory - - # Memory pressure level. - type PressureLevel extends string - enum - moderate - critical - - command getDOMCounters - returns - integer documents - integer nodes - integer jsEventListeners - - command prepareForLeakDetection - - # Simulate OomIntervention by purging V8 memory. - command forciblyPurgeJavaScriptMemory - - # Enable/disable suppressing memory pressure notifications in all processes. - command setPressureNotificationsSuppressed - parameters - # If true, memory pressure notifications will be suppressed. - boolean suppressed - - # Simulate a memory pressure notification in all processes. - command simulatePressureNotification - parameters - # Memory pressure level of the notification. - PressureLevel level - - # Start collecting native memory profile. - command startSampling - parameters - # Average number of bytes between samples. - optional integer samplingInterval - # Do not randomize intervals between samples. - optional boolean suppressRandomness - - # Stop collecting native memory profile. - command stopSampling - - # Retrieve native memory allocations profile - # collected since renderer process startup. - command getAllTimeSamplingProfile - returns - SamplingProfile profile - - # Retrieve native memory allocations profile - # collected since browser process startup. - command getBrowserSamplingProfile - returns - SamplingProfile profile - - # Retrieve native memory allocations profile collected since last - # `startSampling` call. - command getSamplingProfile - returns - SamplingProfile profile - - # Heap profile sample. - type SamplingProfileNode extends object - properties - # Size of the sampled allocation. - number size - # Total bytes attributed to this sample. - number total - # Execution stack at the point of allocation. - array of string stack - - # Array of heap profile samples. - type SamplingProfile extends object - properties - array of SamplingProfileNode samples - array of Module modules - - # Executable module information - type Module extends object - properties - # Name of the module. - string name - # UUID of the module. - string uuid - # Base address where the module is loaded into memory. Encoded as a decimal - # or hexadecimal (0x prefixed) string. - string baseAddress - # Size of the module in bytes. - number size - -# Network domain allows tracking network activities of the page. It exposes information about http, -# file, data and other requests and responses, their headers, bodies, timing, etc. -domain Network - depends on Debugger - depends on Runtime - depends on Security - - # Resource type as it was perceived by the rendering engine. - type ResourceType extends string - enum - Document - Stylesheet - Image - Media - Font - Script - TextTrack - XHR - Fetch - EventSource - WebSocket - Manifest - SignedExchange - Ping - CSPViolationReport - Preflight - Other - - # Unique loader identifier. - type LoaderId extends string - - # Unique request identifier. - type RequestId extends string - - # Unique intercepted request identifier. - type InterceptionId extends string - - # Network level fetch failure reason. - type ErrorReason extends string - enum - Failed - Aborted - TimedOut - AccessDenied - ConnectionClosed - ConnectionReset - ConnectionRefused - ConnectionAborted - ConnectionFailed - NameNotResolved - InternetDisconnected - AddressUnreachable - BlockedByClient - BlockedByResponse - - # UTC time in seconds, counted from January 1, 1970. - type TimeSinceEpoch extends number - - # Monotonically increasing time in seconds since an arbitrary point in the past. - type MonotonicTime extends number - - # Request / response headers as keys / values of JSON object. - type Headers extends object - - # The underlying connection technology that the browser is supposedly using. - type ConnectionType extends string - enum - none - cellular2g - cellular3g - cellular4g - bluetooth - ethernet - wifi - wimax - other - - # Represents the cookie's 'SameSite' status: - # https://tools.ietf.org/html/draft-west-first-party-cookies - type CookieSameSite extends string - enum - Strict - Lax - None - - # Represents the cookie's 'Priority' status: - # https://tools.ietf.org/html/draft-west-cookie-priority-00 - experimental type CookiePriority extends string - enum - Low - Medium - High - - # Represents the source scheme of the origin that originally set the cookie. - # A value of "Unset" allows protocol clients to emulate legacy cookie scope for the scheme. - # This is a temporary ability and it will be removed in the future. - experimental type CookieSourceScheme extends string - enum - Unset - NonSecure - Secure - - # Timing information for the request. - type ResourceTiming extends object - properties - # Timing's requestTime is a baseline in seconds, while the other numbers are ticks in - # milliseconds relatively to this requestTime. - number requestTime - # Started resolving proxy. - number proxyStart - # Finished resolving proxy. - number proxyEnd - # Started DNS address resolve. - number dnsStart - # Finished DNS address resolve. - number dnsEnd - # Started connecting to the remote host. - number connectStart - # Connected to the remote host. - number connectEnd - # Started SSL handshake. - number sslStart - # Finished SSL handshake. - number sslEnd - # Started running ServiceWorker. - experimental number workerStart - # Finished Starting ServiceWorker. - experimental number workerReady - # Started fetch event. - experimental number workerFetchStart - # Settled fetch event respondWith promise. - experimental number workerRespondWithSettled - # Started sending request. - number sendStart - # Finished sending request. - number sendEnd - # Time the server started pushing request. - experimental number pushStart - # Time the server finished pushing request. - experimental number pushEnd - # Finished receiving response headers. - number receiveHeadersEnd - - # Loading priority of a resource request. - type ResourcePriority extends string - enum - VeryLow - Low - Medium - High - VeryHigh - - # Post data entry for HTTP request - type PostDataEntry extends object - properties - optional binary bytes - - # HTTP request data. - type Request extends object - properties - # Request URL (without fragment). - string url - # Fragment of the requested URL starting with hash, if present. - optional string urlFragment - # HTTP request method. - string method - # HTTP request headers. - Headers headers - # HTTP POST request data. - optional string postData - # True when the request has POST data. Note that postData might still be omitted when this flag is true when the data is too long. - optional boolean hasPostData - # Request body elements. This will be converted from base64 to binary - experimental optional array of PostDataEntry postDataEntries - # The mixed content type of the request. - optional Security.MixedContentType mixedContentType - # Priority of the resource request at the time request is sent. - ResourcePriority initialPriority - # The referrer policy of the request, as defined in https://www.w3.org/TR/referrer-policy/ - enum referrerPolicy - unsafe-url - no-referrer-when-downgrade - no-referrer - origin - origin-when-cross-origin - same-origin - strict-origin - strict-origin-when-cross-origin - # Whether is loaded via link preload. - optional boolean isLinkPreload - # Set for requests when the TrustToken API is used. Contains the parameters - # passed by the developer (e.g. via "fetch") as understood by the backend. - experimental optional TrustTokenParams trustTokenParams - - # Details of a signed certificate timestamp (SCT). - type SignedCertificateTimestamp extends object - properties - # Validation status. - string status - # Origin. - string origin - # Log name / description. - string logDescription - # Log ID. - string logId - # Issuance date. - TimeSinceEpoch timestamp - # Hash algorithm. - string hashAlgorithm - # Signature algorithm. - string signatureAlgorithm - # Signature data. - string signatureData - - # Security details about a request. - type SecurityDetails extends object - properties - # Protocol name (e.g. "TLS 1.2" or "QUIC"). - string protocol - # Key Exchange used by the connection, or the empty string if not applicable. - string keyExchange - # (EC)DH group used by the connection, if applicable. - optional string keyExchangeGroup - # Cipher name. - string cipher - # TLS MAC. Note that AEAD ciphers do not have separate MACs. - optional string mac - # Certificate ID value. - Security.CertificateId certificateId - # Certificate subject name. - string subjectName - # Subject Alternative Name (SAN) DNS names and IP addresses. - array of string sanList - # Name of the issuing CA. - string issuer - # Certificate valid from date. - TimeSinceEpoch validFrom - # Certificate valid to (expiration) date - TimeSinceEpoch validTo - # List of signed certificate timestamps (SCTs). - array of SignedCertificateTimestamp signedCertificateTimestampList - # Whether the request complied with Certificate Transparency policy - CertificateTransparencyCompliance certificateTransparencyCompliance - - # Whether the request complied with Certificate Transparency policy. - type CertificateTransparencyCompliance extends string - enum - unknown - not-compliant - compliant - - # The reason why request was blocked. - type BlockedReason extends string - enum - other - csp - mixed-content - origin - inspector - subresource-filter - content-type - collapsed-by-client - coep-frame-resource-needs-coep-header - coop-sandboxed-iframe-cannot-navigate-to-coop-page - corp-not-same-origin - corp-not-same-origin-after-defaulted-to-same-origin-by-coep - corp-not-same-site - - # The reason why request was blocked. - type CorsError extends string - enum - DisallowedByMode - InvalidResponse - WildcardOriginNotAllowed - MissingAllowOriginHeader - MultipleAllowOriginValues - InvalidAllowOriginValue - AllowOriginMismatch - InvalidAllowCredentials - CorsDisabledScheme - PreflightInvalidStatus - PreflightDisallowedRedirect - PreflightWildcardOriginNotAllowed - PreflightMissingAllowOriginHeader - PreflightMultipleAllowOriginValues - PreflightInvalidAllowOriginValue - PreflightAllowOriginMismatch - PreflightInvalidAllowCredentials - PreflightMissingAllowExternal - PreflightInvalidAllowExternal - InvalidAllowMethodsPreflightResponse - InvalidAllowHeadersPreflightResponse - MethodDisallowedByPreflightResponse - HeaderDisallowedByPreflightResponse - RedirectContainsCredentials - InsecurePrivateNetwork - - type CorsErrorStatus extends object - properties - CorsError corsError - string failedParameter - - # Source of serviceworker response. - type ServiceWorkerResponseSource extends string - enum - cache-storage - http-cache - fallback-code - network - - # Determines what type of Trust Token operation is executed and - # depending on the type, some additional parameters. The values - # are specified in third_party/blink/renderer/core/fetch/trust_token.idl. - experimental type TrustTokenParams extends object - properties - TrustTokenOperationType type - - # Only set for "token-redemption" type and determine whether - # to request a fresh SRR or use a still valid cached SRR. - enum refreshPolicy - UseCached - Refresh - - # Origins of issuers from whom to request tokens or redemption - # records. - optional array of string issuers - - experimental type TrustTokenOperationType extends string - enum - # Type "token-request" in the Trust Token API. - Issuance - # Type "token-redemption" in the Trust Token API. - Redemption - # Type "send-redemption-record" in the Trust Token API. - Signing - - # HTTP response data. - type Response extends object - properties - # Response URL. This URL can be different from CachedResource.url in case of redirect. - string url - # HTTP response status code. - integer status - # HTTP response status text. - string statusText - # HTTP response headers. - Headers headers - # HTTP response headers text. - optional string headersText - # Resource mimeType as determined by the browser. - string mimeType - # Refined HTTP request headers that were actually transmitted over the network. - optional Headers requestHeaders - # HTTP request headers text. - optional string requestHeadersText - # Specifies whether physical connection was actually reused for this request. - boolean connectionReused - # Physical connection id that was actually used for this request. - number connectionId - # Remote IP address. - optional string remoteIPAddress - # Remote port. - optional integer remotePort - # Specifies that the request was served from the disk cache. - optional boolean fromDiskCache - # Specifies that the request was served from the ServiceWorker. - optional boolean fromServiceWorker - # Specifies that the request was served from the prefetch cache. - optional boolean fromPrefetchCache - # Total number of bytes received for this request so far. - number encodedDataLength - # Timing information for the given request. - optional ResourceTiming timing - # Response source of response from ServiceWorker. - optional ServiceWorkerResponseSource serviceWorkerResponseSource - # The time at which the returned response was generated. - optional TimeSinceEpoch responseTime - # Cache Storage Cache Name. - optional string cacheStorageCacheName - # Protocol used to fetch this request. - optional string protocol - # Security state of the request resource. - Security.SecurityState securityState - # Security details for the request. - optional SecurityDetails securityDetails - - # WebSocket request data. - type WebSocketRequest extends object - properties - # HTTP request headers. - Headers headers - - # WebSocket response data. - type WebSocketResponse extends object - properties - # HTTP response status code. - integer status - # HTTP response status text. - string statusText - # HTTP response headers. - Headers headers - # HTTP response headers text. - optional string headersText - # HTTP request headers. - optional Headers requestHeaders - # HTTP request headers text. - optional string requestHeadersText - - # WebSocket message data. This represents an entire WebSocket message, not just a fragmented frame as the name suggests. - type WebSocketFrame extends object - properties - # WebSocket message opcode. - number opcode - # WebSocket message mask. - boolean mask - # WebSocket message payload data. - # If the opcode is 1, this is a text message and payloadData is a UTF-8 string. - # If the opcode isn't 1, then payloadData is a base64 encoded string representing binary data. - string payloadData - - # Information about the cached resource. - type CachedResource extends object - properties - # Resource URL. This is the url of the original network request. - string url - # Type of this resource. - ResourceType type - # Cached response data. - optional Response response - # Cached response body size. - number bodySize - - # Information about the request initiator. - type Initiator extends object - properties - # Type of this initiator. - enum type - parser - script - preload - SignedExchange - preflight - other - # Initiator JavaScript stack trace, set for Script only. - optional Runtime.StackTrace stack - # Initiator URL, set for Parser type or for Script type (when script is importing module) or for SignedExchange type. - optional string url - # Initiator line number, set for Parser type or for Script type (when script is importing - # module) (0-based). - optional number lineNumber - # Initiator column number, set for Parser type or for Script type (when script is importing - # module) (0-based). - optional number columnNumber - # Set if another request triggered this request (e.g. preflight). - optional RequestId requestId - - # Cookie object - type Cookie extends object - properties - # Cookie name. - string name - # Cookie value. - string value - # Cookie domain. - string domain - # Cookie path. - string path - # Cookie expiration date as the number of seconds since the UNIX epoch. - number expires - # Cookie size. - integer size - # True if cookie is http-only. - boolean httpOnly - # True if cookie is secure. - boolean secure - # True in case of session cookie. - boolean session - # Cookie SameSite type. - optional CookieSameSite sameSite - # Cookie Priority - experimental CookiePriority priority - # True if cookie is SameParty. - experimental boolean sameParty - # Cookie source scheme type. - experimental CookieSourceScheme sourceScheme - # Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port. - # An unspecified port value allows protocol clients to emulate legacy cookie scope for the port. - # This is a temporary ability and it will be removed in the future. - experimental integer sourcePort - - # Types of reasons why a cookie may not be stored from a response. - experimental type SetCookieBlockedReason extends string - enum - # The cookie had the "Secure" attribute but was not received over a secure connection. - SecureOnly - # The cookie had the "SameSite=Strict" attribute but came from a cross-origin response. - # This includes navigation requests intitiated by other origins. - SameSiteStrict - # The cookie had the "SameSite=Lax" attribute but came from a cross-origin response. - SameSiteLax - # The cookie didn't specify a "SameSite" attribute and was defaulted to "SameSite=Lax" and - # broke the same rules specified in the SameSiteLax value. - SameSiteUnspecifiedTreatedAsLax - # The cookie had the "SameSite=None" attribute but did not specify the "Secure" attribute, - # which is required in order to use "SameSite=None". - SameSiteNoneInsecure - # The cookie was not stored due to user preferences. - UserPreferences - # The syntax of the Set-Cookie header of the response was invalid. - SyntaxError - # The scheme of the connection is not allowed to store cookies. - SchemeNotSupported - # The cookie was not sent over a secure connection and would have overwritten a cookie with - # the Secure attribute. - OverwriteSecure - # The cookie's domain attribute was invalid with regards to the current host url. - InvalidDomain - # The cookie used the "__Secure-" or "__Host-" prefix in its name and broke the additional - # rules applied to cookies with these prefixes as defined in - # https://tools.ietf.org/html/draft-west-cookie-prefixes-05 - InvalidPrefix - # An unknown error was encountered when trying to store this cookie. - UnknownError - # The cookie had the "SameSite=Strict" attribute but came from a response - # with the same registrable domain but a different scheme. - # This includes navigation requests intitiated by other origins. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteStrict - # The cookie had the "SameSite=Lax" attribute but came from a response - # with the same registrable domain but a different scheme. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteLax - # The cookie didn't specify a "SameSite" attribute and was defaulted to - # "SameSite=Lax" and broke the same rules specified in the SchemefulSameSiteLax - # value. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteUnspecifiedTreatedAsLax - # The cookie had the "SameParty" attribute but came from a cross-party response. - SamePartyFromCrossPartyContext - # The cookie had the "SameParty" attribute but did not specify the "Secure" attribute - # (which is required in order to use "SameParty"); or specified the "SameSite=Strict" - # attribute (which is forbidden when using "SameParty"). - SamePartyConflictsWithOtherAttributes - - # Types of reasons why a cookie may not be sent with a request. - experimental type CookieBlockedReason extends string - enum - # The cookie had the "Secure" attribute and the connection was not secure. - SecureOnly - # The cookie's path was not within the request url's path. - NotOnPath - # The cookie's domain is not configured to match the request url's domain, even though they - # share a common TLD+1 (TLD+1 of foo.bar.example.com is example.com). - DomainMismatch - # The cookie had the "SameSite=Strict" attribute and the request was made on on a different - # site. This includes navigation requests initiated by other sites. - SameSiteStrict - # The cookie had the "SameSite=Lax" attribute and the request was made on a different site. - # This does not include navigation requests initiated by other sites. - SameSiteLax - # The cookie didn't specify a SameSite attribute when it was stored and was defaulted to - # "SameSite=Lax" and broke the same rules specified in the SameSiteLax value. The cookie had - # to have been set with "SameSite=None" to enable third-party usage. - SameSiteUnspecifiedTreatedAsLax - # The cookie had the "SameSite=None" attribute and the connection was not secure. Cookies - # without SameSite restrictions must be sent over a secure connection. - SameSiteNoneInsecure - # The cookie was not sent due to user preferences. - UserPreferences - # An unknown error was encountered when trying to send this cookie. - UnknownError - # The cookie had the "SameSite=Strict" attribute but came from a response - # with the same registrable domain but a different scheme. - # This includes navigation requests intitiated by other origins. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteStrict - # The cookie had the "SameSite=Lax" attribute but came from a response - # with the same registrable domain but a different scheme. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteLax - # The cookie didn't specify a "SameSite" attribute and was defaulted to - # "SameSite=Lax" and broke the same rules specified in the SchemefulSameSiteLax - # value. - # This is the "Schemeful Same-Site" version of the blocked reason. - SchemefulSameSiteUnspecifiedTreatedAsLax - # The cookie had the "SameParty" attribute and the request was made from a cross-party context. - SamePartyFromCrossPartyContext - - # A cookie which was not stored from a response with the corresponding reason. - experimental type BlockedSetCookieWithReason extends object - properties - # The reason(s) this cookie was blocked. - array of SetCookieBlockedReason blockedReasons - # The string representing this individual cookie as it would appear in the header. - # This is not the entire "cookie" or "set-cookie" header which could have multiple cookies. - string cookieLine - # The cookie object which represents the cookie which was not stored. It is optional because - # sometimes complete cookie information is not available, such as in the case of parsing - # errors. - optional Cookie cookie - - # A cookie with was not sent with a request with the corresponding reason. - experimental type BlockedCookieWithReason extends object - properties - # The reason(s) the cookie was blocked. - array of CookieBlockedReason blockedReasons - # The cookie object representing the cookie which was not sent. - Cookie cookie - - # Cookie parameter object - type CookieParam extends object - properties - # Cookie name. - string name - # Cookie value. - string value - # The request-URI to associate with the setting of the cookie. This value can affect the - # default domain, path, source port, and source scheme values of the created cookie. - optional string url - # Cookie domain. - optional string domain - # Cookie path. - optional string path - # True if cookie is secure. - optional boolean secure - # True if cookie is http-only. - optional boolean httpOnly - # Cookie SameSite type. - optional CookieSameSite sameSite - # Cookie expiration date, session cookie if not set - optional TimeSinceEpoch expires - # Cookie Priority. - experimental optional CookiePriority priority - # True if cookie is SameParty. - experimental optional boolean sameParty - # Cookie source scheme type. - experimental optional CookieSourceScheme sourceScheme - # Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port. - # An unspecified port value allows protocol clients to emulate legacy cookie scope for the port. - # This is a temporary ability and it will be removed in the future. - experimental optional integer sourcePort - - # Authorization challenge for HTTP status code 401 or 407. - experimental type AuthChallenge extends object - properties - # Source of the authentication challenge. - optional enum source - Server - Proxy - # Origin of the challenger. - string origin - # The authentication scheme used, such as basic or digest - string scheme - # The realm of the challenge. May be empty. - string realm - - # Response to an AuthChallenge. - experimental type AuthChallengeResponse extends object - properties - # The decision on what to do in response to the authorization challenge. Default means - # deferring to the default behavior of the net stack, which will likely either the Cancel - # authentication or display a popup dialog box. - enum response - Default - CancelAuth - ProvideCredentials - # The username to provide, possibly empty. Should only be set if response is - # ProvideCredentials. - optional string username - # The password to provide, possibly empty. Should only be set if response is - # ProvideCredentials. - optional string password - - # Stages of the interception to begin intercepting. Request will intercept before the request is - # sent. Response will intercept after the response is received. - experimental type InterceptionStage extends string - enum - Request - HeadersReceived - - # Request pattern for interception. - experimental type RequestPattern extends object - properties - # Wildcards ('*' -> zero or more, '?' -> exactly one) are allowed. Escape character is - # backslash. Omitting is equivalent to "*". - optional string urlPattern - # If set, only requests for matching resource types will be intercepted. - optional ResourceType resourceType - # Stage at wich to begin intercepting requests. Default is Request. - optional InterceptionStage interceptionStage - - # Information about a signed exchange signature. - # https://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#rfc.section.3.1 - experimental type SignedExchangeSignature extends object - properties - # Signed exchange signature label. - string label - # The hex string of signed exchange signature. - string signature - # Signed exchange signature integrity. - string integrity - # Signed exchange signature cert Url. - optional string certUrl - # The hex string of signed exchange signature cert sha256. - optional string certSha256 - # Signed exchange signature validity Url. - string validityUrl - # Signed exchange signature date. - integer date - # Signed exchange signature expires. - integer expires - # The encoded certificates. - optional array of string certificates - - # Information about a signed exchange header. - # https://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#cbor-representation - experimental type SignedExchangeHeader extends object - properties - # Signed exchange request URL. - string requestUrl - # Signed exchange response code. - integer responseCode - # Signed exchange response headers. - Headers responseHeaders - # Signed exchange response signature. - array of SignedExchangeSignature signatures - # Signed exchange header integrity hash in the form of "sha256-<base64-hash-value>". - string headerIntegrity - - # Field type for a signed exchange related error. - experimental type SignedExchangeErrorField extends string - enum - signatureSig - signatureIntegrity - signatureCertUrl - signatureCertSha256 - signatureValidityUrl - signatureTimestamps - - # Information about a signed exchange response. - experimental type SignedExchangeError extends object - properties - # Error message. - string message - # The index of the signature which caused the error. - optional integer signatureIndex - # The field which caused the error. - optional SignedExchangeErrorField errorField - - # Information about a signed exchange response. - experimental type SignedExchangeInfo extends object - properties - # The outer response of signed HTTP exchange which was received from network. - Response outerResponse - # Information about the signed exchange header. - optional SignedExchangeHeader header - # Security details for the signed exchange header. - optional SecurityDetails securityDetails - # Errors occurred while handling the signed exchagne. - optional array of SignedExchangeError errors - - # Tells whether clearing browser cache is supported. - deprecated command canClearBrowserCache - returns - # True if browser cache can be cleared. - boolean result - - # Tells whether clearing browser cookies is supported. - deprecated command canClearBrowserCookies - returns - # True if browser cookies can be cleared. - boolean result - - # Tells whether emulation of network conditions is supported. - deprecated command canEmulateNetworkConditions - returns - # True if emulation of network conditions is supported. - boolean result - - # Clears browser cache. - command clearBrowserCache - - # Clears browser cookies. - command clearBrowserCookies - - # Response to Network.requestIntercepted which either modifies the request to continue with any - # modifications, or blocks it, or completes it with the provided response bytes. If a network - # fetch occurs as a result which encounters a redirect an additional Network.requestIntercepted - # event will be sent with the same InterceptionId. - # Deprecated, use Fetch.continueRequest, Fetch.fulfillRequest and Fetch.failRequest instead. - experimental deprecated command continueInterceptedRequest - parameters - InterceptionId interceptionId - # If set this causes the request to fail with the given reason. Passing `Aborted` for requests - # marked with `isNavigationRequest` also cancels the navigation. Must not be set in response - # to an authChallenge. - optional ErrorReason errorReason - # If set the requests completes using with the provided base64 encoded raw response, including - # HTTP status line and headers etc... Must not be set in response to an authChallenge. - optional binary rawResponse - # If set the request url will be modified in a way that's not observable by page. Must not be - # set in response to an authChallenge. - optional string url - # If set this allows the request method to be overridden. Must not be set in response to an - # authChallenge. - optional string method - # If set this allows postData to be set. Must not be set in response to an authChallenge. - optional string postData - # If set this allows the request headers to be changed. Must not be set in response to an - # authChallenge. - optional Headers headers - # Response to a requestIntercepted with an authChallenge. Must not be set otherwise. - optional AuthChallengeResponse authChallengeResponse - - # Deletes browser cookies with matching name and url or domain/path pair. - command deleteCookies - parameters - # Name of the cookies to remove. - string name - # If specified, deletes all the cookies with the given name where domain and path match - # provided URL. - optional string url - # If specified, deletes only cookies with the exact domain. - optional string domain - # If specified, deletes only cookies with the exact path. - optional string path - - # Disables network tracking, prevents network events from being sent to the client. - command disable - - # Activates emulation of network conditions. - command emulateNetworkConditions - parameters - # True to emulate internet disconnection. - boolean offline - # Minimum latency from request sent to response headers received (ms). - number latency - # Maximal aggregated download throughput (bytes/sec). -1 disables download throttling. - number downloadThroughput - # Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling. - number uploadThroughput - # Connection type if known. - optional ConnectionType connectionType - - # Enables network tracking, network events will now be delivered to the client. - command enable - parameters - # Buffer size in bytes to use when preserving network payloads (XHRs, etc). - experimental optional integer maxTotalBufferSize - # Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc). - experimental optional integer maxResourceBufferSize - # Longest post body size (in bytes) that would be included in requestWillBeSent notification - optional integer maxPostDataSize - - # Returns all browser cookies. Depending on the backend support, will return detailed cookie - # information in the `cookies` field. - command getAllCookies - returns - # Array of cookie objects. - array of Cookie cookies - - # Returns the DER-encoded certificate. - experimental command getCertificate - parameters - # Origin to get certificate for. - string origin - returns - array of string tableNames - - # Returns all browser cookies for the current URL. Depending on the backend support, will return - # detailed cookie information in the `cookies` field. - command getCookies - parameters - # The list of URLs for which applicable cookies will be fetched. - # If not specified, it's assumed to be set to the list containing - # the URLs of the page and all of its subframes. - optional array of string urls - returns - # Array of cookie objects. - array of Cookie cookies - - # Returns content served for the given request. - command getResponseBody - parameters - # Identifier of the network request to get content for. - RequestId requestId - returns - # Response body. - string body - # True, if content was sent as base64. - boolean base64Encoded - - # Returns post data sent with the request. Returns an error when no data was sent with the request. - command getRequestPostData - parameters - # Identifier of the network request to get content for. - RequestId requestId - returns - # Request body string, omitting files from multipart requests - string postData - - # Returns content served for the given currently intercepted request. - experimental command getResponseBodyForInterception - parameters - # Identifier for the intercepted request to get body for. - InterceptionId interceptionId - returns - # Response body. - string body - # True, if content was sent as base64. - boolean base64Encoded - - # Returns a handle to the stream representing the response body. Note that after this command, - # the intercepted request can't be continued as is -- you either need to cancel it or to provide - # the response body. The stream only supports sequential read, IO.read will fail if the position - # is specified. - experimental command takeResponseBodyForInterceptionAsStream - parameters - InterceptionId interceptionId - returns - IO.StreamHandle stream - - # This method sends a new XMLHttpRequest which is identical to the original one. The following - # parameters should be identical: method, url, async, request body, extra headers, withCredentials - # attribute, user, password. - experimental command replayXHR - parameters - # Identifier of XHR to replay. - RequestId requestId - - # Searches for given string in response content. - experimental command searchInResponseBody - parameters - # Identifier of the network response to search. - RequestId requestId - # String to search for. - string query - # If true, search is case sensitive. - optional boolean caseSensitive - # If true, treats string parameter as regex. - optional boolean isRegex - returns - # List of search matches. - array of Debugger.SearchMatch result - - # Blocks URLs from loading. - experimental command setBlockedURLs - parameters - # URL patterns to block. Wildcards ('*') are allowed. - array of string urls - - # Toggles ignoring of service worker for each request. - experimental command setBypassServiceWorker - parameters - # Bypass service worker and load from network. - boolean bypass - - # Toggles ignoring cache for each request. If `true`, cache will not be used. - command setCacheDisabled - parameters - # Cache disabled state. - boolean cacheDisabled - - # Sets a cookie with the given cookie data; may overwrite equivalent cookies if they exist. - command setCookie - parameters - # Cookie nam