diff --git a/.gitignore b/.gitignore index 597b6a7..ef1d2f6 100644 --- a/.gitignore +++ b/.gitignore
@@ -61,6 +61,7 @@ /android_emulator_sdk /ash/ash_unittests_run.xml /base/base_unittests_run.xml +/breakpad/src/ # See build/.gitignore for entries covering src/build. /buildtools # The Chrome OS build creates a /c symlink due to http://crbug.com/54866.
diff --git a/.gn b/.gn index 7a7160d..c4833e2 100644 --- a/.gn +++ b/.gn
@@ -64,6 +64,7 @@ "//ash/*", "//base/*", "//blink/*", + "//breakpad/*", "//build/*", "//cc/*", @@ -134,7 +135,6 @@ "//testing/*", #"//third_party/*", # May not ever want this. - "//third_party/breakpad/*", "//third_party/brotli/*", "//third_party/hunspell/*", "//third_party/leveldatabase/*",
diff --git a/BUILD.gn b/BUILD.gn index edbdca4..b75af2f 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -364,10 +364,10 @@ if (is_linux || is_android) { deps += [ - "//third_party/breakpad:breakpad_unittests", - "//third_party/breakpad:core-2-minidump", - "//third_party/breakpad:generate_test_dump", - "//third_party/breakpad:minidump-2-core", + "//breakpad:breakpad_unittests", + "//breakpad:core-2-minidump", + "//breakpad:generate_test_dump", + "//breakpad:minidump-2-core", ] } @@ -508,16 +508,16 @@ if (is_android || (is_linux && !is_chromeos)) { deps += [ + "//breakpad:dump_syms($host_toolchain)", + "//breakpad:microdump_stackwalk($host_toolchain)", + "//breakpad:minidump_dump($host_toolchain)", + "//breakpad:minidump_stackwalk($host_toolchain)", "//components/network_hints/browser", "//content/public/app:browser", "//content/public/app:child", "//mojo/edk/test:mojo_public_system_perftests", "//services/service_manager/public/cpp", "//testing/gmock:gmock_main", - "//third_party/breakpad:dump_syms($host_toolchain)", - "//third_party/breakpad:microdump_stackwalk($host_toolchain)", - "//third_party/breakpad:minidump_dump($host_toolchain)", - "//third_party/breakpad:minidump_stackwalk($host_toolchain)", ] if (!is_android) { @@ -547,9 +547,9 @@ if (is_mac) { deps += [ + "//breakpad:crash_inspector", + "//breakpad:dump_syms", "//third_party/apple_sample_code", - "//third_party/breakpad:crash_inspector", - "//third_party/breakpad:dump_syms", "//third_party/molokocacao", ] deps -= [ @@ -585,7 +585,7 @@ [ "//chrome/installer/mini_installer:next_version_mini_installer" ] } } else if (!is_android && !is_ios && !is_fuchsia) { - deps += [ "//third_party/breakpad:symupload($host_toolchain)" ] + deps += [ "//breakpad:symupload($host_toolchain)" ] } if (is_chromecast) { @@ -813,13 +813,13 @@ group("chromiumos_preflight") { testonly = true deps = [ + "//breakpad:minidump_stackwalk($host_toolchain)", "//chrome", "//chrome/test/chromedriver", "//media:media_unittests", "//ppapi/examples/video_decode", "//sandbox/linux:chrome_sandbox", "//sandbox/linux:sandbox_linux_unittests", - "//third_party/breakpad:minidump_stackwalk($host_toolchain)", # Blocked on https://github.com/catapult-project/catapult/issues/2297 #"//third_party/catapult/telemetry:bitmaptools", @@ -913,12 +913,12 @@ if (is_android) { data_deps += [ - "//third_party/breakpad:breakpad_unittests", - "//third_party/breakpad:dump_syms", - "//third_party/breakpad:microdump_stackwalk", - "//third_party/breakpad:minidump_dump", - "//third_party/breakpad:minidump_stackwalk", - "//third_party/breakpad:symupload", + "//breakpad:breakpad_unittests", + "//breakpad:dump_syms", + "//breakpad:microdump_stackwalk", + "//breakpad:minidump_dump", + "//breakpad:minidump_stackwalk", + "//breakpad:symupload", "//tools/android/forwarder2", ] } @@ -928,16 +928,15 @@ } if (!is_win && !is_android) { - data_deps += - [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ] } if (is_mac) { - data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + data_deps += [ "//breakpad:dump_syms($host_toolchain)" ] } if (is_linux) { - data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + data_deps += [ "//breakpad:dump_syms($host_toolchain)" ] } data = [ @@ -1055,8 +1054,7 @@ "//chrome/test:angle_perftests", ] } else { - data_deps += - [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] + data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ] } } }
diff --git a/DEPS b/DEPS index 4dda9f72..f5f0741 100644 --- a/DEPS +++ b/DEPS
@@ -28,6 +28,10 @@ vars = { + # By default, do not check out src-internal. This can be overridden e.g. with + # custom_vars. + 'checkout_src_internal': 'False', + 'chromium_git': 'https://chromium.googlesource.com', 'swiftshader_git': 'https://swiftshader.googlesource.com', 'pdfium_git': 'https://pdfium.googlesource.com', @@ -45,7 +49,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '8b35cb30de6b2ed5e57ff35064870b60a18960ba', + 'v8_revision': '45a0ce950715c19d967a91464589ca334d95164d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -117,6 +121,7 @@ allowed_hosts = [ 'android.googlesource.com', 'boringssl.googlesource.com', + 'chrome-internal.googlesource.com', 'chromium.googlesource.com', 'pdfium.googlesource.com', 'skia.googlesource.com', @@ -125,8 +130,13 @@ ] deps = { - 'src/third_party/breakpad/breakpad': - Var('chromium_git') + '/breakpad/breakpad.git' + '@' + '1c6d1613966eab5d77531e85f3b60c40124b43f0', + 'src-internal': { + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@a10bd7dbe86ec3230cf7b42bb3a5b247ac778082', + 'condition': 'checkout_src_internal', + }, + + 'src/breakpad/src': + Var('chromium_git') + '/breakpad/breakpad/src.git' + '@' + '6b59fc07474c9338e7727c52a6d8a92010a105ad', 'src/buildtools': Var('chromium_git') + '/chromium/buildtools.git' + '@' + Var('buildtools_revision'), @@ -450,7 +460,7 @@ # Minizip library. Used on Chrome OS. 'src/third_party/minizip/src': - Var('chromium_git') + '/external/github.com/nmoinvaz/minizip' + '@' + 'dc3ad01e3d5928e9105f770b7e896a8e9fe0d3b4', + Var('chromium_git') + '/external/github.com/nmoinvaz/minizip' + '@' + 'e07e141475220196b55294c8172b274cc32d642d', # Android Explicit Synchronization. 'src/third_party/libsync/src': @@ -532,11 +542,11 @@ # checkdeps.py shouldn't check include paths for files in these dirs: skip_child_includes = [ + 'breakpad', 'native_client_sdk', 'out', 'skia', 'testing', - 'third_party/breakpad/breakpad', 'v8', 'win8', ] @@ -1246,4 +1256,6 @@ 'src/third_party/android_tools', # ANGLE manages DEPS that it also owns the build files for, such as dEQP. ("src/third_party/angle", "DEPS.chromium"), + # src-internal has its own DEPS file to pull additional internal repos + 'src-internal', ]
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 8f81373a..be5db1d8 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py
@@ -10,13 +10,13 @@ _EXCLUDED_PATHS = ( + r"^breakpad[\\\/].*", r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_rules.py", r"^native_client_sdk[\\\/]src[\\\/]build_tools[\\\/]make_simple.py", r"^native_client_sdk[\\\/]src[\\\/]tools[\\\/].*.mk", r"^net[\\\/]tools[\\\/]spdyshark[\\\/].*", r"^skia[\\\/].*", r"^third_party[\\\/](WebKit|blink)[\\\/].*", - r"^third_party[\\\/]breakpad[\\\/].*", r"^v8[\\\/].*", r".*MakeFile$", r".+_autogen\.h$", @@ -429,17 +429,6 @@ ), ), ( - 'leveldb::NewMemEnv', - ( - 'Instead of leveldb::NewMemEnv() use leveldb_chrome::NewMemEnv() from', - 'third_party/leveldatabase/leveldb_chrome.h.', - ), - True, - ( - r'^third_party/leveldatabase/.*\.(cc|h)$', - ), - ), - ( 'MessageLoop::QuitWhenIdleClosure', ( 'MessageLoop::QuitWhenIdleClosure is deprecated. Please migrate to',
diff --git a/base/debug/stack_trace_win.cc b/base/debug/stack_trace_win.cc index ea270fc..1d7c2b3 100644 --- a/base/debug/stack_trace_win.cc +++ b/base/debug/stack_trace_win.cc
@@ -106,7 +106,7 @@ // we are using the Sym* functions. This is because breakpad does now // share a lock with this function. See this related bug: // -// https://crbug.com/google-breakpad/311 +// http://code.google.com/p/google-breakpad/issues/detail?id=311 // // This is a very unlikely edge case, and the current solution is to // just ignore it.
diff --git a/base/process/launch_mac.cc b/base/process/launch_mac.cc index dfa9257a..b8ff49c 100644 --- a/base/process/launch_mac.cc +++ b/base/process/launch_mac.cc
@@ -76,7 +76,7 @@ void RestoreDefaultExceptionHandler() { // This function is tailored to remove the Breakpad exception handler. // exception_mask matches s_exception_mask in - // third_party/breakpad/breakpad/src/client/mac/handler/exception_handler.cc + // breakpad/src/client/mac/handler/exception_handler.cc const exception_mask_t exception_mask = EXC_MASK_BAD_ACCESS | EXC_MASK_BAD_INSTRUCTION | EXC_MASK_ARITHMETIC |
diff --git a/breakpad/BUILD.gn b/breakpad/BUILD.gn new file mode 100644 index 0000000..fb2aeeaa --- /dev/null +++ b/breakpad/BUILD.gn
@@ -0,0 +1,993 @@ +# 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/symlink.gni") +import("//testing/libfuzzer/fuzzer_test.gni") +import("//testing/test.gni") + +if (is_win) { + import("//build/config/win/visual_studio_version.gni") +} + +config("tools_config") { + include_dirs = [ + "src", + "src/third_party", + ] + if (is_android) { + defines = [ "__ANDROID__" ] + } + if (is_clang) { + cflags = [ "-Wno-tautological-constant-out-of-range-compare" ] + } +} + +config("internal_config") { + include_dirs = [ "src" ] + defines = [] + if (is_debug) { + # This is needed for GTMLogger to work correctly. + defines += [ "DEBUG" ] + } + if (is_android) { + defines += [ "__ANDROID__" ] + } +} + +config("client_config") { + include_dirs = [ "src" ] + if (is_android) { + include_dirs += [ "src/common/android/include" ] + } + if (is_chromeos) { + defines = [ "__CHROMEOS__" ] + } +} + +config("handler_config") { + include_dirs = [ "src" ] +} + +config("sender_config") { + include_dirs = [ "src" ] +} + +config("breakpad_unittest_config") { + # One of the breakpad unit tests test that we can detect the proper build-id. + # We must override the build-id for this one target. + ldflags = [ "-Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" ] +} + +# {micro,mini}dump_stackwalk and minidump_dump are tool-type executables +# that do not build on Windows. +if (!is_win) { + if (current_toolchain == host_toolchain) { + # Contains the code shared by both {micro,mini}dump_stackwalk. + static_library("stackwalk_common") { + # Always want these files included regardless of platform. + set_sources_assignment_filter([]) + sources = [ + "src/processor/basic_code_module.h", + "src/processor/basic_code_modules.cc", + "src/processor/basic_code_modules.h", + "src/processor/basic_source_line_resolver.cc", + "src/processor/call_stack.cc", + "src/processor/cfi_frame_info.cc", + "src/processor/cfi_frame_info.h", + "src/processor/disassembler_x86.cc", + "src/processor/disassembler_x86.h", + "src/processor/dump_context.cc", + "src/processor/dump_object.cc", + "src/processor/logging.cc", + "src/processor/logging.h", + "src/processor/pathname_stripper.cc", + "src/processor/pathname_stripper.h", + "src/processor/proc_maps_linux.cc", + "src/processor/process_state.cc", + "src/processor/simple_symbol_supplier.cc", + "src/processor/simple_symbol_supplier.h", + "src/processor/source_line_resolver_base.cc", + "src/processor/stack_frame_cpu.cc", + "src/processor/stack_frame_symbolizer.cc", + "src/processor/stackwalk_common.cc", + "src/processor/stackwalker.cc", + "src/processor/stackwalker_amd64.cc", + "src/processor/stackwalker_amd64.h", + "src/processor/stackwalker_arm.cc", + "src/processor/stackwalker_arm.h", + "src/processor/stackwalker_arm64.cc", + "src/processor/stackwalker_arm64.h", + "src/processor/stackwalker_mips.cc", + "src/processor/stackwalker_mips.h", + "src/processor/stackwalker_ppc.cc", + "src/processor/stackwalker_ppc.h", + "src/processor/stackwalker_ppc64.cc", + "src/processor/stackwalker_ppc64.h", + "src/processor/stackwalker_sparc.cc", + "src/processor/stackwalker_sparc.h", + "src/processor/stackwalker_x86.cc", + "src/processor/stackwalker_x86.h", + "src/processor/tokenize.cc", + "src/processor/tokenize.h", + + # libdisasm + "src/third_party/libdisasm/ia32_implicit.c", + "src/third_party/libdisasm/ia32_implicit.h", + "src/third_party/libdisasm/ia32_insn.c", + "src/third_party/libdisasm/ia32_insn.h", + "src/third_party/libdisasm/ia32_invariant.c", + "src/third_party/libdisasm/ia32_invariant.h", + "src/third_party/libdisasm/ia32_modrm.c", + "src/third_party/libdisasm/ia32_modrm.h", + "src/third_party/libdisasm/ia32_opcode_tables.c", + "src/third_party/libdisasm/ia32_opcode_tables.h", + "src/third_party/libdisasm/ia32_operand.c", + "src/third_party/libdisasm/ia32_operand.h", + "src/third_party/libdisasm/ia32_reg.c", + "src/third_party/libdisasm/ia32_reg.h", + "src/third_party/libdisasm/ia32_settings.c", + "src/third_party/libdisasm/ia32_settings.h", + "src/third_party/libdisasm/libdis.h", + "src/third_party/libdisasm/qword.h", + "src/third_party/libdisasm/x86_disasm.c", + "src/third_party/libdisasm/x86_format.c", + "src/third_party/libdisasm/x86_imm.c", + "src/third_party/libdisasm/x86_imm.h", + "src/third_party/libdisasm/x86_insn.c", + "src/third_party/libdisasm/x86_misc.c", + "src/third_party/libdisasm/x86_operand_list.c", + "src/third_party/libdisasm/x86_operand_list.h", + ] + + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] + } + + fuzzer_test("minidump_fuzzer") { + sources = [ + "minidump_fuzzer.cc", + "src/processor/exploitability.cc", + "src/processor/minidump.cc", + "src/processor/minidump_processor.cc", + ] + + deps = [ + ":stackwalk_common", + "//base", + ] + + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + include_dirs = [ "src" ] + dict = "minidump_fuzzer.dict" + + libfuzzer_options = [ + "close_fd_mask=3", + "max_len=128000", + ] + + # Always want these files included regardless of platform. + set_sources_assignment_filter([]) + sources += [ + "src/processor/exploitability_linux.cc", + "src/processor/exploitability_linux.h", + "src/processor/exploitability_win.cc", + "src/processor/exploitability_win.h", + "src/processor/symbolic_constants_win.cc", + "src/processor/symbolic_constants_win.h", + ] + } + + executable("microdump_stackwalk") { + sources = [ + "src/processor/microdump.cc", + "src/processor/microdump_processor.cc", + "src/processor/microdump_stackwalk.cc", + ] + + deps = [ + ":stackwalk_common", + "//build/config:exe_and_shlib_deps", + ] + + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] + } + + executable("minidump_stackwalk") { + sources = [ + "src/processor/exploitability.cc", + "src/processor/minidump.cc", + "src/processor/minidump_processor.cc", + "src/processor/minidump_stackwalk.cc", + ] + + deps = [ + ":stackwalk_common", + "//build/config:exe_and_shlib_deps", + ] + + defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ ":tools_config" ] + + # Always want these files included regardless of platform. + set_sources_assignment_filter([]) + sources += [ + "src/processor/exploitability_linux.cc", + "src/processor/exploitability_linux.h", + "src/processor/exploitability_win.cc", + "src/processor/exploitability_win.h", + "src/processor/symbolic_constants_win.cc", + "src/processor/symbolic_constants_win.h", + ] + } + + executable("minidump_dump") { + set_sources_assignment_filter([]) + sources = [ + "src/processor/basic_code_module.h", + "src/processor/basic_code_modules.cc", + "src/processor/basic_code_modules.h", + "src/processor/dump_context.cc", + "src/processor/dump_object.cc", + "src/processor/logging.cc", + "src/processor/logging.h", + "src/processor/minidump.cc", + "src/processor/minidump_dump.cc", + "src/processor/pathname_stripper.cc", + "src/processor/pathname_stripper.h", + "src/processor/proc_maps_linux.cc", + ] + + configs += [ ":tools_config" ] + + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + deps = [ + "//build/config:exe_and_shlib_deps", + ] + } + } else { + # Aliases for convenience. + binary_symlink("microdump_stackwalk") { + binary_label = ":$target_name($host_toolchain)" + } + binary_symlink("minidump_stackwalk") { + binary_label = ":$target_name($host_toolchain)" + } + binary_symlink("minidump_dump") { + binary_label = ":$target_name($host_toolchain)" + } + } +} + +# Mac -------------------------------------------------------------------------- + +if (is_mac) { + if (current_toolchain == host_toolchain) { + # TODO(GYP) This should be only 64-bit on Mac. From .gypi: + # Like ld, dump_syms needs to operate on enough data that it may + # actually need to be able to address more than 4GB. Use x86_64. + # Don't worry! An x86_64 dump_syms is perfectly able to dump + # 32-bit files. + executable("dump_syms") { + sources = [ + "src/common/dwarf/bytereader.cc", + "src/common/dwarf/dwarf2diehandler.cc", + "src/common/dwarf/dwarf2reader.cc", + "src/common/dwarf/elf_reader.cc", + "src/common/dwarf/elf_reader.h", + "src/common/dwarf_cfi_to_module.cc", + "src/common/dwarf_cu_to_module.cc", + "src/common/dwarf_line_to_module.cc", + "src/common/language.cc", + "src/common/mac/arch_utilities.cc", + "src/common/mac/arch_utilities.h", + "src/common/mac/dump_syms.cc", + "src/common/mac/file_id.cc", + "src/common/mac/macho_id.cc", + "src/common/mac/macho_reader.cc", + "src/common/mac/macho_utilities.cc", + "src/common/mac/macho_walker.cc", + "src/common/md5.cc", + "src/common/module.cc", + "src/common/stabs_reader.cc", + "src/common/stabs_to_module.cc", + "src/tools/mac/dump_syms/dump_syms_tool.cc", + ] + + # For src/common/stabs_reader.h. + defines = [ "HAVE_MACH_O_NLIST_H" ] + include_dirs = [ "src/common/mac" ] + + # The DWARF utilities require -funsigned-char. + cflags = [ "-funsigned-char" ] + + configs += [ ":internal_config" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + # dwarf2reader.cc uses dynamic_cast. + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] + + libs = [ "Foundation.framework" ] + + if (!is_debug) { + # dump_syms crashes when built at -O1, -O2, and -O3. It does + # not crash at -Os. To play it safe, dump_syms is always built + # at -O0 until this can be sorted out. + # http://code.google.com/p/google-breakpad/issues/detail?id=329 + configs -= [ "//build/config/compiler:default_optimization" ] + cflags += [ "-O0" ] + } + + deps = [ + "//build/config:exe_and_shlib_deps", + ] + } + + executable("symupload") { + sources = [ + "src/common/mac/HTTPMultipartUpload.m", + "src/tools/mac/symupload/symupload.m", + ] + + include_dirs = [ "src/common/mac" ] + + libs = [ "Foundation.framework" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + deps = [ + "//build/config:exe_and_shlib_deps", + ] + } + } else { + binary_symlink("dump_syms") { + binary_label = ":$target_name($host_toolchain)" + } + binary_symlink("symupload") { + binary_label = ":$target_name($host_toolchain)" + } + } +} + +if (is_ios) { + binary_symlink("dump_syms") { + binary_label = ":$target_name($host_toolchain)" + } + binary_symlink("symupload") { + binary_label = ":$target_name($host_toolchain)" + } +} + +if (is_mac) { + static_library("utilities") { + sources = [ + "src/client/mac/crash_generation/ConfigFile.mm", + "src/client/mac/handler/breakpad_nlist_64.cc", + "src/client/mac/handler/dynamic_images.cc", + "src/client/mac/handler/minidump_generator.cc", + "src/client/minidump_file_writer.cc", + "src/common/convert_UTF.c", + "src/common/mac/MachIPC.mm", + "src/common/mac/arch_utilities.cc", + "src/common/mac/bootstrap_compat.cc", + "src/common/mac/file_id.cc", + "src/common/mac/launch_reporter.cc", + "src/common/mac/macho_id.cc", + "src/common/mac/macho_utilities.cc", + "src/common/mac/macho_walker.cc", + "src/common/mac/string_utilities.cc", + "src/common/md5.cc", + "src/common/simple_string_dictionary.cc", + "src/common/string_conversion.cc", + ] + + configs += [ ":internal_config" ] + + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + } + + executable("crash_inspector") { + sources = [ + "src/client/mac/crash_generation/Inspector.mm", + "src/client/mac/crash_generation/InspectorMain.mm", + ] + + # TODO(GYP): 'mac_real_dsym': 1, + + include_dirs = [ + "src/client/apple/Framework", + "src/common/mac", + "src", + ] + libs = [ + "CoreServices.framework", + "Foundation.framework", + ] + + deps = [ + ":utilities", + "//build/config:exe_and_shlib_deps", + ] + } + + # TODO(GYP) this target has some mac_bundle_resources stuff. + # executable("crash_report_sender") { + # } + group("crash_report_sender") { + } + + config("breakpad_config") { + include_dirs = [ "src/client/apple/Framework" ] + } + + static_library("breakpad") { + sources = [ + "src/client/mac/Framework/Breakpad.mm", + "src/client/mac/Framework/OnDemandServer.mm", + "src/client/mac/crash_generation/crash_generation_client.cc", + "src/client/mac/crash_generation/crash_generation_client.h", + "src/client/mac/handler/exception_handler.cc", + "src/client/mac/handler/protected_memory_allocator.cc", + ] + + configs += [ ":internal_config" ] + public_configs = [ ":breakpad_config" ] + + defines = [ "USE_PROTECTED_ALLOCATIONS=1" ] + include_dirs = [ "src/client/apple/Framework" ] + + deps = [ + ":crash_inspector", + ":crash_report_sender", + ":utilities", + ] + } + + group("client") { + public_configs = [ ":client_config" ] + } +} + +if (is_linux || is_android) { + if (current_toolchain == host_toolchain) { + executable("symupload") { + sources = [ + "src/common/linux/http_upload.cc", + "src/common/linux/http_upload.h", + "src/common/linux/symbol_upload.cc", + "src/common/linux/symbol_upload.h", + "src/tools/linux/symupload/sym_upload.cc", + ] + + include_dirs = [ + "src", + "src/third_party", + ] + + configs += [ ":tools_config" ] + + libs = [ "dl" ] + + deps = [ + "//build/config:exe_and_shlib_deps", + ] + } + + # dump_syms is a host tool, so only compile it for the host system. + executable("dump_syms") { + sources = [ + "src/common/dwarf/bytereader.cc", + "src/common/dwarf/dwarf2diehandler.cc", + "src/common/dwarf/dwarf2reader.cc", + "src/common/dwarf/elf_reader.cc", + "src/common/dwarf/elf_reader.h", + "src/common/dwarf_cfi_to_module.cc", + "src/common/dwarf_cfi_to_module.h", + "src/common/dwarf_cu_to_module.cc", + "src/common/dwarf_cu_to_module.h", + "src/common/dwarf_line_to_module.cc", + "src/common/dwarf_line_to_module.h", + "src/common/language.cc", + "src/common/language.h", + "src/common/linux/crc32.cc", + "src/common/linux/crc32.h", + "src/common/linux/dump_symbols.cc", + "src/common/linux/dump_symbols.h", + "src/common/linux/elf_symbols_to_module.cc", + "src/common/linux/elf_symbols_to_module.h", + "src/common/linux/elfutils.cc", + "src/common/linux/elfutils.h", + "src/common/linux/file_id.cc", + "src/common/linux/file_id.h", + "src/common/linux/guid_creator.h", + "src/common/linux/linux_libc_support.cc", + "src/common/linux/linux_libc_support.h", + "src/common/linux/memory_mapped_file.cc", + "src/common/linux/memory_mapped_file.h", + "src/common/module.cc", + "src/common/module.h", + "src/common/stabs_reader.cc", + "src/common/stabs_reader.h", + "src/common/stabs_to_module.cc", + "src/common/stabs_to_module.h", + "src/tools/linux/dump_syms/dump_syms.cc", + ] + + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + + # dwarf2reader.cc uses dynamic_cast. Because we don't typically + # don't support RTTI, we enable it for this single target. Since + # dump_syms doesn't share any object files with anything else, + # this doesn't end up polluting Chrome itself. + configs -= [ "//build/config/compiler:no_rtti" ] + configs += [ "//build/config/compiler:rtti" ] + + # Breakpad rev 583 introduced this flag. + # Using this define, stabs_reader.h will include a.out.h to + # build on Linux. + defines = [ "HAVE_A_OUT_H" ] + + include_dirs = [ "src" ] + + deps = [ + "//build/config:exe_and_shlib_deps", + ] + } + } else { + # Aliases for convenience. + binary_symlink("dump_syms") { + binary_label = ":dump_syms($host_toolchain)" + } + binary_symlink("symupload") { + binary_label = ":symupload($host_toolchain)" + } + } + + static_library("client") { + # Want all these sources for both Linux and Android. + set_sources_assignment_filter([]) + sources = [ + "src/client/linux/crash_generation/crash_generation_client.cc", + "src/client/linux/crash_generation/crash_generation_client.h", + "src/client/linux/dump_writer_common/mapping_info.h", + "src/client/linux/dump_writer_common/thread_info.cc", + "src/client/linux/dump_writer_common/thread_info.h", + "src/client/linux/dump_writer_common/ucontext_reader.cc", + "src/client/linux/dump_writer_common/ucontext_reader.h", + "src/client/linux/handler/exception_handler.cc", + "src/client/linux/handler/exception_handler.h", + "src/client/linux/handler/minidump_descriptor.cc", + "src/client/linux/handler/minidump_descriptor.h", + "src/client/linux/log/log.cc", + "src/client/linux/log/log.h", + "src/client/linux/microdump_writer/microdump_writer.cc", + "src/client/linux/microdump_writer/microdump_writer.h", + "src/client/linux/minidump_writer/cpu_set.h", + "src/client/linux/minidump_writer/directory_reader.h", + "src/client/linux/minidump_writer/line_reader.h", + "src/client/linux/minidump_writer/linux_core_dumper.cc", + "src/client/linux/minidump_writer/linux_core_dumper.h", + "src/client/linux/minidump_writer/linux_dumper.cc", + "src/client/linux/minidump_writer/linux_dumper.h", + "src/client/linux/minidump_writer/linux_ptrace_dumper.cc", + "src/client/linux/minidump_writer/linux_ptrace_dumper.h", + "src/client/linux/minidump_writer/minidump_writer.cc", + "src/client/linux/minidump_writer/minidump_writer.h", + "src/client/linux/minidump_writer/proc_cpuinfo_reader.h", + "src/client/minidump_file_writer-inl.h", + "src/client/minidump_file_writer.cc", + "src/client/minidump_file_writer.h", + "src/common/convert_UTF.c", + "src/common/convert_UTF.h", + "src/common/linux/elf_core_dump.cc", + "src/common/linux/elf_core_dump.h", + "src/common/linux/elfutils.cc", + "src/common/linux/elfutils.h", + "src/common/linux/file_id.cc", + "src/common/linux/file_id.h", + "src/common/linux/google_crashdump_uploader.cc", + "src/common/linux/google_crashdump_uploader.h", + "src/common/linux/guid_creator.cc", + "src/common/linux/guid_creator.h", + "src/common/linux/libcurl_wrapper.cc", + "src/common/linux/libcurl_wrapper.h", + "src/common/linux/linux_libc_support.cc", + "src/common/linux/linux_libc_support.h", + "src/common/linux/memory_mapped_file.cc", + "src/common/linux/memory_mapped_file.h", + "src/common/linux/safe_readlink.cc", + "src/common/linux/safe_readlink.h", + "src/common/memory.h", + "src/common/simple_string_dictionary.cc", + "src/common/simple_string_dictionary.h", + "src/common/string_conversion.cc", + "src/common/string_conversion.h", + ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + public_configs = [ ":client_config" ] + + if (current_cpu == "arm" && is_chromeos) { + # Avoid running out of registers in + # linux_syscall_support.h:sys_clone()'s inline assembly. + cflags = [ "-marm" ] + } + + # Clang's -mstackrealign doesn't work well with + # linux_syscall_support.h hand written asm syscalls. + # See https://crbug.com/556393 + configs -= [ "//build/config/compiler:clang_stackrealign" ] + + if (is_android) { + sources += [ "src/common/android/breakpad_getcontext.S" ] + } + + libs = [ "dl" ] + + include_dirs = [ + ".", + "src", + "src/client", + "src/third_party/linux/include", + ] + } + + static_library("processor_support") { + set_sources_assignment_filter([]) + sources = [ + "src/common/scoped_ptr.h", + "src/processor/basic_code_modules.cc", + "src/processor/basic_code_modules.h", + "src/processor/dump_context.cc", + "src/processor/dump_object.cc", + "src/processor/logging.cc", + "src/processor/logging.h", + "src/processor/minidump.cc", + "src/processor/pathname_stripper.cc", + "src/processor/pathname_stripper.h", + "src/processor/proc_maps_linux.cc", + ] + + include_dirs = [ + "src", + "src/client", + "src/third_party/linux/include", + ".", + ] + + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + } + + test("breakpad_unittests") { + set_sources_assignment_filter([]) + sources = [ + "linux/breakpad_googletest_includes.h", + "src/client/linux/handler/exception_handler_unittest.cc", + "src/client/linux/minidump_writer/cpu_set_unittest.cc", + "src/client/linux/minidump_writer/directory_reader_unittest.cc", + "src/client/linux/minidump_writer/line_reader_unittest.cc", + "src/client/linux/minidump_writer/linux_core_dumper_unittest.cc", + "src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc", + "src/client/linux/minidump_writer/minidump_writer_unittest.cc", + "src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc", + "src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc", + "src/common/linux/elf_core_dump_unittest.cc", + "src/common/linux/file_id_unittest.cc", + "src/common/linux/linux_libc_support_unittest.cc", + "src/common/linux/synth_elf.cc", + "src/common/linux/tests/auto_testfile.h", + "src/common/linux/tests/crash_generator.cc", + "src/common/linux/tests/crash_generator.h", + "src/common/memory_range.h", + "src/common/memory_unittest.cc", + "src/common/simple_string_dictionary_unittest.cc", + "src/common/test_assembler.cc", + "src/common/tests/file_utils.cc", + "src/common/tests/file_utils.h", + "src/tools/linux/md2core/minidump_memory_range.h", + "src/tools/linux/md2core/minidump_memory_range_unittest.cc", + ] + + deps = [ + ":client", + ":linux_dumper_unittest_helper", + ":processor_support", + "//build/config:exe_and_shlib_deps", + "//testing/gmock", + "//testing/gtest", + "//testing/gtest:gtest_main", + ] + + include_dirs = [ + "linux", # Use our copy of breakpad_googletest_includes.h + ".", + ] + + # There are some warnings in this code. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ + ":client_config", + "//build/config/compiler:no_chromium_code", + ] + + if (is_clang) { + # See http://crbug.com/138571#c18 + cflags = [ "-Wno-unused-value" ] + } + + if (is_android) { + use_raw_android_executable = true + sources += [ "src/common/android/breakpad_getcontext_unittest.cc" ] + libs = [ "log" ] + extra_dist_files = [ "$root_out_dir/linux_dumper_unittest_helper" ] + } + + # Clang's -mstackrealign doesn't work well with + # linux_syscall_support.h hand written asm syscalls. + # See https://crbug.com/556393 + configs -= [ "//build/config/compiler:clang_stackrealign" ] + + # Add the breakpad unittest config at the end to override all configs. + configs += [ ":breakpad_unittest_config" ] + } + + executable("linux_dumper_unittest_helper") { + set_sources_assignment_filter([]) + testonly = true + sources = [ + "src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc", + ] + deps = [ + ":processor_support", + "//build/config:exe_and_shlib_deps", + ] + + configs += [ ":client_config" ] + + if (is_component_build) { + ldflags = [ + "-Wl,-rpath,", + rebase_path(root_build_dir), + ] + } + } + + executable("generate_test_dump") { + set_sources_assignment_filter([]) + testonly = true + sources = [ + "linux/generate-test-dump.cc", + ] + + # This file has an unused variable warning. + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ + ":client_config", + "//build/config/compiler:no_chromium_code", + ] + + deps = [ + ":client", + "//build/config:exe_and_shlib_deps", + ] + + if (is_android) { + libs = [ "log" ] + } + } + + executable("minidump-2-core") { + set_sources_assignment_filter([]) + sources = [ + "src/tools/linux/md2core/minidump-2-core.cc", + ] + + include_dirs = [ "src" ] + + deps = [ + ":client", + "//build/config:exe_and_shlib_deps", + ] + } + + executable("core-2-minidump") { + set_sources_assignment_filter([]) + sources = [ + "src/tools/linux/core2md/core2md.cc", + ] + + deps = [ + ":client", + "//build/config:exe_and_shlib_deps", + ] + + include_dirs = [ "src" ] + } +} + +if (is_win) { + executable("dump_syms") { + # TODO(scottmg) using this with VS2015 may break the crash server. + # https://crbug.com/696671 + include_dirs = [ + "$visual_studio_path/DIA SDK/include", + "src", + ] + + sources = [ + "src/common/windows/dia_util.cc", + "src/common/windows/dia_util.h", + "src/common/windows/guid_string.cc", + "src/common/windows/guid_string.h", + "src/common/windows/omap.cc", + "src/common/windows/omap.h", + "src/common/windows/pdb_source_line_writer.cc", + "src/common/windows/pdb_source_line_writer.h", + "src/common/windows/string_utils-inl.h", + "src/common/windows/string_utils.cc", + "src/tools/windows/dump_syms/dump_syms.cc", + ] + + lib_dirs = [] + if (target_cpu == "x64") { + lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] + } else { + lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] + } + + libs = [ + "diaguids.lib", + "imagehlp.lib", + ] + if (is_clang) { + # clang complains about microsoft-specific goto extensions. Instead of + # rewriting decade-old, goto-ridden code, disable the warning. + cflags = [ "-Wno-microsoft-goto" ] + } + } +} + +if (is_ios) { + static_library("client") { + set_sources_assignment_filter([]) + sources = [ + "src/client/ios/Breakpad.h", + "src/client/ios/Breakpad.mm", + "src/client/ios/BreakpadController.h", + "src/client/ios/BreakpadController.mm", + "src/client/ios/handler/ios_exception_minidump_generator.h", + "src/client/ios/handler/ios_exception_minidump_generator.mm", + "src/client/mac/crash_generation/ConfigFile.h", + "src/client/mac/crash_generation/ConfigFile.mm", + "src/client/mac/handler/breakpad_nlist_64.cc", + "src/client/mac/handler/breakpad_nlist_64.h", + "src/client/mac/handler/dynamic_images.cc", + "src/client/mac/handler/dynamic_images.h", + "src/client/mac/handler/exception_handler.cc", + "src/client/mac/handler/exception_handler.h", + "src/client/mac/handler/minidump_generator.cc", + "src/client/mac/handler/minidump_generator.h", + "src/client/mac/handler/protected_memory_allocator.cc", + "src/client/mac/handler/protected_memory_allocator.h", + "src/client/mac/sender/uploader.h", + "src/client/mac/sender/uploader.mm", + "src/client/minidump_file_writer-inl.h", + "src/client/minidump_file_writer.cc", + "src/client/minidump_file_writer.h", + "src/common/convert_UTF.c", + "src/common/convert_UTF.h", + "src/common/mac/HTTPMultipartUpload.m", + "src/common/mac/file_id.cc", + "src/common/mac/file_id.h", + "src/common/mac/macho_id.cc", + "src/common/mac/macho_id.h", + "src/common/mac/macho_utilities.cc", + "src/common/mac/macho_utilities.h", + "src/common/mac/macho_walker.cc", + "src/common/mac/macho_walker.h", + "src/common/mac/string_utilities.cc", + "src/common/mac/string_utilities.h", + "src/common/md5.cc", + "src/common/md5.h", + "src/common/simple_string_dictionary.cc", + "src/common/simple_string_dictionary.h", + "src/common/string_conversion.cc", + "src/common/string_conversion.h", + "src/google_breakpad/common/minidump_format.h", + ] + set_sources_assignment_filter(sources_assignment_filter) + + include_dirs = [ + "src", + "src/client/mac/Framework", + "src/common/mac", + ] + + deps = [ + "//third_party/google_toolbox_for_mac", + ] + + public_configs = [ ":client_config" ] + + if (is_clang) { + # See https://bugs.chromium.org/p/google-breakpad/issues/detail?id=675. + cflags = [ "-Wno-deprecated-declarations" ] + } + } + # TODO(GYP) There is some XCode-only targets like ninja-breakpad. +} + +if (is_win) { + group("client") { + public_configs = [ ":client_config" ] + } + + config("breakpad_handler_warnings") { + if (is_clang) { + # See https://code.google.com/p/google-breakpad/issues/detail?id=658. + cflags = [ "-Wno-reorder" ] + } + } + + static_library("breakpad_handler") { + configs += [ ":handler_config" ] + if (is_win) { + public_configs = [ ":handler_config" ] + } + + defines = [ "BREAKPAD_NO_TERMINATE_THREAD" ] + + sources = [ + "src/client/windows/crash_generation/client_info.cc", + "src/client/windows/crash_generation/client_info.h", + "src/client/windows/crash_generation/crash_generation_client.cc", + "src/client/windows/crash_generation/crash_generation_client.h", + "src/client/windows/crash_generation/crash_generation_server.cc", + "src/client/windows/crash_generation/crash_generation_server.h", + "src/client/windows/crash_generation/minidump_generator.cc", + "src/client/windows/crash_generation/minidump_generator.h", + "src/client/windows/handler/exception_handler.cc", + "src/client/windows/handler/exception_handler.h", + "src/common/windows/guid_string.cc", + "src/common/windows/guid_string.h", + "src/common/windows/string_utils-inl.h", + "src/google_breakpad/common/minidump_format.h", + ] + configs += [ ":breakpad_handler_warnings" ] + } + + source_set("breakpad_sender") { + sources = [ + "src/client/windows/sender/crash_report_sender.cc", + "src/client/windows/sender/crash_report_sender.h", + "src/common/windows/http_upload.cc", + "src/common/windows/http_upload.h", + ] + configs += [ ":sender_config" ] + public_configs = [ ":sender_config" ] + } +}
diff --git a/third_party/breakpad/LICENSE b/breakpad/LICENSE similarity index 100% rename from third_party/breakpad/LICENSE rename to breakpad/LICENSE
diff --git a/third_party/breakpad/OWNERS b/breakpad/OWNERS similarity index 100% rename from third_party/breakpad/OWNERS rename to breakpad/OWNERS
diff --git a/breakpad/README.chromium b/breakpad/README.chromium new file mode 100644 index 0000000..bab0a12 --- /dev/null +++ b/breakpad/README.chromium
@@ -0,0 +1,12 @@ +Name: Breakpad, An open-source multi-platform crash reporting system +Short Name: breakpad +URL: https://chromium.googlesource.com/breakpad/breakpad +License: New BSD, Apple PSL 2.0 and Apache 2.0 +Security Critical: no + +This directory contains Chrome's version of Breakpad's Visual Studio build +files (*.vcproj) and a compiled version of Breakpad's symupload.exe utility +for Windows. + +Part of the upstream Breakpad project is pulled into the src/ subdirectory via +DEPS.
diff --git a/third_party/breakpad/linux/breakpad_googletest_includes.h b/breakpad/linux/breakpad_googletest_includes.h similarity index 99% rename from third_party/breakpad/linux/breakpad_googletest_includes.h rename to breakpad/linux/breakpad_googletest_includes.h index ae55dffeb..aeab3156 100644 --- a/third_party/breakpad/linux/breakpad_googletest_includes.h +++ b/breakpad/linux/breakpad_googletest_includes.h
@@ -30,7 +30,7 @@ #ifndef BREAKPAD_GOOGLETEST_INCLUDES_H__ #define BREAKPAD_GOOGLETEST_INCLUDES_H__ -#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +#include "testing/gmock/include/gmock/gmock.h" #endif // BREAKPAD_GOOGLETEST_INCLUDES_H__
diff --git a/third_party/breakpad/linux/generate-test-dump.cc b/breakpad/linux/generate-test-dump.cc similarity index 90% rename from third_party/breakpad/linux/generate-test-dump.cc rename to breakpad/linux/generate-test-dump.cc index a23af38..b0dca00 100644 --- a/third_party/breakpad/linux/generate-test-dump.cc +++ b/breakpad/linux/generate-test-dump.cc
@@ -33,13 +33,12 @@ #include <unistd.h> -#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h" -#include "third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h" +#include "breakpad/src/client/linux/handler/exception_handler.h" +#include "breakpad/src/common/linux/linux_libc_support.h" #include "third_party/lss/linux_syscall_support.h" static bool DumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, - void* context, - bool success) { + void* context, bool success) { if (!success) { static const char msg[] = "Failed to write minidump\n"; sys_write(2, msg, sizeof(msg) - 1);
diff --git a/third_party/breakpad/minidump_fuzzer.cc b/breakpad/minidump_fuzzer.cc similarity index 99% rename from third_party/breakpad/minidump_fuzzer.cc rename to breakpad/minidump_fuzzer.cc index 0854af7..8af4532 100644 --- a/third_party/breakpad/minidump_fuzzer.cc +++ b/breakpad/minidump_fuzzer.cc
@@ -6,9 +6,9 @@ #include <stdint.h> #include <string.h> +#include <streambuf> #include <istream> #include <memory> -#include <streambuf> #include "base/memory/free_deleter.h" #include "google_breakpad/processor/basic_source_line_resolver.h"
diff --git a/third_party/breakpad/minidump_fuzzer.dict b/breakpad/minidump_fuzzer.dict similarity index 100% rename from third_party/breakpad/minidump_fuzzer.dict rename to breakpad/minidump_fuzzer.dict
diff --git a/third_party/breakpad/symupload.exe b/breakpad/symupload.exe similarity index 100% rename from third_party/breakpad/symupload.exe rename to breakpad/symupload.exe Binary files differ
diff --git a/third_party/breakpad/using_breakpad.vsprops b/breakpad/using_breakpad.vsprops similarity index 68% rename from third_party/breakpad/using_breakpad.vsprops rename to breakpad/using_breakpad.vsprops index cb3bb42..7d7ab92 100644 --- a/third_party/breakpad/using_breakpad.vsprops +++ b/breakpad/using_breakpad.vsprops
@@ -6,6 +6,6 @@ > <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=""$(SolutionDir)..\third_party\breakpad\breakpad\src"" + AdditionalIncludeDirectories=""$(SolutionDir)..\breakpad\src"" /> </VisualStudioPropertySheet>
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index c828018..cf36e40 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -199,6 +199,8 @@ ":file_pre_reader", ":visual_elements_resources", "//base", + "//breakpad:breakpad_handler", + "//breakpad:breakpad_sender", "//chrome/app/version_assembly:chrome_exe_manifest", "//chrome/browser:active_use_util", "//chrome/browser:chrome_process_finder", @@ -217,8 +219,6 @@ "//crypto", "//gpu/config:crash_keys", "//sandbox", - "//third_party/breakpad:breakpad_handler", - "//third_party/breakpad:breakpad_sender", ] data_deps = [ "//chrome/app/version_assembly:version_assembly_manifest", @@ -1366,8 +1366,8 @@ ":chrome_app", ":chrome_framework", ":chrome_helper_app", + "//breakpad:dump_syms", "//chrome/browser/ui/cocoa/notifications:alert_notification_xpc_service", - "//third_party/breakpad:dump_syms", "//third_party/crashpad/crashpad/handler:crashpad_handler", ] } @@ -1821,7 +1821,7 @@ action("linux_symbols") { script = "//build/linux/dump_app_syms.py" - dump_syms_label = "//third_party/breakpad:dump_syms($host_toolchain)" + dump_syms_label = "//breakpad:dump_syms($host_toolchain)" dump_syms_binary = get_label_info(dump_syms_label, "root_out_dir") + "/" + "dump_syms"
diff --git a/chrome/app/DEPS b/chrome/app/DEPS index 5ab2f4c..7e271d87 100644 --- a/chrome/app/DEPS +++ b/chrome/app/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+breakpad", "+chrome/browser", "+chrome/child", "+chrome/chrome_watcher", @@ -37,6 +38,5 @@ "+sandbox", "+services/service_manager", "+services/ui/public", - "+third_party/breakpad/breakpad", "+third_party/crashpad/crashpad", ]
diff --git a/chrome/app/chrome_binaries.vsprops b/chrome/app/chrome_binaries.vsprops index 8c4d981..7975c32 100644 --- a/chrome/app/chrome_binaries.vsprops +++ b/chrome/app/chrome_binaries.vsprops
@@ -3,7 +3,7 @@ ProjectType="Visual C++" Version="8.00" Name="chrome_binaries" - InheritedPropertySheets="$(SolutionDir)..\third_party\ffmpeg\using_ffmpeg.vsprops;$(SolutionDir)..\third_party\breakpad\using_breakpad.vsprops;$(SolutionDir)..\third_party\libxml\build\using_libxml.vsprops;$(SolutionDir)..\third_party\libxslt\build\using_libxslt.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\third_party\libpng\using_libpng.vsprops;$(SolutionDir)..\tools\grit\build\using_generated_resources.vsprops;$(SolutionDir)third_party\wtl\using_wtl.vsprops" + InheritedPropertySheets="$(SolutionDir)..\third_party\ffmpeg\using_ffmpeg.vsprops;$(SolutionDir)..\breakpad\using_breakpad.vsprops;$(SolutionDir)..\third_party\libxml\build\using_libxml.vsprops;$(SolutionDir)..\third_party\libxslt\build\using_libxslt.vsprops;$(SolutionDir)..\skia\using_skia.vsprops;$(SolutionDir)..\third_party\libpng\using_libpng.vsprops;$(SolutionDir)..\tools\grit\build\using_generated_resources.vsprops;$(SolutionDir)third_party\wtl\using_wtl.vsprops" > <Tool Name="VCLinkerTool"
diff --git a/chrome/app/chrome_exe.vsprops b/chrome/app/chrome_exe.vsprops index 95b044a1..e42799c 100644 --- a/chrome/app/chrome_exe.vsprops +++ b/chrome/app/chrome_exe.vsprops
@@ -3,7 +3,7 @@ ProjectType="Visual C++" Version="8.00" Name="chrome_exe" - InheritedPropertySheets="$(SolutionDir)..\third_party\breakpad\using_breakpad.vsprops" + InheritedPropertySheets="$(SolutionDir)..\breakpad\using_breakpad.vsprops" > <Tool Name="VCCLCompilerTool"
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 7c9941b..9a51466 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -2020,7 +2020,10 @@ <message name="IDS_SETTINGS_SITE_SETTINGS_DESCRIPTION" desc="Secondary, continued explanation of what content settings in Chrome do"> Control what information websites can use and what content they can show you </message> - <message name="IDS_SETTINGS_CLEAR_DATA" desc="Text for clear browsing data button in Privacy options"> + <message name="IDS_SETTINGS_CLEAR_DATA" desc="Text for clear browsing data button in Privacy options in the tabbed UI"> + Clear data + </message> + <message name="IDS_SETTINGS_CLEAR_BROWSING_DATA" desc="Text for clear browsing data button in Privacy options"> Clear browsing data </message> <message name="IDS_SETTINGS_CLEAR_DATA_DESCRIPTION" desc="Description for clear browsing data button in Privacy options. 'History' refers to browsing history. 'Cookies' refers to the technical meaning of a cookie, i.e. data saved by a website on the user's computer, as in when a website saves your preferences.">
diff --git a/chrome/browser/extensions/api/sync_file_system/sync_file_system_browsertest.cc b/chrome/browser/extensions/api/sync_file_system/sync_file_system_browsertest.cc index 4a19a726..34c2ace 100644 --- a/chrome/browser/extensions/api/sync_file_system/sync_file_system_browsertest.cc +++ b/chrome/browser/extensions/api/sync_file_system/sync_file_system_browsertest.cc
@@ -25,7 +25,8 @@ #include "extensions/test/extension_test_message_listener.h" #include "extensions/test/result_catcher.h" #include "storage/browser/quota/quota_manager.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { @@ -70,7 +71,7 @@ } void SetUpOnMainThread() override { - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); extensions::PlatformAppBrowserTest::SetUpOnMainThread(); ASSERT_TRUE(base_dir_.CreateUniqueTempDir());
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_tabs.html b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_tabs.html index c16364b..da0d5aee 100644 --- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_tabs.html +++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog_tabs.html
@@ -47,6 +47,10 @@ color: var(--paper-grey-600); } + #clearBrowsingDataDialog [slot=body] { + padding-top: 8px; + } + #importantSitesDialog { --cr-dialog-body-container: { height: var(--body-container-height); @@ -78,14 +82,25 @@ } paper-tabs { + --paper-tabs-selection-bar-color: var(--google-blue-500); --paper-tabs: { font-size: 100%; height: 40px; } } + paper-tab { + --paper-tab-content: { + color: var(--google-blue-700); + }; + --paper-tab-content-unselected: { + opacity: 1; + color: var(--paper-grey-600); + }; + } + .time-range-row { - margin-bottom: 4px; + margin-bottom: 12px; } .time-range-select { @@ -241,7 +256,7 @@ <paper-button id="clearBrowsingDataConfirm" class="action-button" disabled="[[clearingInProgress_]]" on-tap="onClearBrowsingDataTap_"> - $i18n{clearBrowsingData} + $i18n{clearData} </paper-button> </div> </dialog>
diff --git a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc index 29e314d35..dac3951 100644 --- a/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc +++ b/chrome/browser/signin/mutable_profile_oauth2_token_service_delegate.cc
@@ -339,7 +339,6 @@ } else { load_credentials_state_ = LOAD_CREDENTIALS_FINISHED_WITH_UNKNOWN_ERRORS; } - FireRefreshTokensLoaded(); // Make sure that we have an entry for |loading_primary_account_id_| in the // map. The entry could be missing if there is a corruption in the token DB @@ -363,6 +362,7 @@ } loading_primary_account_id_.clear(); + FireRefreshTokensLoaded(); } void MutableProfileOAuth2TokenServiceDelegate::LoadAllCredentialsIntoMemory(
diff --git a/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc b/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc index ce086beb..b41fd655 100644 --- a/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc
@@ -34,7 +34,8 @@ #include "google_apis/drive/drive_api_error_codes.h" #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -58,7 +59,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<FakeDriveServiceWrapper> fake_drive_service( new FakeDriveServiceWrapper);
diff --git a/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc b/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc index 4f9cd13..e802f2cd 100644 --- a/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/drive_backend_sync_unittest.cc
@@ -43,7 +43,8 @@ #include "net/url_request/url_request_context_getter.h" #include "storage/browser/fileapi/file_system_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #define FPL(a) FILE_PATH_LITERAL(a) @@ -86,7 +87,7 @@ void SetUp() override { ASSERT_TRUE(base_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); io_task_runner_ = content::BrowserThread::GetTaskRunnerForThread( content::BrowserThread::IO);
diff --git a/chrome/browser/sync_file_system/drive_backend/leveldb_wrapper_unittest.cc b/chrome/browser/sync_file_system/drive_backend/leveldb_wrapper_unittest.cc index 72dc6f5e..57d6c1e 100644 --- a/chrome/browser/sync_file_system/drive_backend/leveldb_wrapper_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/leveldb_wrapper_unittest.cc
@@ -15,8 +15,9 @@ #include "base/strings/string_number_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -32,7 +33,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); InitializeLevelDB(); }
diff --git a/chrome/browser/sync_file_system/drive_backend/list_changes_task_unittest.cc b/chrome/browser/sync_file_system/drive_backend/list_changes_task_unittest.cc index e85cb3ae..4fa2c2d 100644 --- a/chrome/browser/sync_file_system/drive_backend/list_changes_task_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/list_changes_task_unittest.cc
@@ -24,7 +24,8 @@ #include "content/public/test/test_browser_thread_bundle.h" #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -44,7 +45,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<drive::FakeDriveService> fake_drive_service( new drive::FakeDriveService);
diff --git a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc index 7aeb68f..71a6495 100644 --- a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc
@@ -35,7 +35,8 @@ #include "google_apis/drive/drive_api_error_codes.h" #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -59,7 +60,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<FakeDriveServiceWrapper> fake_drive_service( new FakeDriveServiceWrapper);
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc index 12aa04c..0985d6e 100644 --- a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc
@@ -39,6 +39,7 @@ #include "storage/common/fileapi/file_system_util.h" #include "third_party/leveldatabase/env_chromium.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/status.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc index 432dca6..bab5501b 100644 --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc
@@ -19,8 +19,9 @@ #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/status.h" namespace sync_file_system { @@ -41,7 +42,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); db_ = InitializeLevelDB(); index_ = MetadataDatabaseIndexOnDisk::Create(db_.get()); }
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc index c6e5fff..b086bb5e 100644 --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc
@@ -16,8 +16,9 @@ #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -69,7 +70,7 @@ class MetadataDatabaseIndexTest : public testing::Test { public: void SetUp() override { - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); InitializeLevelDB(); contents_ = CreateTestDatabaseContents();
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc index 54012da..63ed69c5 100644 --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc
@@ -29,8 +29,9 @@ #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" #define FPL(a) FILE_PATH_LITERAL(a) @@ -199,7 +200,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); } void TearDown() override { DropDatabase(); }
diff --git a/chrome/browser/sync_file_system/drive_backend/register_app_task_unittest.cc b/chrome/browser/sync_file_system/drive_backend/register_app_task_unittest.cc index 834d5f5..bf27b24 100644 --- a/chrome/browser/sync_file_system/drive_backend/register_app_task_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/register_app_task_unittest.cc
@@ -32,8 +32,9 @@ #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -51,7 +52,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<drive::FakeDriveService> fake_drive_service( new drive::FakeDriveService);
diff --git a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer_unittest.cc b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer_unittest.cc index 6b50c7c..8b8d4b7b 100644 --- a/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer_unittest.cc
@@ -31,7 +31,8 @@ #include "content/public/test/test_browser_thread_bundle.h" #include "google_apis/drive/drive_api_error_codes.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -55,7 +56,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<drive::FakeDriveService> fake_drive_service( new drive::FakeDriveService);
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc index bbb331f..47902a5 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc
@@ -28,7 +28,8 @@ #include "content/public/test/test_browser_thread_bundle.h" #include "google_apis/drive/drive_api_parser.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -52,7 +53,7 @@ void SetUp() override { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); std::unique_ptr<drive::FakeDriveService> fake_drive_service( new drive::FakeDriveService);
diff --git a/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc b/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc index d6193e14..6b337fc5 100644 --- a/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/sync_worker_unittest.cc
@@ -28,7 +28,8 @@ #include "extensions/common/extension_set.h" #include "extensions/common/value_builder.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace sync_file_system { namespace drive_backend { @@ -105,7 +106,7 @@ void SetUp() override { ASSERT_TRUE(profile_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); extension_service_.reset(new MockExtensionService); std::unique_ptr<drive::DriveServiceInterface> fake_drive_service(
diff --git a/chrome/browser/sync_file_system/local/local_file_change_tracker.cc b/chrome/browser/sync_file_system/local/local_file_change_tracker.cc index b8a8b232..bb777ad 100644 --- a/chrome/browser/sync_file_system/local/local_file_change_tracker.cc +++ b/chrome/browser/sync_file_system/local/local_file_change_tracker.cc
@@ -22,7 +22,9 @@ #include "storage/browser/fileapi/file_system_operation_context.h" #include "storage/common/fileapi/file_system_util.h" #include "third_party/leveldatabase/env_chromium.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" using storage::FileSystemContext;
diff --git a/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc b/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc index 68d0183..90c1a87 100644 --- a/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc +++ b/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc
@@ -25,7 +25,8 @@ #include "storage/browser/quota/quota_manager.h" #include "storage/browser/test/mock_blob_url_request_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using content::MockBlobURLRequestContext; using content::ScopedTextBlob; @@ -39,7 +40,7 @@ public: LocalFileChangeTrackerTest() : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), - in_memory_env_(leveldb_chrome::NewMemEnv(leveldb::Env::Default())), + in_memory_env_(leveldb::NewMemEnv(leveldb::Env::Default())), file_system_(GURL("http://example.com"), in_memory_env_.get(), base::ThreadTaskRunnerHandle::Get().get(),
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_context_unittest.cc b/chrome/browser/sync_file_system/local/local_file_sync_context_unittest.cc index de43b584..6b7b4f25 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_context_unittest.cc +++ b/chrome/browser/sync_file_system/local/local_file_sync_context_unittest.cc
@@ -33,7 +33,8 @@ #include "storage/browser/fileapi/isolated_context.h" #include "storage/browser/test/mock_blob_url_request_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #define FPL FILE_PATH_LITERAL @@ -67,7 +68,7 @@ void SetUp() override { RegisterSyncableFileSystem(); ASSERT_TRUE(dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); ui_task_runner_ = base::ThreadTaskRunnerHandle::Get(); io_task_runner_ = BrowserThread::GetTaskRunnerForThread(BrowserThread::IO);
diff --git a/chrome/browser/sync_file_system/local/local_file_sync_service_unittest.cc b/chrome/browser/sync_file_system/local/local_file_sync_service_unittest.cc index 9a86c4a2..508fec65 100644 --- a/chrome/browser/sync_file_system/local/local_file_sync_service_unittest.cc +++ b/chrome/browser/sync_file_system/local/local_file_sync_service_unittest.cc
@@ -36,7 +36,8 @@ #include "storage/browser/fileapi/file_system_context.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using content::BrowserThread; using storage::FileSystemURL; @@ -113,7 +114,7 @@ void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); file_system_.reset(new CannedSyncableFileSystem( GURL(kOrigin), in_memory_env_.get(),
diff --git a/chrome/browser/sync_file_system/local/syncable_file_operation_runner_unittest.cc b/chrome/browser/sync_file_system/local/syncable_file_operation_runner_unittest.cc index 71d850e9..507e0775 100644 --- a/chrome/browser/sync_file_system/local/syncable_file_operation_runner_unittest.cc +++ b/chrome/browser/sync_file_system/local/syncable_file_operation_runner_unittest.cc
@@ -29,7 +29,8 @@ #include "storage/browser/fileapi/file_system_operation_runner.h" #include "storage/browser/test/mock_blob_url_request_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using storage::FileSystemOperation; using storage::FileSystemURL; @@ -55,7 +56,7 @@ // operations in the tests. SyncableFileOperationRunnerTest() : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), - in_memory_env_(leveldb_chrome::NewMemEnv(leveldb::Env::Default())), + in_memory_env_(leveldb::NewMemEnv(leveldb::Env::Default())), file_system_(GURL("http://example.com"), in_memory_env_.get(), base::ThreadTaskRunnerHandle::Get().get(),
diff --git a/chrome/browser/sync_file_system/local/syncable_file_system_unittest.cc b/chrome/browser/sync_file_system/local/syncable_file_system_unittest.cc index 0c0c5bef..bee39ec 100644 --- a/chrome/browser/sync_file_system/local/syncable_file_system_unittest.cc +++ b/chrome/browser/sync_file_system/local/syncable_file_system_unittest.cc
@@ -22,7 +22,8 @@ #include "storage/common/fileapi/file_system_types.h" #include "storage/common/quota/quota_types.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using content::SandboxFileSystemTestHelper; using storage::FileSystemContext; @@ -37,7 +38,7 @@ class SyncableFileSystemTest : public testing::Test { public: SyncableFileSystemTest() - : in_memory_env_(leveldb_chrome::NewMemEnv(leveldb::Env::Default())), + : in_memory_env_(leveldb::NewMemEnv(leveldb::Env::Default())), file_system_(GURL("http://example.com/"), in_memory_env_.get(), base::ThreadTaskRunnerHandle::Get().get(),
diff --git a/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc b/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc index 756f147c..f00b719e 100644 --- a/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc +++ b/chrome/browser/sync_file_system/sync_file_system_service_unittest.cc
@@ -33,7 +33,8 @@ #include "content/public/test/test_utils.h" #include "storage/browser/fileapi/file_system_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using content::BrowserThread; using storage::FileSystemURL; @@ -131,7 +132,7 @@ : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD) {} void SetUp() override { - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); file_system_.reset(new CannedSyncableFileSystem( GURL(kOrigin), in_memory_env_.get(), BrowserThread::GetTaskRunnerForThread(BrowserThread::IO),
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc index 72d654b..d5e35ee 100644 --- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -1532,7 +1532,8 @@ {"contentSettings", IDS_SETTINGS_CONTENT_SETTINGS}, {"siteSettings", IDS_SETTINGS_SITE_SETTINGS}, {"siteSettingsDescription", IDS_SETTINGS_SITE_SETTINGS_DESCRIPTION}, - {"clearBrowsingData", IDS_SETTINGS_CLEAR_DATA}, + {"clearData", IDS_SETTINGS_CLEAR_DATA}, + {"clearBrowsingData", IDS_SETTINGS_CLEAR_BROWSING_DATA}, {"clearBrowsingDataDescription", IDS_SETTINGS_CLEAR_DATA_DESCRIPTION}, {"titleAndCount", IDS_SETTINGS_TITLE_AND_COUNT}, };
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index f16fd52..352d122 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -209,8 +209,8 @@ "//chrome/app/chrome_crash_reporter_client_mac.mm", ] public_deps += [ + "//breakpad", "//components/crash/content/app", - "//third_party/breakpad", "//third_party/ocmock", ] } @@ -5096,12 +5096,12 @@ ":test_support", "//base/test:run_all_unittests", "//base/test:test_support", + "//breakpad:client", "//chrome/browser", "//chrome/child", "//components/crash/core/common", "//components/flags_ui:switches", "//gpu/config:crash_keys", - "//third_party/breakpad:client", ] } }
diff --git a/chrome_elf/DEPS b/chrome_elf/DEPS index 978ee22..484d1cf 100644 --- a/chrome_elf/DEPS +++ b/chrome_elf/DEPS
@@ -1,11 +1,11 @@ include_rules = [ + "+sandbox", + "+breakpad/src/client", "+chrome/app/chrome_crash_reporter_client_win.h", "+chrome/common/chrome_switches.h", "+chrome/common/chrome_version.h", "+chrome/install_static", + "+third_party/crashpad/crashpad/client/crashpad_client.h", "+components/crash/content/app/crashpad.h", "+components/crash/core/common/crash_keys.h", - "+sandbox", - "+third_party/breakpad/breakpad/src/client", - "+third_party/crashpad/crashpad/client/crashpad_client.h", ]
diff --git a/chromecast/app/BUILD.gn b/chromecast/app/BUILD.gn index 928c715..885334c 100644 --- a/chromecast/app/BUILD.gn +++ b/chromecast/app/BUILD.gn
@@ -50,9 +50,9 @@ if (is_android) { deps += [ + "//breakpad:client", "//chromecast/base:cast_version", "//chromecast/browser:jni_headers", - "//third_party/breakpad:client", ] } }
diff --git a/chromecast/app/android/DEPS b/chromecast/app/android/DEPS index 78006b0..f9e9e330 100644 --- a/chromecast/app/android/DEPS +++ b/chromecast/app/android/DEPS
@@ -1,6 +1,6 @@ include_rules = [ + "+breakpad", "+chromecast/android", "+chromecast/browser/android", "+jni", - "+third_party/breakpad", ]
diff --git a/chromecast/app/android/crash_handler.cc b/chromecast/app/android/crash_handler.cc index 44f75a4..194f0bc 100644 --- a/chromecast/app/android/crash_handler.cc +++ b/chromecast/app/android/crash_handler.cc
@@ -13,14 +13,14 @@ #include "base/files/file_path.h" #include "base/logging.h" #include "base/strings/string_number_conversions.h" +#include "breakpad/src/client/linux/handler/exception_handler.h" +#include "breakpad/src/client/linux/handler/minidump_descriptor.h" #include "chromecast/app/android/cast_crash_reporter_client_android.h" #include "chromecast/base/version.h" #include "components/crash/content/app/breakpad_linux.h" #include "components/crash/content/app/crash_reporter_client.h" #include "content/public/common/content_switches.h" #include "jni/CastCrashHandler_jni.h" -#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h" -#include "third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h" namespace {
diff --git a/chromecast/crash/BUILD.gn b/chromecast/crash/BUILD.gn index 7f40688..e9da31b 100644 --- a/chromecast/crash/BUILD.gn +++ b/chromecast/crash/BUILD.gn
@@ -32,13 +32,13 @@ deps = [ "//base", + "//breakpad:client", "//chromecast/base", "//chromecast/base:cast_version", "//components/crash/core/common", "//components/metrics", "//components/prefs", "//gpu/config:crash_keys", - "//third_party/breakpad:client", ] if (chromecast_branding == "public") { @@ -97,13 +97,13 @@ "//base", "//base/test:run_all_unittests", "//base/test:test_support", + "//breakpad:client", "//chromecast/base:cast_sys_info", "//chromecast/base:test_support", "//components/metrics", "//components/prefs:test_support", "//testing/gmock", "//testing/gtest", - "//third_party/breakpad:client", ] } }
diff --git a/chromecast/crash/DEPS b/chromecast/crash/DEPS index 83894d3..f5bcf98 100644 --- a/chromecast/crash/DEPS +++ b/chromecast/crash/DEPS
@@ -1,5 +1,5 @@ include_rules = [ + "+breakpad", "+components/crash/core/common", "+gpu/config/gpu_crash_keys.h", - "+third_party/breakpad", ]
diff --git a/chromecast/crash/cast_crashdump_uploader.cc b/chromecast/crash/cast_crashdump_uploader.cc index 1454f158..b02eee7e 100644 --- a/chromecast/crash/cast_crashdump_uploader.cc +++ b/chromecast/crash/cast_crashdump_uploader.cc
@@ -10,13 +10,12 @@ #include "base/memory/ptr_util.h" // TODO(slan): Find a replacement for LibcurlWrapper in Chromium to remove the // breakpad dependency. -#include "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h" +#include "breakpad/src/common/linux/libcurl_wrapper.h" namespace chromecast { namespace { -// Keep these in sync with -// //third_party/breakpad/breakpad/src/client/mac/sender/uploader.mm +// Keep these in sync with "//breakpad/src/client/mac/sender/uploader.mm" const char kProdKey[] = "prod"; const char kVerKey[] = "ver"; const char kGuidKey[] = "guid";
diff --git a/chromecast/crash/cast_crashdump_uploader_unittest.cc b/chromecast/crash/cast_crashdump_uploader_unittest.cc index 97f9e402..b9daa80 100644 --- a/chromecast/crash/cast_crashdump_uploader_unittest.cc +++ b/chromecast/crash/cast_crashdump_uploader_unittest.cc
@@ -6,11 +6,11 @@ #include "base/files/file_util.h" #include "base/memory/ptr_util.h" +#include "breakpad/src/common/linux/libcurl_wrapper.h" #include "chromecast/base/scoped_temp_file.h" #include "chromecast/crash/cast_crashdump_uploader.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/breakpad/breakpad/src/common/linux/libcurl_wrapper.h" namespace chromecast { @@ -186,4 +186,4 @@ ASSERT_TRUE(uploader.Upload(nullptr)); } -} // namespace chromecast +} // namespace chromeceast
diff --git a/components/crash/content/DEPS b/components/crash/content/DEPS index ddabec25..9ebc497 100644 --- a/components/crash/content/DEPS +++ b/components/crash/content/DEPS
@@ -1,3 +1,3 @@ include_rules = [ - "+third_party/breakpad", + "+breakpad", ]
diff --git a/components/crash/content/app/BUILD.gn b/components/crash/content/app/BUILD.gn index 8e6bad3..5b68bc7 100644 --- a/components/crash/content/app/BUILD.gn +++ b/components/crash/content/app/BUILD.gn
@@ -15,14 +15,14 @@ "crash_reporter_client.h", ] - include_dirs = [ "../../../../third_party/breakpad/breakpad/src" ] + include_dirs = [ "../../../../breakpad/src" ] deps = [ "//base", ] if (is_win) { - deps += [ "//third_party/breakpad:breakpad_handler" ] + deps += [ "//breakpad:breakpad_handler" ] } } @@ -213,11 +213,11 @@ if (is_win) { deps += [ + "//breakpad:breakpad_handler", "//sandbox", - "//third_party/breakpad:breakpad_handler", ] } else if (is_posix && !is_ios) { - deps += [ "//third_party/breakpad:client" ] + deps += [ "//breakpad:client" ] } } @@ -249,18 +249,18 @@ deps += [ "//base", "//base:base_static", + "//breakpad:client", "//components/crash/core/common", "//content/public/common:result_codes", "//sandbox", - "//third_party/breakpad:client", ] if (is_mac) { - deps += [ "//third_party/breakpad" ] + deps += [ "//breakpad" ] } if (is_win) { - deps += [ "//third_party/breakpad:breakpad_handler" ] + deps += [ "//breakpad:breakpad_handler" ] libs = [ "userenv.lib" ] } } @@ -299,7 +299,7 @@ if (is_win) { deps += [ ":run_as_crashpad_handler", - "//third_party/breakpad:client", + "//breakpad:client", "//third_party/crashpad/crashpad/client:client", "//third_party/crashpad/crashpad/snapshot:snapshot", "//third_party/crashpad/crashpad/util",
diff --git a/components/crash/content/app/breakpad_linux.cc b/components/crash/content/app/breakpad_linux.cc index 1800a7d..2199920 100644 --- a/components/crash/content/app/breakpad_linux.cc +++ b/components/crash/content/app/breakpad_linux.cc
@@ -40,16 +40,16 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/threading/thread_checker.h" +#include "breakpad/src/client/linux/crash_generation/crash_generation_client.h" +#include "breakpad/src/client/linux/handler/exception_handler.h" +#include "breakpad/src/client/linux/minidump_writer/directory_reader.h" +#include "breakpad/src/common/linux/linux_libc_support.h" +#include "breakpad/src/common/memory.h" #include "build/build_config.h" #include "components/crash/content/app/breakpad_linux_impl.h" #include "components/crash/content/app/crash_reporter_client.h" #include "components/crash/core/common/crash_keys.h" #include "content/public/common/content_descriptors.h" -#include "third_party/breakpad/breakpad/src/client/linux/crash_generation/crash_generation_client.h" -#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h" -#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/directory_reader.h" -#include "third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h" -#include "third_party/breakpad/breakpad/src/common/memory.h" #if defined(OS_ANDROID) #include <android/log.h> @@ -192,8 +192,8 @@ } // uint64_t version of my_int_len() from -// third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h. Return -// the length of the given, non-negative integer when expressed in base 10. +// breakpad/src/common/linux/linux_libc_support.h. Return the length of the +// given, non-negative integer when expressed in base 10. unsigned my_uint64_len(uint64_t i) { if (!i) return 1; @@ -208,8 +208,8 @@ } // uint64_t version of my_uitos() from -// third_party/breakpad/breakpad/src/common/linux/linux_libc_support.h. Convert -// a non-negative integer to a string (not null-terminated). +// breakpad/src/common/linux/linux_libc_support.h. Convert a non-negative +// integer to a string (not null-terminated). void my_uint64tos(char* output, uint64_t i, unsigned i_len) { for (unsigned index = i_len; index; --index, i /= 10) output[index - 1] = '0' + (i % 10);
diff --git a/components/crash/content/app/breakpad_linux_impl.h b/components/crash/content/app/breakpad_linux_impl.h index 6b224a9..d4eab16 100644 --- a/components/crash/content/app/breakpad_linux_impl.h +++ b/components/crash/content/app/breakpad_linux_impl.h
@@ -12,8 +12,8 @@ #include <stdint.h> #include <sys/types.h> +#include "breakpad/src/common/simple_string_dictionary.h" #include "components/crash/content/app/breakpad_linux.h" -#include "third_party/breakpad/breakpad/src/common/simple_string_dictionary.h" namespace breakpad {
diff --git a/components/crash/content/app/breakpad_mac.mm b/components/crash/content/app/breakpad_mac.mm index 5ade381..d7ab1ae6 100644 --- a/components/crash/content/app/breakpad_mac.mm +++ b/components/crash/content/app/breakpad_mac.mm
@@ -26,10 +26,10 @@ #include "base/strings/sys_string_conversions.h" #include "base/threading/platform_thread.h" #include "base/threading/thread_restrictions.h" +#import "breakpad/src/client/mac/Framework/Breakpad.h" +#include "breakpad/src/common/simple_string_dictionary.h" #include "components/crash/content/app/crash_reporter_client.h" #include "components/crash/core/common/crash_keys.h" -#import "third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h" -#include "third_party/breakpad/breakpad/src/common/simple_string_dictionary.h" using crash_reporter::GetCrashReporterClient;
diff --git a/components/crash/content/app/breakpad_win.cc b/components/crash/content/app/breakpad_win.cc index d5680a8..0604383e 100644 --- a/components/crash/content/app/breakpad_win.cc +++ b/components/crash/content/app/breakpad_win.cc
@@ -32,6 +32,8 @@ #include "base/strings/utf_string_conversions.h" #include "base/win/pe_image.h" #include "base/win/win_util.h" +#include "breakpad/src/client/windows/common/ipc_protocol.h" +#include "breakpad/src/client/windows/handler/exception_handler.h" #include "components/crash/content/app/crash_keys_win.h" #include "components/crash/content/app/crash_reporter_client.h" #include "components/crash/content/app/hard_error_handler_win.h" @@ -39,8 +41,6 @@ #include "content/public/common/result_codes.h" #include "sandbox/win/src/nt_internals.h" #include "sandbox/win/src/sidestep/preamble_patcher.h" -#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h" -#include "third_party/breakpad/breakpad/src/client/windows/handler/exception_handler.h" #pragma intrinsic(_AddressOfReturnAddress) #pragma intrinsic(_ReturnAddress)
diff --git a/components/crash/content/app/crash_keys_win.cc b/components/crash/content/app/crash_keys_win.cc index 7df7135..c7ea488 100644 --- a/components/crash/content/app/crash_keys_win.cc +++ b/components/crash/content/app/crash_keys_win.cc
@@ -11,8 +11,8 @@ #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" +#include "breakpad/src/client/windows/common/ipc_protocol.h" #include "components/crash/content/app/crash_reporter_client.h" -#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h" namespace breakpad {
diff --git a/components/crash/content/app/crash_keys_win_unittest.cc b/components/crash/content/app/crash_keys_win_unittest.cc index 99da0ab..aebe4535 100644 --- a/components/crash/content/app/crash_keys_win_unittest.cc +++ b/components/crash/content/app/crash_keys_win_unittest.cc
@@ -9,10 +9,10 @@ #include "base/command_line.h" #include "base/files/file_path.h" #include "base/strings/stringprintf.h" +#include "breakpad/src/client/windows/common/ipc_protocol.h" #include "components/crash/content/app/crash_reporter_client.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/breakpad/breakpad/src/client/windows/common/ipc_protocol.h" namespace breakpad {
diff --git a/components/crash/content/app/crash_reporter_client.h b/components/crash/content/app/crash_reporter_client.h index 46ba162..9f69c193 100644 --- a/components/crash/content/app/crash_reporter_client.h +++ b/components/crash/content/app/crash_reporter_client.h
@@ -20,8 +20,8 @@ #if defined(OS_MACOSX) // We don't want to directly include -// third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h here, so we -// repeat the definition of BreakpadRef. +// breakpad/src/client/mac/Framework/Breakpad.h here, so we repeat the +// definition of BreakpadRef. // // On Mac, when compiling without breakpad support, a stub implementation is // compiled in. Not having any includes of the breakpad library allows for
diff --git a/components/crash/content/browser/BUILD.gn b/components/crash/content/browser/BUILD.gn index ecbfce2..94e18cb 100644 --- a/components/crash/content/browser/BUILD.gn +++ b/components/crash/content/browser/BUILD.gn
@@ -18,10 +18,10 @@ deps = [ "//base", + "//breakpad:client", "//components/crash/content/app", "//content/public/browser", "//content/public/common", - "//third_party/breakpad:client", ] if (is_linux || is_android) { @@ -33,16 +33,16 @@ "crash_handler_host_linux.h", ] deps += [ + "//breakpad:client", "//components/crash/content/app:app_non_mac_win", - "//third_party/breakpad:client", ] } # This is not in the GYP build but this target includes breakpad client # headers, so add the dependency here. if (is_posix && !is_ios) { - configs += [ "//third_party/breakpad:client_config" ] - public_configs = [ "//third_party/breakpad:client_config" ] + configs += [ "//breakpad:client_config" ] + public_configs = [ "//breakpad:client_config" ] } if (is_android) {
diff --git a/components/crash/content/browser/crash_handler_host_linux.cc b/components/crash/content/browser/crash_handler_host_linux.cc index f656cf17..c1db248 100644 --- a/components/crash/content/browser/crash_handler_host_linux.cc +++ b/components/crash/content/browser/crash_handler_host_linux.cc
@@ -33,12 +33,12 @@ #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" +#include "breakpad/src/client/linux/handler/exception_handler.h" +#include "breakpad/src/client/linux/minidump_writer/linux_dumper.h" +#include "breakpad/src/client/linux/minidump_writer/minidump_writer.h" #include "build/build_config.h" #include "components/crash/content/app/breakpad_linux_impl.h" #include "content/public/browser/browser_thread.h" -#include "third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h" -#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h" -#include "third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h" #if defined(OS_ANDROID) && !defined(__LP64__) #include <sys/linux-syscalls.h>
diff --git a/components/crash/content/tools/BUILD.gn b/components/crash/content/tools/BUILD.gn index 99010f05..6206020 100644 --- a/components/crash/content/tools/BUILD.gn +++ b/components/crash/content/tools/BUILD.gn
@@ -12,7 +12,7 @@ deps = [ "//base", - "//third_party/breakpad:breakpad_handler", - "//third_party/breakpad:breakpad_sender", + "//breakpad:breakpad_handler", + "//breakpad:breakpad_sender", ] }
diff --git a/components/crash/content/tools/crash_service.cc b/components/crash/content/tools/crash_service.cc index c7a5a79..46b6359 100644 --- a/components/crash/content/tools/crash_service.cc +++ b/components/crash/content/tools/crash_service.cc
@@ -15,9 +15,9 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/macros.h" -#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/client_info.h" -#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/crash_generation_server.h" -#include "third_party/breakpad/breakpad/src/client/windows/sender/crash_report_sender.h" +#include "breakpad/src/client/windows/crash_generation/client_info.h" +#include "breakpad/src/client/windows/crash_generation/crash_generation_server.h" +#include "breakpad/src/client/windows/sender/crash_report_sender.h" namespace breakpad {
diff --git a/components/data_reduction_proxy/core/browser/data_store_impl.cc b/components/data_reduction_proxy/core/browser/data_store_impl.cc index 4b658b3..37b69fe 100644 --- a/components/data_reduction_proxy/core/browser/data_store_impl.cc +++ b/components/data_reduction_proxy/core/browser/data_store_impl.cc
@@ -13,6 +13,7 @@ #include "components/data_reduction_proxy/proto/data_store.pb.h" #include "third_party/leveldatabase/env_chromium.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/options.h" #include "third_party/leveldatabase/src/include/leveldb/status.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
diff --git a/components/leveldb/leveldb_service_impl.cc b/components/leveldb/leveldb_service_impl.cc index d0d63f6f..01295b2 100644 --- a/components/leveldb/leveldb_service_impl.cc +++ b/components/leveldb/leveldb_service_impl.cc
@@ -12,9 +12,9 @@ #include "components/leveldb/leveldb_database_impl.h" #include "components/leveldb/public/cpp/util.h" #include "mojo/public/cpp/bindings/strong_associated_binding.h" -#include "third_party/leveldatabase/leveldb_chrome.h" #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" #include "third_party/leveldatabase/src/include/leveldb/slice.h"
diff --git a/components/leveldb_proto/leveldb_database.cc b/components/leveldb_proto/leveldb_database.cc index d8a0ce1..5c3dcc61 100644 --- a/components/leveldb_proto/leveldb_database.cc +++ b/components/leveldb_proto/leveldb_database.cc
@@ -12,11 +12,11 @@ #include "base/metrics/histogram.h" #include "base/strings/string_split.h" #include "base/threading/thread_checker.h" -#include "third_party/leveldatabase/env_chromium.h" #include "third_party/leveldatabase/leveldb_chrome.h" #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/cache.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/iterator.h" #include "third_party/leveldatabase/src/include/leveldb/options.h" #include "third_party/leveldatabase/src/include/leveldb/slice.h" @@ -51,7 +51,7 @@ leveldb_env::Options open_options = options; if (database_dir.empty()) { - env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); open_options.env = env_.get(); }
diff --git a/components/nacl/broker/BUILD.gn b/components/nacl/broker/BUILD.gn index e189f4e9..ef7773a 100644 --- a/components/nacl/broker/BUILD.gn +++ b/components/nacl/broker/BUILD.gn
@@ -106,6 +106,7 @@ ":nacl64_content", ":nacl64_crash_reporter_client", "//base", + "//breakpad:breakpad_handler", "//build/win:default_exe_manifest", "//chrome:nacl64_exe_version", "//chrome/install_static:install_static_util", @@ -115,7 +116,6 @@ "//content/public/common:static_switches", "//ppapi/proxy:ipc", "//sandbox", - "//third_party/breakpad:breakpad_handler", ] }
diff --git a/components/security_state/core/security_state.cc b/components/security_state/core/security_state.cc index 8a1789e..a7982a8 100644 --- a/components/security_state/core/security_state.cc +++ b/components/security_state/core/security_state.cc
@@ -359,4 +359,19 @@ VisibleSecurityState::~VisibleSecurityState() {} +bool IsSchemeCryptographic(const GURL& url) { + return url.is_valid() && url.SchemeIsCryptographic(); +} + +bool IsOriginLocalhostOrFile(const GURL& url) { + return url.is_valid() && + (net::IsLocalhost(url.HostNoBracketsPiece()) || url.SchemeIsFile()); +} + +bool IsSslCertificateValid(security_state::SecurityLevel security_level) { + return security_level == security_state::SECURE || + security_level == security_state::EV_SECURE || + security_level == security_state::SECURE_WITH_POLICY_INSTALLED_CERT; +} + } // namespace security_state
diff --git a/components/security_state/core/security_state.h b/components/security_state/core/security_state.h index dab5dd88..4ced0e3 100644 --- a/components/security_state/core/security_state.h +++ b/components/security_state/core/security_state.h
@@ -12,6 +12,7 @@ #include "base/feature_list.h" #include "base/macros.h" #include "components/security_state/core/insecure_input_event_data.h" +#include "net/base/url_util.h" #include "net/cert/cert_status_flags.h" #include "net/cert/sct_status_flags.h" #include "net/cert/x509_certificate.h" @@ -224,6 +225,17 @@ // |kHttpFormWarningFeature| feature. bool IsHttpWarningInFormEnabled(); +// Returns true for a valid |url| with a cryptographic scheme, e.g., HTTPS, +// HTTPS-SO, WSS. +bool IsSchemeCryptographic(const GURL& url); + +// Returns true for a valid |url| with localhost or file:// scheme origin. +bool IsOriginLocalhostOrFile(const GURL& url); + +// Returns true if the page has a valid SSL certificate. Only EV_SECURE, +// SECURE, and SECURE_WITH_POLICY_INSTALLED_CERT are considered valid. +bool IsSslCertificateValid(security_state::SecurityLevel security_level); + } // namespace security_state #endif // COMPONENTS_SECURITY_STATE_CORE_SECURITY_STATE_H_
diff --git a/components/security_state/core/security_state_unittest.cc b/components/security_state/core/security_state_unittest.cc index e7ff70fd..d81055f 100644 --- a/components/security_state/core/security_state_unittest.cc +++ b/components/security_state/core/security_state_unittest.cc
@@ -28,6 +28,10 @@ const char kHttpsUrl[] = "https://foo.test/"; const char kHttpUrl[] = "http://foo.test/"; +const char kHttpsSoUrl[] = "https-so://foo.test/"; +const char kLocalhostUrl[] = "http://localhost"; +const char kFileOrigin[] = "file://example_file"; +const char kWssUrl[] = "wss://foo.test/"; // This list doesn't include data: URL, as data: URLs will be explicitly marked // as not secure. @@ -635,4 +639,37 @@ } } +// Tests IsSchemeCryptographic function. +TEST(SecurityStateTest, CryptographicSchemeUrl) { + // HTTPS is a cryptographic scheme. + EXPECT_TRUE(IsSchemeCryptographic(GURL(kHttpsUrl))); + // HTTPS-SO is a cryptographic scheme. + EXPECT_TRUE(IsSchemeCryptographic(GURL(kHttpsSoUrl))); + // WSS is a cryptographic scheme. + EXPECT_TRUE(IsSchemeCryptographic(GURL(kWssUrl))); + // HTTP is not a cryptographic scheme. + EXPECT_FALSE(IsSchemeCryptographic(GURL(kHttpUrl))); + // Return true only for valid |url| + EXPECT_FALSE(IsSchemeCryptographic(GURL("https://"))); +} + +// Tests IsOriginLocalhostOrFile function. +TEST(SecurityStateTest, LocalhostOrFileUrl) { + EXPECT_TRUE(IsOriginLocalhostOrFile(GURL(kLocalhostUrl))); + EXPECT_TRUE(IsOriginLocalhostOrFile(GURL(kFileOrigin))); + EXPECT_FALSE(IsOriginLocalhostOrFile(GURL(kHttpsUrl))); +} + +// Tests IsSslCertificateValid function. +TEST(SecurityStateTest, SslCertificateValid) { + EXPECT_TRUE(IsSslCertificateValid(SecurityLevel::SECURE)); + EXPECT_TRUE(IsSslCertificateValid(SecurityLevel::EV_SECURE)); + EXPECT_TRUE( + IsSslCertificateValid(SecurityLevel::SECURE_WITH_POLICY_INSTALLED_CERT)); + + EXPECT_FALSE(IsSslCertificateValid(SecurityLevel::NONE)); + EXPECT_FALSE(IsSslCertificateValid(SecurityLevel::DANGEROUS)); + EXPECT_FALSE(IsSslCertificateValid(SecurityLevel::HTTP_SHOW_WARNING)); +} + } // namespace security_state
diff --git a/components/sync/model_impl/model_type_store_backend.cc b/components/sync/model_impl/model_type_store_backend.cc index 9d3c65f..4c0fedc 100644 --- a/components/sync/model_impl/model_type_store_backend.cc +++ b/components/sync/model_impl/model_type_store_backend.cc
@@ -13,8 +13,9 @@ #include "base/synchronization/lock.h" #include "components/sync/protocol/model_type_store_schema_descriptor.pb.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/iterator.h" #include "third_party/leveldatabase/src/include/leveldb/options.h" #include "third_party/leveldatabase/src/include/leveldb/slice.h" @@ -106,7 +107,7 @@ } std::unique_ptr<leveldb::Env> ModelTypeStoreBackend::CreateInMemoryEnv() { - return base::WrapUnique(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + return base::WrapUnique(leveldb::NewMemEnv(leveldb::Env::Default())); } // static
diff --git a/components/upload_list/crash_upload_list.h b/components/upload_list/crash_upload_list.h index 166f8fed..cbb2d31 100644 --- a/components/upload_list/crash_upload_list.h +++ b/components/upload_list/crash_upload_list.h
@@ -10,7 +10,7 @@ class CrashUploadList { public: // Should match kReporterLogFilename in - // third_party/breakpad/breakpad/src/client/apple/Framework/BreakpadDefines.h. + // breakpad/src/client/apple/Framework/BreakpadDefines.h. static const char kReporterLogFilename[]; private:
diff --git a/components/viz/client/client_layer_tree_frame_sink.cc b/components/viz/client/client_layer_tree_frame_sink.cc index 03fec38..3b1da3f 100644 --- a/components/viz/client/client_layer_tree_frame_sink.cc +++ b/components/viz/client/client_layer_tree_frame_sink.cc
@@ -15,49 +15,44 @@ #include "components/viz/common/resources/shared_bitmap_manager.h" namespace viz { +ClientLayerTreeFrameSink::InitParams::InitParams() {} + +ClientLayerTreeFrameSink::InitParams::~InitParams() {} ClientLayerTreeFrameSink::ClientLayerTreeFrameSink( scoped_refptr<ContextProvider> context_provider, scoped_refptr<ContextProvider> worker_context_provider, - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, - SharedBitmapManager* shared_bitmap_manager, - std::unique_ptr<SyntheticBeginFrameSource> synthetic_begin_frame_source, - mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info, - mojom::CompositorFrameSinkClientRequest client_request, - std::unique_ptr<HitTestDataProvider> hit_test_data_provider, - std::unique_ptr<LocalSurfaceIdProvider> local_surface_id_provider, - bool enable_surface_synchronization) + InitParams* params) : cc::LayerTreeFrameSink(std::move(context_provider), std::move(worker_context_provider), - gpu_memory_buffer_manager, - shared_bitmap_manager), - hit_test_data_provider_(std::move(hit_test_data_provider)), - local_surface_id_provider_(std::move(local_surface_id_provider)), - synthetic_begin_frame_source_(std::move(synthetic_begin_frame_source)), - compositor_frame_sink_info_(std::move(compositor_frame_sink_info)), - client_request_(std::move(client_request)), + params->gpu_memory_buffer_manager, + params->shared_bitmap_manager), + hit_test_data_provider_(std::move(params->hit_test_data_provider)), + local_surface_id_provider_(std::move(params->local_surface_id_provider)), + synthetic_begin_frame_source_( + std::move(params->synthetic_begin_frame_source)), + compositor_frame_sink_info_( + std::move(params->compositor_frame_sink_info)), + client_request_(std::move(params->client_request)), client_binding_(this), - enable_surface_synchronization_(enable_surface_synchronization), + enable_surface_synchronization_(params->enable_surface_synchronization), weak_factory_(this) { DETACH_FROM_THREAD(thread_checker_); } ClientLayerTreeFrameSink::ClientLayerTreeFrameSink( scoped_refptr<VulkanContextProvider> vulkan_context_provider, - std::unique_ptr<SyntheticBeginFrameSource> synthetic_begin_frame_source, - mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info, - mojom::CompositorFrameSinkClientRequest client_request, - std::unique_ptr<HitTestDataProvider> hit_test_data_provider, - std::unique_ptr<LocalSurfaceIdProvider> local_surface_id_provider, - bool enable_surface_synchronization) + InitParams* params) : cc::LayerTreeFrameSink(std::move(vulkan_context_provider)), - hit_test_data_provider_(std::move(hit_test_data_provider)), - local_surface_id_provider_(std::move(local_surface_id_provider)), - synthetic_begin_frame_source_(std::move(synthetic_begin_frame_source)), - compositor_frame_sink_info_(std::move(compositor_frame_sink_info)), - client_request_(std::move(client_request)), + hit_test_data_provider_(std::move(params->hit_test_data_provider)), + local_surface_id_provider_(std::move(params->local_surface_id_provider)), + synthetic_begin_frame_source_( + std::move(params->synthetic_begin_frame_source)), + compositor_frame_sink_info_( + std::move(params->compositor_frame_sink_info)), + client_request_(std::move(params->client_request)), client_binding_(this), - enable_surface_synchronization_(enable_surface_synchronization), + enable_surface_synchronization_(params->enable_surface_synchronization), weak_factory_(this) { DETACH_FROM_THREAD(thread_checker_); }
diff --git a/components/viz/client/client_layer_tree_frame_sink.h b/components/viz/client/client_layer_tree_frame_sink.h index 01b28d13..953c4fab 100644 --- a/components/viz/client/client_layer_tree_frame_sink.h +++ b/components/viz/client/client_layer_tree_frame_sink.h
@@ -25,26 +25,28 @@ public mojom::CompositorFrameSinkClient, public ExternalBeginFrameSourceClient { public: + struct InitParams { + InitParams(); + ~InitParams(); + + gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = nullptr; + SharedBitmapManager* shared_bitmap_manager = nullptr; + std::unique_ptr<SyntheticBeginFrameSource> synthetic_begin_frame_source; + mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info; + mojom::CompositorFrameSinkClientRequest client_request; + std::unique_ptr<HitTestDataProvider> hit_test_data_provider; + std::unique_ptr<LocalSurfaceIdProvider> local_surface_id_provider; + bool enable_surface_synchronization = false; + }; + ClientLayerTreeFrameSink( scoped_refptr<ContextProvider> context_provider, scoped_refptr<ContextProvider> worker_context_provider, - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager, - SharedBitmapManager* shared_bitmap_manager, - std::unique_ptr<SyntheticBeginFrameSource> synthetic_begin_frame_source, - mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info, - mojom::CompositorFrameSinkClientRequest client_request, - std::unique_ptr<HitTestDataProvider> hit_test_data_provider, - std::unique_ptr<LocalSurfaceIdProvider> local_surface_id_provider, - bool enable_surface_synchronization); + InitParams* params); ClientLayerTreeFrameSink( scoped_refptr<VulkanContextProvider> vulkan_context_provider, - std::unique_ptr<SyntheticBeginFrameSource> synthetic_begin_frame_source, - mojom::CompositorFrameSinkPtrInfo compositor_frame_sink_info, - mojom::CompositorFrameSinkClientRequest client_request, - std::unique_ptr<HitTestDataProvider> hit_test_data_provider, - std::unique_ptr<LocalSurfaceIdProvider> local_surface_id_provider, - bool enable_surface_synchronization); + InitParams* params); ~ClientLayerTreeFrameSink() override;
diff --git a/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc b/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc index 3e648fc9..73daed7b 100644 --- a/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc +++ b/content/browser/indexed_db/indexed_db_tombstone_sweeper_unittest.cc
@@ -19,7 +19,9 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" #include "third_party/leveldatabase/src/include/leveldb/slice.h"
diff --git a/content/browser/indexed_db/leveldb/leveldb_database.cc b/content/browser/indexed_db/leveldb/leveldb_database.cc index e282cd06..a1cfdac6 100644 --- a/content/browser/indexed_db/leveldb/leveldb_database.cc +++ b/content/browser/indexed_db/leveldb/leveldb_database.cc
@@ -32,10 +32,10 @@ #include "content/browser/indexed_db/leveldb/leveldb_env.h" #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" #include "content/browser/indexed_db/leveldb/leveldb_write_batch.h" -#include "third_party/leveldatabase/env_chromium.h" #include "third_party/leveldatabase/leveldb_chrome.h" #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" #include "third_party/leveldatabase/src/include/leveldb/slice.h" @@ -342,7 +342,7 @@ std::unique_ptr<ComparatorAdapter> comparator_adapter( base::MakeUnique<ComparatorAdapter>(comparator)); std::unique_ptr<leveldb::Env> in_memory_env( - leveldb_chrome::NewMemEnv(LevelDBEnv::Get())); + leveldb::NewMemEnv(LevelDBEnv::Get())); std::unique_ptr<leveldb::DB> db; std::unique_ptr<const leveldb::FilterPolicy> filter_policy;
diff --git a/content/browser/notifications/notification_database.cc b/content/browser/notifications/notification_database.cc index bb675a0..f2a1f0759 100644 --- a/content/browser/notifications/notification_database.cc +++ b/content/browser/notifications/notification_database.cc
@@ -19,6 +19,7 @@ #include "third_party/leveldatabase/leveldb_chrome.h" #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/filter_policy.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" #include "url/gurl.h" @@ -129,7 +130,7 @@ options.filter_policy = filter_policy_.get(); options.block_cache = leveldb_chrome::GetSharedWebBlockCache(); if (IsInMemoryDatabase()) { - env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); options.env = env_.get(); }
diff --git a/content/browser/service_worker/service_worker_database.cc b/content/browser/service_worker/service_worker_database.cc index 7cabb53..62aad688 100644 --- a/content/browser/service_worker/service_worker_database.cc +++ b/content/browser/service_worker/service_worker_database.cc
@@ -21,8 +21,9 @@ #include "content/common/service_worker/service_worker_utils.h" #include "third_party/WebKit/public/platform/modules/serviceworker/service_worker_registration.mojom.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" #include "url/origin.h" @@ -1277,7 +1278,7 @@ leveldb_env::Options options; options.create_if_missing = create_if_missing; if (IsDatabaseInMemory()) { - env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); options.env = env_.get(); } else { options.env = g_service_worker_env.Pointer();
diff --git a/content/renderer/mus/renderer_window_tree_client.cc b/content/renderer/mus/renderer_window_tree_client.cc index 7306f1d..6f985986c 100644 --- a/content/renderer/mus/renderer_window_tree_client.cc +++ b/content/renderer/mus/renderer_window_tree_client.cc
@@ -84,14 +84,16 @@ viz::mojom::CompositorFrameSinkClientPtr client; viz::mojom::CompositorFrameSinkClientRequest client_request = mojo::MakeRequest(&client); - constexpr bool enable_surface_synchronization = true; + viz::ClientLayerTreeFrameSink::InitParams params; + params.gpu_memory_buffer_manager = gpu_memory_buffer_manager; + params.compositor_frame_sink_info = std::move(sink_info); + params.client_request = std::move(client_request); + params.local_surface_id_provider = + base::MakeUnique<viz::DefaultLocalSurfaceIdProvider>(); + params.enable_surface_synchronization = true; auto frame_sink = base::MakeUnique<viz::ClientLayerTreeFrameSink>( std::move(context_provider), nullptr /* worker_context_provider */, - gpu_memory_buffer_manager, nullptr /* shared_bitmap_manager */, - nullptr /* synthetic_begin_frame_source */, std::move(sink_info), - std::move(client_request), nullptr /* hit_test_data_provider_ */, - base::MakeUnique<viz::DefaultLocalSurfaceIdProvider>(), - enable_surface_synchronization); + ¶ms); tree_->AttachCompositorFrameSink(root_window_id_, std::move(sink_request), std::move(client)); callback.Run(std::move(frame_sink));
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc index 5dc03fa..08eab73c 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -1937,18 +1937,20 @@ if (command_line.HasSwitch(switches::kDisableGpuCompositing)) use_software = true; - bool enable_surface_synchronization = + viz::ClientLayerTreeFrameSink::InitParams params; + params.enable_surface_synchronization = command_line.HasSwitch(switches::kEnableSurfaceSynchronization); + params.local_surface_id_provider = + base::MakeUnique<RendererLocalSurfaceIdProvider>(); // In disable gpu vsync mode, also let the renderer tick as fast as it // can. The top level begin frame source will also be running as a back // to back begin frame source, but using a synthetic begin frame source // here reduces latency when in this mode (at least for frames // starting--it potentially increases it for input on the other hand.) - std::unique_ptr<viz::SyntheticBeginFrameSource> synthetic_begin_frame_source; if (command_line.HasSwitch(switches::kDisableGpuVsync) && command_line.GetSwitchValueASCII(switches::kDisableGpuVsync) != "gpu") { - synthetic_begin_frame_source = CreateSyntheticBeginFrameSource(); + params.synthetic_begin_frame_source = CreateSyntheticBeginFrameSource(); } #if defined(USE_AURA) @@ -1972,12 +1974,10 @@ } #endif - viz::mojom::CompositorFrameSinkPtrInfo sink_info; viz::mojom::CompositorFrameSinkRequest sink_request = - mojo::MakeRequest(&sink_info); + mojo::MakeRequest(¶ms.compositor_frame_sink_info); viz::mojom::CompositorFrameSinkClientPtr client; - viz::mojom::CompositorFrameSinkClientRequest client_request = - mojo::MakeRequest(&client); + params.client_request = mojo::MakeRequest(&client); if (command_line.HasSwitch(switches::kEnableVulkan)) { scoped_refptr<viz::VulkanContextProvider> vulkan_context_provider = @@ -1987,11 +1987,7 @@ frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), std::move(client)); callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( - std::move(vulkan_context_provider), - std::move(synthetic_begin_frame_source), std::move(sink_info), - std::move(client_request), nullptr /* hit_test_data_provider */, - base::MakeUnique<RendererLocalSurfaceIdProvider>(), - enable_surface_synchronization)); + std::move(vulkan_context_provider), ¶ms)); return; } } @@ -2016,12 +2012,9 @@ DCHECK(!layout_test_mode()); frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), std::move(client)); + params.shared_bitmap_manager = shared_bitmap_manager(); callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( - nullptr, nullptr, nullptr, shared_bitmap_manager(), - std::move(synthetic_begin_frame_source), std::move(sink_info), - std::move(client_request), nullptr /* hit_test_data_provider */, - base::MakeUnique<RendererLocalSurfaceIdProvider>(), - enable_surface_synchronization)); + nullptr, nullptr, ¶ms)); return; } @@ -2076,8 +2069,8 @@ #if defined(OS_ANDROID) if (sync_compositor_message_filter_) { std::unique_ptr<viz::BeginFrameSource> begin_frame_source = - synthetic_begin_frame_source - ? std::move(synthetic_begin_frame_source) + params.synthetic_begin_frame_source + ? std::move(params.synthetic_begin_frame_source) : CreateExternalBeginFrameSource(routing_id); callback.Run(base::MakeUnique<SynchronousLayerTreeFrameSink>( std::move(context_provider), std::move(worker_context_provider), @@ -2090,13 +2083,10 @@ #endif frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), std::move(client)); + params.gpu_memory_buffer_manager = GetGpuMemoryBufferManager(); callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( std::move(context_provider), std::move(worker_context_provider), - GetGpuMemoryBufferManager(), nullptr, - std::move(synthetic_begin_frame_source), std::move(sink_info), - std::move(client_request), nullptr /* hit_test_data_provider */, - base::MakeUnique<RendererLocalSurfaceIdProvider>(), - enable_surface_synchronization)); + ¶ms)); } AssociatedInterfaceRegistry*
diff --git a/content/shell/BUILD.gn b/content/shell/BUILD.gn index afe5698..012838c 100644 --- a/content/shell/BUILD.gn +++ b/content/shell/BUILD.gn
@@ -827,17 +827,17 @@ } if (is_posix && !is_android) { data_deps += [ - "//third_party/breakpad:dump_syms($host_toolchain)", - "//third_party/breakpad:minidump_stackwalk($host_toolchain)", + "//breakpad:dump_syms($host_toolchain)", + "//breakpad:minidump_stackwalk($host_toolchain)", ] } if (is_android) { data_deps += [ - "//third_party/breakpad:dump_syms", - "//third_party/breakpad:microdump_stackwalk", - "//third_party/breakpad:minidump_dump", - "//third_party/breakpad:minidump_stackwalk", - "//third_party/breakpad:symupload", + "//breakpad:dump_syms", + "//breakpad:microdump_stackwalk", + "//breakpad:minidump_dump", + "//breakpad:minidump_stackwalk", + "//breakpad:symupload", "//tools/android/forwarder2", ] }
diff --git a/docs/linux_crash_dumping.md b/docs/linux_crash_dumping.md index 8bc0aa86..47533c9 100644 --- a/docs/linux_crash_dumping.md +++ b/docs/linux_crash_dumping.md
@@ -11,8 +11,8 @@ three platforms (Linux, Mac and Windows). For Linux, a substantial amount of work was required to support cross-process dumping. At the time of writing this code is currently forked from the upstream breakpad repo. While this situation -remains, the forked code lives in `third_party/breakpad/linux`. The upstream -repo is mirrored in `third_party/breakpad/breakpad`. +remains, the forked code lives in `breakpad/linux`. The upstream repo is +mirrored in `breakpad/src`. The code currently supports i386 only. Getting x86-64 to work should only be a minor amount of work. @@ -22,13 +22,13 @@ Breakpad deals in a file format called 'minidumps'. This is a Microsoft format and thus is defined by in-memory structures which are dumped, raw, to disk. The main header file for this file format is -`third_party/breakpad/breakpad/src/google_breakpad/common/minidump_format.h`. +`breakpad/src/google_breakpad/common/minidump_format.h`. At the top level, the minidump file format is a list of key-value pairs. Many of the keys are defined by the minidump format and contain cross-platform representations of stacks, threads etc. For Linux we also define a number of custom keys containing `/proc/cpuinfo`, `lsb-release` etc. These are defined in -`third_party/breakpad/breakpad/linux/minidump_format_linux.h`. +`breakpad/linux/minidump_format_linux.h`. ### Catching exceptions
diff --git a/ios/chrome/app/DEPS b/ios/chrome/app/DEPS index 19695943..e35b827 100644 --- a/ios/chrome/app/DEPS +++ b/ios/chrome/app/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+breakpad/src/client/ios", "+components/bookmarks/browser", "+components/bookmarks/test", "+components/browser_sync", @@ -26,7 +27,6 @@ "+ios/net", "+ios/public/provider/chrome", "+mojo/edk/embedder/embedder.h", - "+third_party/breakpad/breakpad/src/client/ios", # Strings and resources. "+components/grit",
diff --git a/ios/chrome/app/application_delegate/BUILD.gn b/ios/chrome/app/application_delegate/BUILD.gn index f9f9ff8..47dccef 100644 --- a/ios/chrome/app/application_delegate/BUILD.gn +++ b/ios/chrome/app/application_delegate/BUILD.gn
@@ -34,6 +34,7 @@ ":test_support", "//base", "//base/test:test_support", + "//breakpad:client", "//components/handoff", "//components/metrics", "//ios/chrome/app", @@ -64,7 +65,6 @@ "//ios/web/public/test", "//net:test_support", "//testing/gtest", - "//third_party/breakpad:client", "//third_party/ocmock", "//ui/base", "//url",
diff --git a/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm b/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm index a010802..8c03bd4c 100644 --- a/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm +++ b/ios/chrome/app/application_delegate/metrics_mediator_unittest.mm
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> #include "base/mac/scoped_block.h" +#import "breakpad/src/client/ios/BreakpadController.h" #include "components/metrics/metrics_service.h" #import "ios/chrome/app/application_delegate/startup_information.h" #include "ios/chrome/browser/application_context.h" @@ -19,7 +20,6 @@ #import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h" #include "net/base/network_change_notifier.h" #include "testing/platform_test.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #import "third_party/ocmock/OCMock/OCMock.h" #include "third_party/ocmock/gtest_support.h"
diff --git a/ios/chrome/browser/DEPS b/ios/chrome/browser/DEPS index 3adadcc..7ed4da5 100644 --- a/ios/chrome/browser/DEPS +++ b/ios/chrome/browser/DEPS
@@ -1,4 +1,6 @@ include_rules = [ + "+breakpad/src/client/ios", + "+breakpad/src/common", "+components/about_handler", "+components/autofill/core/browser", "+components/autofill/core/common", @@ -103,8 +105,6 @@ "+net", "+rlz/features", "+services/metrics", - "+third_party/breakpad/breakpad/src/client/ios", - "+third_party/breakpad/breakpad/src/common", "+third_party/brotli", "+third_party/google_toolbox_for_mac", "+third_party/libaddressinput",
diff --git a/ios/chrome/browser/crash_report/BUILD.gn b/ios/chrome/browser/crash_report/BUILD.gn index 1b3c3752..2c295328 100644 --- a/ios/chrome/browser/crash_report/BUILD.gn +++ b/ios/chrome/browser/crash_report/BUILD.gn
@@ -22,11 +22,11 @@ deps = [ "//base", + "//breakpad:client", "//components/crash/core/common", "//components/upload_list", "//ios/chrome/browser", "//ios/web", - "//third_party/breakpad:client", ] } @@ -70,6 +70,7 @@ ":crash_report", ":crash_report_internal", "//base", + "//breakpad:client", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/browser_state:test_support", "//ios/chrome/browser/sessions:serialisation", @@ -78,7 +79,6 @@ "//ios/web/public/test", "//testing/gmock", "//testing/gtest", - "//third_party/breakpad:client", "//third_party/ocmock", ] }
diff --git a/ios/chrome/browser/crash_report/breakpad_helper.mm b/ios/chrome/browser/crash_report/breakpad_helper.mm index df3af19..ce51472 100644 --- a/ios/chrome/browser/crash_report/breakpad_helper.mm +++ b/ios/chrome/browser/crash_report/breakpad_helper.mm
@@ -22,9 +22,9 @@ #import "ios/chrome/browser/crash_report/crash_report_user_application_state.h" // TODO(stuartmorgan): Move this up where it belongs once -// https://crbug.com/google-breakpad/487 is fixed. For now, put it at the end to -// avoid compiler errors. -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" +// http://code.google.com/p/google-breakpad/issues/detail?id=487 +// is fixed. For now, put it at the end to avoid compiler errors. +#import "breakpad/src/client/ios/BreakpadController.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm b/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm index 7fd3766..c2f17ec 100644 --- a/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm +++ b/ios/chrome/browser/crash_report/breakpad_helper_unittest.mm
@@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#import "breakpad/src/client/ios/BreakpadController.h" #import "ios/chrome/browser/crash_report/breakpad_helper.h" #import "ios/chrome/test/base/scoped_block_swizzler.h" #import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #import "third_party/ocmock/OCMock/OCMock.h" #include "third_party/ocmock/gtest_support.h"
diff --git a/ios/chrome/browser/crash_report/crash_report_background_uploader.mm b/ios/chrome/browser/crash_report/crash_report_background_uploader.mm index 9258c76..19525ab4 100644 --- a/ios/chrome/browser/crash_report/crash_report_background_uploader.mm +++ b/ios/chrome/browser/crash_report/crash_report_background_uploader.mm
@@ -13,8 +13,8 @@ #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "base/time/time.h" +#import "breakpad/src/client/ios/BreakpadController.h" #include "ios/chrome/browser/experimental_flags.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/browser/passwords/BUILD.gn b/ios/chrome/browser/passwords/BUILD.gn index 8ee80da1..9ace7590 100644 --- a/ios/chrome/browser/passwords/BUILD.gn +++ b/ios/chrome/browser/passwords/BUILD.gn
@@ -72,10 +72,6 @@ "//ios/chrome/browser/autofill", "//ios/chrome/browser/browser_state", "//ios/chrome/browser/infobars", - - # TODO(crbug.com/435048): Remove payments dependency after landing - # https://chromium-review.googlesource.com/c/chromium/src/+/631881. - "//ios/chrome/browser/payments", "//ios/chrome/browser/signin", "//ios/chrome/browser/ssl", "//ios/chrome/browser/sync/glue",
diff --git a/ios/chrome/browser/passwords/credential_manager_util.mm b/ios/chrome/browser/passwords/credential_manager_util.mm index 6a0c1fc..35ff6b2 100644 --- a/ios/chrome/browser/passwords/credential_manager_util.mm +++ b/ios/chrome/browser/passwords/credential_manager_util.mm
@@ -5,7 +5,6 @@ #include "ios/chrome/browser/passwords/credential_manager_util.h" #include "components/security_state/core/security_state.h" -#include "ios/chrome/browser/payments/origin_security_checker.h" #include "ios/chrome/browser/ssl/ios_security_state_tab_helper.h" #import "ios/web/public/origin_util.h" #include "url/origin.h" @@ -15,11 +14,6 @@ using password_manager::CredentialType; using password_manager::CredentialMediationRequirement; -// TODO(crbug.com/435048): This file should not depend on payments. As soon as -// https://chromium-review.googlesource.com/c/chromium/src/+/631881 is landed -// make sure there are no payments dependencies. -using payments::OriginSecurityChecker; - namespace { security_state::SecurityLevel GetSecurityLevelForWebState( @@ -205,18 +199,19 @@ const GURL last_committed_url = web_state->GetLastCommittedURL(); - if (!OriginSecurityChecker::IsContextSecure(last_committed_url)) { + if (!web::IsOriginSecure(last_committed_url) || + last_committed_url.scheme() == url::kDataScheme) { return false; } // If scheme is not cryptographic, the origin must be either localhost or a // file. - if (!OriginSecurityChecker::IsSchemeCryptographic(last_committed_url)) { - return OriginSecurityChecker::IsOriginLocalhostOrFile(last_committed_url); + if (!security_state::IsSchemeCryptographic(last_committed_url)) { + return security_state::IsOriginLocalhostOrFile(last_committed_url); } // If scheme is cryptographic, valid SSL certificate is required. security_state::SecurityLevel security_level = GetSecurityLevelForWebState(web_state); - return OriginSecurityChecker::IsSSLCertificateValid(security_level); + return security_state::IsSslCertificateValid(security_level); }
diff --git a/ios/chrome/browser/payments/BUILD.gn b/ios/chrome/browser/payments/BUILD.gn index 84f2e85..9f6d2b6 100644 --- a/ios/chrome/browser/payments/BUILD.gn +++ b/ios/chrome/browser/payments/BUILD.gn
@@ -19,8 +19,6 @@ "ios_payment_instrument_launcher_factory.mm", "ios_payment_request_cache_factory.h", "ios_payment_request_cache_factory.mm", - "origin_security_checker.h", - "origin_security_checker.mm", "payment_request.h", "payment_request.mm", "payment_request_cache.h",
diff --git a/ios/chrome/browser/payments/origin_security_checker.h b/ios/chrome/browser/payments/origin_security_checker.h deleted file mode 100644 index 161ff37..0000000 --- a/ios/chrome/browser/payments/origin_security_checker.h +++ /dev/null
@@ -1,45 +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 IOS_CHROME_BROWSER_PAYMENTS_ORIGIN_SECURITY_CHECKER_H_ -#define IOS_CHROME_BROWSER_PAYMENTS_ORIGIN_SECURITY_CHECKER_H_ - -#include "base/macros.h" -#include "components/security_state/core/security_state.h" - -class GURL; - -namespace payments { - -class OriginSecurityChecker { - public: - // Returns true for a valid |url| from a secure context. This check is a - // superset of the OriginSecurityChecker::IsOriginSecure() by making sure - // the URL does not have a data URI scheme. This may eventually get more - // complicated and require looking at whether the origin is opaque, etc. - static bool IsContextSecure(const GURL& url); - - // Returns true for a valid |url| from a secure origin. - static bool IsOriginSecure(const GURL& url); - - // Returns true for a valid |url| with a cryptographic scheme, e.g., HTTPS, - // HTTPS-SO, WSS. - static bool IsSchemeCryptographic(const GURL& url); - - // Returns true for a valid |url| with localhost or file:// scheme origin. - static bool IsOriginLocalhostOrFile(const GURL& url); - - // Returns true if the page has a valid SSL certificate. Only EV_SECURE, - // SECURE, and SECURE_WITH_POLICY_INSTALLED_CERT are considered valid for web - // payments. - static bool IsSSLCertificateValid( - const security_state::SecurityLevel security_level); - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(OriginSecurityChecker); -}; - -} // namespace payments - -#endif // IOS_CHROME_BROWSER_PAYMENTS_ORIGIN_SECURITY_CHECKER_H_
diff --git a/ios/chrome/browser/payments/origin_security_checker.mm b/ios/chrome/browser/payments/origin_security_checker.mm deleted file mode 100644 index cc13566..0000000 --- a/ios/chrome/browser/payments/origin_security_checker.mm +++ /dev/null
@@ -1,49 +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 "ios/chrome/browser/payments/origin_security_checker.h" - -#include <string> -#include <vector> - -#include "base/stl_util.h" -#import "ios/web/public/origin_util.h" -#include "net/base/url_util.h" -#include "url/gurl.h" -#include "url/url_constants.h" - -namespace payments { - -// static -bool OriginSecurityChecker::IsContextSecure(const GURL& url) { - return IsOriginSecure(url) && - !base::ContainsValue(std::vector<std::string>{url::kDataScheme}, - url.scheme()); -} - -// static -bool OriginSecurityChecker::IsOriginSecure(const GURL& url) { - return url.is_valid() && web::IsOriginSecure(url); -} - -// static -bool OriginSecurityChecker::IsSchemeCryptographic(const GURL& url) { - return url.is_valid() && url.SchemeIsCryptographic(); -} - -// static -bool OriginSecurityChecker::IsOriginLocalhostOrFile(const GURL& url) { - return url.is_valid() && - (net::IsLocalhost(url.HostNoBracketsPiece()) || url.SchemeIsFile()); -} - -// static -bool OriginSecurityChecker::IsSSLCertificateValid( - const security_state::SecurityLevel security_level) { - return security_level == security_state::SECURE || - security_level == security_state::EV_SECURE || - security_level == security_state::SECURE_WITH_POLICY_INSTALLED_CERT; -} - -} // namespace payments
diff --git a/ios/chrome/browser/ui/payments/payment_request_manager.mm b/ios/chrome/browser/ui/payments/payment_request_manager.mm index 2e9f3db..17c091c 100644 --- a/ios/chrome/browser/ui/payments/payment_request_manager.mm +++ b/ios/chrome/browser/ui/payments/payment_request_manager.mm
@@ -46,7 +46,6 @@ #include "ios/chrome/browser/payments/ios_payment_instrument_launcher.h" #include "ios/chrome/browser/payments/ios_payment_instrument_launcher_factory.h" #include "ios/chrome/browser/payments/ios_payment_request_cache_factory.h" -#include "ios/chrome/browser/payments/origin_security_checker.h" #include "ios/chrome/browser/payments/payment_request.h" #import "ios/chrome/browser/payments/payment_request_cache.h" #import "ios/chrome/browser/payments/payment_response_helper.h" @@ -911,23 +910,21 @@ const GURL lastCommittedURL = _activeWebState->GetLastCommittedURL(); - if (!payments::OriginSecurityChecker::IsContextSecure(lastCommittedURL)) { - LOG(ERROR) << "Not in a secure context."; + if (!web::IsOriginSecure(lastCommittedURL) || + lastCommittedURL.scheme() == url::kDataScheme) { + DLOG(ERROR) << "Not in a secure context."; return NO; } - if (!payments::OriginSecurityChecker::IsSchemeCryptographic( - lastCommittedURL) && - !payments::OriginSecurityChecker::IsOriginLocalhostOrFile( - lastCommittedURL)) { - LOG(ERROR) << "Not localhost, or with file or cryptographic scheme."; + if (!security_state::IsSchemeCryptographic(lastCommittedURL) && + !security_state::IsOriginLocalhostOrFile(lastCommittedURL)) { + DLOG(ERROR) << "Not localhost, or with file or cryptographic scheme."; return NO; } // If the scheme is cryptographic, the SSL certificate must also be valid. - return !payments::OriginSecurityChecker::IsSchemeCryptographic( - lastCommittedURL) || - payments::OriginSecurityChecker::IsSSLCertificateValid( + return !security_state::IsSchemeCryptographic(lastCommittedURL) || + security_state::IsSslCertificateValid( _toolbarModel->GetToolbarModel()->GetSecurityLevel(true)); } @@ -1117,8 +1114,10 @@ // Set the JS isContextSecure global variable at the earliest opportunity. [_paymentRequestJsManager - setContextSecure:payments::OriginSecurityChecker::IsContextSecure( - _activeWebState->GetLastCommittedURL()) + setContextSecure:(web::IsOriginSecure( + _activeWebState->GetLastCommittedURL()) && + _activeWebState->GetLastCommittedURL().scheme() != + url::kDataScheme) completionHandler:nil]; }
diff --git a/ios/chrome/browser/ui/safe_mode/BUILD.gn b/ios/chrome/browser/ui/safe_mode/BUILD.gn index e95e853..5e36aed 100644 --- a/ios/chrome/browser/ui/safe_mode/BUILD.gn +++ b/ios/chrome/browser/ui/safe_mode/BUILD.gn
@@ -55,11 +55,11 @@ deps = [ ":safe_mode", "//base", + "//breakpad:client", "//ios/chrome/browser/crash_report", "//ios/chrome/test/base", "//ios/chrome/test/ocmock", "//testing/gtest", - "//third_party/breakpad:client", "//third_party/ocmock", ] libs = [ "UIKit.framework" ]
diff --git a/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller_unittest.mm b/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller_unittest.mm index 335cceb..1f16ee7f 100644 --- a/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller_unittest.mm +++ b/ios/chrome/browser/ui/safe_mode/safe_mode_view_controller_unittest.mm
@@ -3,12 +3,12 @@ // found in the LICENSE file. #import "ios/chrome/browser/ui/safe_mode/safe_mode_view_controller.h" +#import "breakpad/src/client/ios/BreakpadController.h" #import "ios/chrome/browser/crash_report/breakpad_helper.h" #import "ios/chrome/test/base/scoped_block_swizzler.h" #import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #import "third_party/ocmock/OCMock/OCMock.h" #include "third_party/ocmock/gtest_support.h"
diff --git a/ios/chrome/test/DEPS b/ios/chrome/test/DEPS index 77affed59..651885c3 100644 --- a/ios/chrome/test/DEPS +++ b/ios/chrome/test/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+breakpad/src/client/ios", "+components/autofill/core/browser", "+components/bookmarks", "+components/browser_sync", @@ -20,7 +21,6 @@ "+ios/public/provider/chrome", "+ios/public/test", "+net/url_request", - "+third_party/breakpad/breakpad/src/client/ios", "+third_party/google_toolbox_for_mac", "+ui",
diff --git a/ios/chrome/test/app/BUILD.gn b/ios/chrome/test/app/BUILD.gn index 69651ea..9420398b 100644 --- a/ios/chrome/test/app/BUILD.gn +++ b/ios/chrome/test/app/BUILD.gn
@@ -36,6 +36,7 @@ deps = [ "//base", "//base/test:test_support", + "//breakpad:client", "//components/autofill/core/browser", "//components/bookmarks/browser", "//components/browser_sync", @@ -86,7 +87,6 @@ "//ios/web/public/test", "//net", "//net:test_support", - "//third_party/breakpad:client", "//url", ] }
diff --git a/ios/chrome/test/app/chrome_test_util.mm b/ios/chrome/test/app/chrome_test_util.mm index 1c44cbe..f8d85a5 100644 --- a/ios/chrome/test/app/chrome_test_util.mm +++ b/ios/chrome/test/app/chrome_test_util.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/test/app/chrome_test_util.h" #include "base/mac/foundation_util.h" +#import "breakpad/src/client/ios/BreakpadController.h" #include "components/metrics/metrics_pref_names.h" #include "components/metrics/metrics_service.h" #import "ios/chrome/app/application_delegate/metrics_mediator.h" @@ -27,7 +28,6 @@ #import "ios/chrome/browser/ui/ntp/new_tab_page_controller.h" #import "ios/chrome/browser/ui/tab_switcher/tab_switcher.h" #import "ios/web/public/test/native_controller_test_util.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/ios/chrome/test/ocmock/BUILD.gn b/ios/chrome/test/ocmock/BUILD.gn index ed27b7c..cc3ebdf3 100644 --- a/ios/chrome/test/ocmock/BUILD.gn +++ b/ios/chrome/test/ocmock/BUILD.gn
@@ -11,8 +11,8 @@ ] deps = [ "//base", + "//breakpad:client", "//testing/gtest", - "//third_party/breakpad:client", "//third_party/ocmock", ] }
diff --git a/ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.mm b/ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.mm index 6a9be75..ba86516 100644 --- a/ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.mm +++ b/ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.mm
@@ -4,8 +4,8 @@ #import "ios/chrome/test/ocmock/OCMockObject+BreakpadControllerTesting.h" +#import "breakpad/src/client/ios/BreakpadController.h" #include "testing/gtest/include/gtest/gtest.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #import "third_party/ocmock/OCMock/OCMock.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/clean/chrome/app/DEPS b/ios/clean/chrome/app/DEPS index d893f68..3338758 100644 --- a/ios/clean/chrome/app/DEPS +++ b/ios/clean/chrome/app/DEPS
@@ -1,9 +1,9 @@ include_rules = [ + "+breakpad/src/client/ios", "+components/content_settings", "+components/crash/core/common", "+ios/chrome/browser", "+ios/net", "+ios/public/provider/chrome", "+ios/web/public", - "+third_party/breakpad/breakpad/src/client/ios", ]
diff --git a/ios/clean/chrome/app/steps/BUILD.gn b/ios/clean/chrome/app/steps/BUILD.gn index 92053f05..351dbdff 100644 --- a/ios/clean/chrome/app/steps/BUILD.gn +++ b/ios/clean/chrome/app/steps/BUILD.gn
@@ -50,6 +50,7 @@ deps = [ ":step_runner", "//base", + "//breakpad:client", "//components/content_settings/core/browser", "//ios/chrome/app:app_internal", "//ios/chrome/app/startup", @@ -68,7 +69,6 @@ "//ios/clean/chrome/browser/ui/root", "//ios/net", "//ios/web", - "//third_party/breakpad:client", ] }
diff --git a/ios/clean/chrome/app/steps/breakpad_initializer.mm b/ios/clean/chrome/app/steps/breakpad_initializer.mm index bfb5f2a..3590f55 100644 --- a/ios/clean/chrome/app/steps/breakpad_initializer.mm +++ b/ios/clean/chrome/app/steps/breakpad_initializer.mm
@@ -5,10 +5,10 @@ #import "ios/clean/chrome/app/steps/breakpad_initializer.h" #include "base/logging.h" +#import "breakpad/src/client/ios/BreakpadController.h" #include "ios/chrome/browser/application_context.h" #import "ios/clean/chrome/app/steps/step_context.h" #import "ios/clean/chrome/app/steps/step_features.h" -#import "third_party/breakpad/breakpad/src/client/ios/BreakpadController.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support."
diff --git a/native_client_sdk/src/BUILD.gn b/native_client_sdk/src/BUILD.gn index 5c9fa1215..9b33bed5 100644 --- a/native_client_sdk/src/BUILD.gn +++ b/native_client_sdk/src/BUILD.gn
@@ -56,9 +56,9 @@ # http://crbug.com/245456 if (!is_win && target_cpu == "x64") { deps += [ - "//third_party/breakpad:dump_syms($host_toolchain)", - "//third_party/breakpad:minidump_dump($host_toolchain)", - "//third_party/breakpad:minidump_stackwalk($host_toolchain)", + "//breakpad:dump_syms($host_toolchain)", + "//breakpad:minidump_dump($host_toolchain)", + "//breakpad:minidump_stackwalk($host_toolchain)", ] } }
diff --git a/net/cert/ct_policy_enforcer.cc b/net/cert/ct_policy_enforcer.cc index 0dd6a0d..fa312675 100644 --- a/net/cert/ct_policy_enforcer.cc +++ b/net/cert/ct_policy_enforcer.cc
@@ -61,6 +61,7 @@ if (end < start) { *rounded_months_difference = 0; *has_partial_month = false; + return; } *has_partial_month = true;
diff --git a/net/cert/ct_policy_enforcer_unittest.cc b/net/cert/ct_policy_enforcer_unittest.cc index 46942a8..81421e7 100644 --- a/net/cert/ct_policy_enforcer_unittest.cc +++ b/net/cert/ct_policy_enforcer_unittest.cc
@@ -405,7 +405,9 @@ base::Time validity_start; base::Time validity_end; size_t scts_required; - } kTestData[] = {{// Cert valid for 14 months, needs 2 SCTs. + } kTestData[] = {{// Cert valid for -14 months (nonsensical), needs 2 SCTs. + time_2016_6_0_6_11_25_0_0, time_2015_3_0_25_11_25_0_0, 2}, + {// Cert valid for 14 months, needs 2 SCTs. time_2015_3_0_25_11_25_0_0, time_2016_6_0_6_11_25_0_0, 2}, {// Cert valid for exactly 15 months, needs 3 SCTs. time_2015_3_0_25_11_25_0_0, time_2016_6_0_25_11_25_0_0, 3},
diff --git a/remoting/base/BUILD.gn b/remoting/base/BUILD.gn index 3cc1e9b..7f5a8b9e 100644 --- a/remoting/base/BUILD.gn +++ b/remoting/base/BUILD.gn
@@ -118,9 +118,9 @@ ] if (is_mac) { - deps += [ "//third_party/breakpad" ] + deps += [ "//breakpad" ] } else if (is_win) { - deps += [ "//third_party/breakpad:breakpad_handler" ] + deps += [ "//breakpad:breakpad_handler" ] } } @@ -178,7 +178,7 @@ ] if (is_win || is_mac || is_chromeos) { - deps += [ "//third_party/breakpad:client" ] + deps += [ "//breakpad:client" ] } if (is_win) {
diff --git a/remoting/base/DEPS b/remoting/base/DEPS index 54b8b42c..ecd7993 100644 --- a/remoting/base/DEPS +++ b/remoting/base/DEPS
@@ -1,9 +1,9 @@ include_rules = [ + "+breakpad", "+google/protobuf", "+google_apis", "+mojo/edk/embedder", "+net", - "+third_party/breakpad", "+third_party/zlib", "+ui/base", ]
diff --git a/remoting/base/breakpad_mac.mm b/remoting/base/breakpad_mac.mm index 3cd6ef3..1dbd11f 100644 --- a/remoting/base/breakpad_mac.mm +++ b/remoting/base/breakpad_mac.mm
@@ -8,7 +8,7 @@ #include "base/logging.h" #import "base/mac/scoped_nsautorelease_pool.h" -#import "third_party/breakpad/breakpad/src/client/mac/Framework/Breakpad.h" +#import "breakpad/src/client/mac/Framework/Breakpad.h" namespace remoting {
diff --git a/remoting/base/breakpad_win.cc b/remoting/base/breakpad_win.cc index bc11449..58d95c3 100644 --- a/remoting/base/breakpad_win.cc +++ b/remoting/base/breakpad_win.cc
@@ -22,7 +22,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/win/current_module.h" #include "base/win/wrapped_window_proc.h" -#include "third_party/breakpad/breakpad/src/client/windows/handler/exception_handler.h" +#include "breakpad/src/client/windows/handler/exception_handler.h" namespace remoting { void InitializeCrashReportingForTest(const wchar_t* pipe_name);
diff --git a/remoting/base/breakpad_win_unittest.cc b/remoting/base/breakpad_win_unittest.cc index b6ad481..38c368b30 100644 --- a/remoting/base/breakpad_win_unittest.cc +++ b/remoting/base/breakpad_win_unittest.cc
@@ -12,10 +12,10 @@ #include "base/logging.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" +#include "breakpad/src/client/windows/crash_generation/client_info.h" +#include "breakpad/src/client/windows/crash_generation/crash_generation_server.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/client_info.h" -#include "third_party/breakpad/breakpad/src/client/windows/crash_generation/crash_generation_server.h" namespace {
diff --git a/remoting/scripts/mac/dump_product_syms b/remoting/scripts/mac/dump_product_syms index f73a16a0..7c53948 100755 --- a/remoting/scripts/mac/dump_product_syms +++ b/remoting/scripts/mac/dump_product_syms
@@ -28,7 +28,8 @@ for ARCH in ${ARCHS}; do # Use -c to avoid dumping CFI, because the Breakpad stackwalk is incompatible - # with CFI produced by clang. https://crbug.com/google-breakpad/443 + # with CFI produced by clang. + # http://code.google.com/p/google-breakpad/issues/detail?id=443 "${DUMP_SYMS_TOOL}" -a "${ARCH}" -c "${DWARF_PATH}" > \ "${SOURCE_BUNDLE}-${VERSION}-${ARCH}.breakpad" done
diff --git a/storage/browser/fileapi/quota/quota_backend_impl_unittest.cc b/storage/browser/fileapi/quota/quota_backend_impl_unittest.cc index 4a83517..78e05df 100644 --- a/storage/browser/fileapi/quota/quota_backend_impl_unittest.cc +++ b/storage/browser/fileapi/quota/quota_backend_impl_unittest.cc
@@ -18,7 +18,8 @@ #include "storage/browser/fileapi/obfuscated_file_util.h" #include "storage/browser/quota/quota_manager_proxy.h" #include "testing/gtest/include/gtest/gtest.h" -#include "third_party/leveldatabase/leveldb_chrome.h" +#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" using storage::FileSystemUsageCache; using storage::ObfuscatedFileUtil; @@ -101,7 +102,7 @@ void SetUp() override { ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); - in_memory_env_.reset(leveldb_chrome::NewMemEnv(leveldb::Env::Default())); + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); file_util_.reset(ObfuscatedFileUtil::CreateForTesting( NULL, data_dir_.GetPath(), in_memory_env_.get(), file_task_runner())); backend_.reset(new QuotaBackendImpl(file_task_runner(), file_util_.get(),
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl index 516c104..1d66062 100644 --- a/testing/buildbot/gn_isolate_map.pyl +++ b/testing/buildbot/gn_isolate_map.pyl
@@ -205,7 +205,7 @@ "type": "console_test_launcher", }, "breakpad_unittests": { - "label": "//third_party/breakpad:breakpad_unittests", + "label": "//breakpad:breakpad_unittests", "type": "console_test_launcher", }, "browser_tests": { @@ -458,7 +458,7 @@ "type": "console_test_launcher", }, "dump_syms" : { - "label": "//third_party/breakpad:dump_syms", + "label": "//breakpad:dump_syms", "type": "additional_compile_target", }, "events_unittests": { @@ -724,7 +724,7 @@ ], }, "microdump_stackwalk" : { - "label": "//third_party/breakpad:microdump_stackwalk", + "label": "//breakpad:microdump_stackwalk", "type": "additional_compile_target", }, "midi_unittests": {
diff --git a/third_party/.gitignore b/third_party/.gitignore index b6b1f611..e28b33b1 100644 --- a/third_party/.gitignore +++ b/third_party/.gitignore
@@ -29,7 +29,6 @@ /bison /boringssl/src /bouncycastle/lib/*.jar -/breakpad/breakpad /byte_buddy/lib/*.jar /cacheinvalidation/cacheinvalidation_unittests_run.xml /cardboard-java/src
diff --git a/third_party/WebKit/LayoutTests/css-parser/unclosed-open-brackets-crash.html b/third_party/WebKit/LayoutTests/css-parser/unclosed-open-brackets-crash.html new file mode 100644 index 0000000..d57ccbb --- /dev/null +++ b/third_party/WebKit/LayoutTests/css-parser/unclosed-open-brackets-crash.html
@@ -0,0 +1,8 @@ +<!DOCTYPE html> +<script src="../resources/testharness.js"></script> +<script src="../resources/testharnessreport.js"></script> +<script> +test(() => { + document.documentElement.style = 'content: ' + '('.repeat(60000) + '";'; +}, 'This test passes if it does not crash.'); +</script>
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index 2a9bce1d..f51e020c 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -297597,7 +297597,7 @@ "support" ], "webrtc/RTCPeerConnection-getStats.html": [ - "ca9ba3d9e1ce7d156c263bb20b7a05800a4c233a", + "1fc0c03ebd989d77c9d721b027a12a0cbbf24d53", "testharness" ], "webrtc/RTCPeerConnection-getTransceivers-expected.txt": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.html index 4124963ae..a4df563 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.html +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-getStats.html
@@ -109,7 +109,7 @@ const transceiver2 = pc.addTransceiver(track); assert_not_equals(transceiver1, transceiver2); - assert_not_equals(transciever1.sender, transceiver2.sender); + assert_not_equals(transceiver1.sender, transceiver2.sender); assert_equals(transceiver1.sender.track, transceiver2.sender.track); return promise_rejects(t, 'InvalidAccessError', pc.getStats(track)); @@ -125,7 +125,7 @@ const transceiver2 = pc.addTransceiver(transceiver1.receiver.track); assert_equals(transceiver1.receiver.track, transceiver2.sender.track); - return promise_rejects(t, 'InvalidAccessError', pc.getStats(track)); + return promise_rejects(t, 'InvalidAccessError', pc.getStats(transceiver1.receiver.track)); }, 'getStats() with track associated with both sender and receiver should reject with InvalidAccessError'); /*
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/rtl-negative-letter-spacing-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/rtl-negative-letter-spacing-expected.png index c1d26824..b122c68 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/text/international/rtl-negative-letter-spacing-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/text/international/rtl-negative-letter-spacing-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/rtl-negative-letter-spacing-expected.png b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/rtl-negative-letter-spacing-expected.png index 9bab65e6..a01fa405 100644 --- a/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/rtl-negative-letter-spacing-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win7/fast/text/international/rtl-negative-letter-spacing-expected.png Binary files differ
diff --git a/third_party/WebKit/Source/core/BUILD.gn b/third_party/WebKit/Source/core/BUILD.gn index c19648e..500eb67 100644 --- a/third_party/WebKit/Source/core/BUILD.gn +++ b/third_party/WebKit/Source/core/BUILD.gn
@@ -1391,6 +1391,7 @@ "dom/DOMImplementationTest.cpp", "dom/DocumentStatisticsCollectorTest.cpp", "dom/DocumentTest.cpp", + "dom/DynamicModuleResolverTest.cpp", "dom/ElementTest.cpp", "dom/ElementVisibilityObserverTest.cpp", "dom/FirstLetterPseudoElementTest.cpp",
diff --git a/third_party/WebKit/Source/core/animation/SampledEffect.cpp b/third_party/WebKit/Source/core/animation/SampledEffect.cpp index b6e30133..09df631 100644 --- a/third_party/WebKit/Source/core/animation/SampledEffect.cpp +++ b/third_party/WebKit/Source/core/animation/SampledEffect.cpp
@@ -25,7 +25,7 @@ size_t new_size = 0; for (auto& interpolation : interpolations_) { if (!replaced_properties.Contains(interpolation->GetProperty())) - interpolations_[new_size++].Swap(interpolation); + interpolations_[new_size++].swap(interpolation); } interpolations_.Shrink(new_size); }
diff --git a/third_party/WebKit/Source/core/css/parser/CSSVariableParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSVariableParser.cpp index 367fe981..f47c2d94 100644 --- a/third_party/WebKit/Source/core/css/parser/CSSVariableParser.cpp +++ b/third_party/WebKit/Source/core/css/parser/CSSVariableParser.cpp
@@ -26,57 +26,58 @@ bool ClassifyBlock(CSSParserTokenRange range, bool& has_references, - bool& has_at_apply_rule, - bool is_top_level_block = true) { + bool& has_at_apply_rule) { + size_t block_stack_size = 0; + while (!range.AtEnd()) { - if (range.Peek().GetBlockType() == CSSParserToken::kBlockStart) { - const CSSParserToken& token = range.Peek(); - CSSParserTokenRange block = range.ConsumeBlock(); - if (token.FunctionId() == CSSValueVar) { - if (!IsValidVariableReference(block, has_at_apply_rule)) - return false; // Bail if any references are invalid - has_references = true; - continue; - } - if (!ClassifyBlock(block, has_references, has_at_apply_rule, false)) - return false; - continue; + // First check if this is a valid variable reference, then handle the next + // token accordingly. + if (range.Peek().GetBlockType() == CSSParserToken::kBlockStart && + range.Peek().FunctionId() == CSSValueVar) { + CSSParserTokenRange copy = range; + if (!IsValidVariableReference(copy.ConsumeBlock(), has_at_apply_rule)) + return false; // Bail if any references are invalid + has_references = true; } - DCHECK_NE(range.Peek().GetBlockType(), CSSParserToken::kBlockEnd); - const CSSParserToken& token = range.Consume(); - switch (token.GetType()) { - case kAtKeywordToken: { - if (EqualIgnoringASCIICase(token.Value(), "apply")) { - range.ConsumeWhitespace(); - const CSSParserToken& variable_name = - range.ConsumeIncludingWhitespace(); - if (!CSSVariableParser::IsValidVariableName(variable_name) || - !(range.AtEnd() || range.Peek().GetType() == kSemicolonToken || - range.Peek().GetType() == kRightBraceToken)) - return false; - has_at_apply_rule = true; + if (token.GetBlockType() == CSSParserToken::kBlockStart) { + ++block_stack_size; + } else if (token.GetBlockType() == CSSParserToken::kBlockEnd) { + --block_stack_size; + } else { + switch (token.GetType()) { + case kAtKeywordToken: { + if (EqualIgnoringASCIICase(token.Value(), "apply")) { + range.ConsumeWhitespace(); + const CSSParserToken& variable_name = + range.ConsumeIncludingWhitespace(); + if (!CSSVariableParser::IsValidVariableName(variable_name) || + !(range.AtEnd() || range.Peek().GetType() == kSemicolonToken || + range.Peek().GetType() == kRightBraceToken)) + return false; + has_at_apply_rule = true; + } + break; } - break; - } - case kDelimiterToken: { - if (token.Delimiter() == '!' && is_top_level_block) + case kDelimiterToken: { + if (token.Delimiter() == '!' && block_stack_size == 0) + return false; + break; + } + case kRightParenthesisToken: + case kRightBraceToken: + case kRightBracketToken: + case kBadStringToken: + case kBadUrlToken: return false; - break; + case kSemicolonToken: + if (block_stack_size == 0) + return false; + break; + default: + break; } - case kRightParenthesisToken: - case kRightBraceToken: - case kRightBracketToken: - case kBadStringToken: - case kBadUrlToken: - return false; - case kSemicolonToken: - if (is_top_level_block) - return false; - break; - default: - break; } } return true;
diff --git a/third_party/WebKit/Source/core/dom/BUILD.gn b/third_party/WebKit/Source/core/dom/BUILD.gn index 3ff9d70c..eca84a2 100644 --- a/third_party/WebKit/Source/core/dom/BUILD.gn +++ b/third_party/WebKit/Source/core/dom/BUILD.gn
@@ -104,6 +104,8 @@ "DocumentType.h", "DocumentWriteIntervention.cpp", "DocumentWriteIntervention.h", + "DynamicModuleResolver.cpp", + "DynamicModuleResolver.h", "Element.cpp", "Element.h", "ElementData.cpp",
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp b/third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp new file mode 100644 index 0000000..8176720 --- /dev/null +++ b/third_party/WebKit/Source/core/dom/DynamicModuleResolver.cpp
@@ -0,0 +1,209 @@ +// 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 "core/dom/DynamicModuleResolver.h" + +#include "bindings/core/v8/ExceptionState.h" +#include "bindings/core/v8/ReferrerScriptInfo.h" +#include "bindings/core/v8/ScriptPromiseResolver.h" +#include "core/dom/Modulator.h" +#include "core/dom/ModuleScript.h" +#include "core/loader/modulescript/ModuleScriptFetchRequest.h" +#include "platform/bindings/V8ThrowException.h" +#include "v8/include/v8.h" + +namespace blink { + +namespace { + +class DynamicImportTreeClient final : public ModuleTreeClient { + public: + static DynamicImportTreeClient* Create( + const KURL& url, + Modulator* modulator, + ScriptPromiseResolver* promise_resolver) { + return new DynamicImportTreeClient(url, modulator, promise_resolver); + } + + DECLARE_TRACE(); + + private: + DynamicImportTreeClient(const KURL& url, + Modulator* modulator, + ScriptPromiseResolver* promise_resolver) + : url_(url), modulator_(modulator), promise_resolver_(promise_resolver) {} + + // Implements ModuleTreeClient: + void NotifyModuleTreeLoadFinished(ModuleScript*) final; + + const KURL url_; + const Member<Modulator> modulator_; + const Member<ScriptPromiseResolver> promise_resolver_; +}; + +void DynamicImportTreeClient::NotifyModuleTreeLoadFinished( + ModuleScript* module_script) { + // Implements steps 2.[5-8] of + // https://html.spec.whatwg.org/multipage/webappapis.html#hostimportmoduledynamically(referencingscriptormodule,-specifier,-promisecapability) + + // [nospec] Abort the steps if the browsing context is discarded. + if (!modulator_->HasValidContext()) { + // The promise_resolver_ should have ::Detach()-ed at this point, + // so ::Reject() is not necessary. + return; + } + + ScriptState* script_state = modulator_->GetScriptState(); + ScriptState::Scope scope(script_state); + v8::Isolate* isolate = script_state->GetIsolate(); + + // Step 2.5. "If result is null, then:" [spec text] + if (!module_script) { + // Step 2.5.1. "Let completion be Completion { [[Type]]: throw, [[Value]]: a + // new TypeError, [[Target]]: empty }." [spec text] + v8::Local<v8::Value> error = V8ThrowException::CreateTypeError( + isolate, + "Failed to fetch dynamically imported module: " + url_.GetString()); + + // Step 2.5.2. "Perform FinishDynamicImport(referencingScriptOrModule, + // specifier, promiseCapability, completion)." [spec text] + promise_resolver_->Reject(error); + + // Step 2.5.3. "Abort these steps." + return; + } + + // Step 2.6. "Run the module script module script, with the rethrow errors + // boolean set to true." [spec text] + ScriptValue error = + modulator_->ExecuteModule(module_script, CaptureEvalErrorFlag::kCapture); + + // Step 2.7. "If running the module script throws an exception, ..." [spec + // text] + if (!error.IsEmpty()) { + // "... then perform FinishDynamicImport(referencingScriptOrModule, + // specifier, promiseCapability, the thrown exception completion)." + // [spec text] + // Note: "the thrown exception completion" is |error|. + // https://tc39.github.io/proposal-dynamic-import/#sec-finishdynamicimport + // Step 1. "If completion is an abrupt completion, then perform ! + // Call(promiseCapability.[[Reject]], undefined, << completion.[[Value]] + // >>)." [spec text] + promise_resolver_->Reject(error); + return; + } + + // Step 2.8. "Otherwise, perform + // FinishDynamicImport(referencingScriptOrModule, specifier, + // promiseCapability, NormalCompletion(undefined))." [spec text] + // https://tc39.github.io/proposal-dynamic-import/#sec-finishdynamicimport + // Step 2.a. "Assert: completion is a normal completion and + // completion.[[Value]] is undefined." [spec text] + DCHECK(error.IsEmpty()); + + // Step 2.b. "Let moduleRecord be + // !HostResolveImportedModule(referencingScriptOrModule, specifierString)." + // [spec text] + // Note: We skip invocation of ScriptModuleResolver here. The + // result of HostResolveImportedModule is guaranteed to be |module_script|. + ScriptModule record = module_script->Record(); + DCHECK(!record.IsNull()); + + // Step 2.c. "Assert: ModuleEvaluation has already been invoked on + // moduleRecord and successfully completed." [spec text] + DCHECK_EQ(ScriptModuleState::kEvaluated, modulator_->GetRecordStatus(record)); + + // Step 2.d. "Let namespace be GetModuleNamespace(moduleRecord)." [spec text] + v8::Local<v8::Value> module_namespace = record.V8Namespace(isolate); + + // Step 2.e. "If namespace is an abrupt completion, perform + // !Call(promiseCapability.[[Reject]], undefined, << namespace.[[Value]] >>)." + // [spec text] + // Note: Blink's implementation never allows |module_namespace| to be + // an abrupt completion. + + // Step 2.f "Otherwise, perform ! Call(promiseCapability.[[Resolve]], + // undefined, << namespace.[[Value]] >>)." [spec text] + promise_resolver_->Resolve(module_namespace); +} + +DEFINE_TRACE(DynamicImportTreeClient) { + visitor->Trace(modulator_); + visitor->Trace(promise_resolver_); + ModuleTreeClient::Trace(visitor); +} + +} // namespace + +DEFINE_TRACE(DynamicModuleResolver) { + visitor->Trace(modulator_); +} + +void DynamicModuleResolver::ResolveDynamically( + const String& specifier, + const String& referrer_url_str, + const ReferrerScriptInfo& referrer_info, + ScriptPromiseResolver* promise_resolver) { + DCHECK(modulator_->GetScriptState()->GetIsolate()->InContext()) + << "ResolveDynamically should be called from V8 callback, within a valid " + "context."; + + // https://html.spec.whatwg.org/multipage/webappapis.html#hostimportmoduledynamically(referencingscriptormodule,-specifier,-promisecapability) + // Step 1. "Let referencing script be + // referencingScriptOrModule.[[HostDefined]]." [spec text] + + // Step 2. "Run the following steps in parallel:" + + // Step 2.1. "Let url be the result of resolving a module specifier + // given referencing script and specifier." [spec text] + KURL referrer_url = KURL(NullURL(), referrer_url_str); + DCHECK(referrer_url.IsValid()); + KURL url = Modulator::ResolveModuleSpecifier(specifier, referrer_url); + if (!url.IsValid()) { + // Step 2.2.1. "If the result is failure, then:" [spec text] + // Step 2.2.2.1. "Let completion be Completion { [[Type]]: throw, [[Value]]: + // a new TypeError, [[Target]]: empty }." [spec text] + v8::Isolate* isolate = modulator_->GetScriptState()->GetIsolate(); + v8::Local<v8::Value> error = V8ThrowException::CreateTypeError( + isolate, "Failed to resolve module specifier '" + specifier + "'"); + + // Step 2.2.2.2. "Perform FinishDynamicImport(referencingScriptOrModule, + // specifier, promiseCapability, completion)" [spec text] + // https://tc39.github.io/proposal-dynamic-import/#sec-finishdynamicimport + // Step 1. "If completion is an abrupt completion, then perform + // !Call(promiseCapability.[[Reject]], undefined, <<completion.[[Value]]>>). + // " [spec text] + promise_resolver->Reject(error); + + // Step 2.2.2.3. "Abort these steps." [spec text] + return; + } + + // Step 2.3. "Let options be the descendant script fetch options for + // referencing script's fetch options." [spec text] + // https://html.spec.whatwg.org/multipage/webappapis.html#descendant-script-fetch-options + // "For any given script fetch options options, the descendant script fetch + // options are a new script fetch options whose items all have the same + // values, except for the integrity metadata, which is instead the empty + // string." [spec text] + WebURLRequest::FetchCredentialsMode credentials_mode = + referrer_info.CredentialsMode(); + const String& nonce = referrer_info.Nonce(); + ParserDisposition parser_state = referrer_info.ParserState(); + ModuleScriptFetchRequest request(url, nonce, parser_state, credentials_mode); + + // Step 2.4. "Fetch a module script graph given url, settings object, + // "script", and options. Wait until the algorithm asynchronously completes + // with result." + auto tree_client = + DynamicImportTreeClient::Create(url, modulator_.Get(), promise_resolver); + modulator_->FetchTree(request, tree_client); + + // Steps 2.[5-8] are implemented at + // DynamicImportTreeClient::NotifyModuleLoadFinished. + + // Step 3. "Return undefined." [spec text] +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolver.h b/third_party/WebKit/Source/core/dom/DynamicModuleResolver.h new file mode 100644 index 0000000..912a105 --- /dev/null +++ b/third_party/WebKit/Source/core/dom/DynamicModuleResolver.h
@@ -0,0 +1,47 @@ +// 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 DynamicModuleResolver_h +#define DynamicModuleResolver_h + +#include "core/CoreExport.h" +#include "platform/heap/Handle.h" +#include "platform/heap/Visitor.h" +#include "platform/wtf/text/WTFString.h" + +namespace blink { + +class Modulator; +class ReferrerScriptInfo; +class ScriptPromiseResolver; + +// DynamicModuleResolver implements "Runtime Semantics: +// HostImportModuleDynamically" per spec. +// https://tc39.github.io/proposal-dynamic-import/#sec-hostimportmoduledynamically +class CORE_EXPORT DynamicModuleResolver final + : public GarbageCollected<DynamicModuleResolver> { + public: + DECLARE_TRACE(); + + static DynamicModuleResolver* Create(Modulator* modulator) { + return new DynamicModuleResolver(modulator); + } + + // Implements "HostImportModuleDynamically" semantics. + // Should be called w/ a valid V8 context. + void ResolveDynamically(const String& specifier, + const String& referrer_url, + const ReferrerScriptInfo& referrer_info, + ScriptPromiseResolver*); + + private: + explicit DynamicModuleResolver(Modulator* modulator) + : modulator_(modulator) {} + + Member<Modulator> modulator_; +}; + +} // namespace blink + +#endif // DynamicModuleResolver_h
diff --git a/third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp b/third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp new file mode 100644 index 0000000..c22b432a --- /dev/null +++ b/third_party/WebKit/Source/core/dom/DynamicModuleResolverTest.cpp
@@ -0,0 +1,304 @@ +// 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 "core/dom/DynamicModuleResolver.h" + +#include "bindings/core/v8/ReferrerScriptInfo.h" +#include "bindings/core/v8/ScriptFunction.h" +#include "bindings/core/v8/ScriptPromiseResolver.h" +#include "bindings/core/v8/ScriptValue.h" +#include "bindings/core/v8/V8BindingForCore.h" +#include "bindings/core/v8/V8BindingForTesting.h" +#include "core/dom/ModuleScript.h" +#include "core/loader/modulescript/ModuleScriptFetchRequest.h" +#include "core/testing/DummyModulator.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "v8/include/v8.h" + +namespace blink { + +namespace { + +constexpr const char* kTestReferrerURL = "https://example.com/referrer.js"; +constexpr const char* kTestDependencyURL = "https://example.com/dependency.js"; + +class DynamicModuleResolverTestModulator final : public DummyModulator { + public: + explicit DynamicModuleResolverTestModulator(ScriptState* script_state) + : script_state_(script_state) {} + ~DynamicModuleResolverTestModulator() override = default; + + void ResolveTreeFetch(ModuleScript* module_script) { + ASSERT_TRUE(pending_client_); + pending_client_->NotifyModuleTreeLoadFinished(module_script); + pending_client_ = nullptr; + } + + DECLARE_TRACE(); + + private: + // Implements Modulator: + ScriptState* GetScriptState() final { return script_state_.Get(); } + + ModuleScript* GetFetchedModuleScript(const KURL& url) final { + EXPECT_EQ(kTestReferrerURL, url.GetString()); + ModuleScript* module_script = ModuleScript::CreateForTest( + this, ScriptModule(), url, "nonce", kParserInserted, + WebURLRequest::kFetchCredentialsModeOmit); + return module_script; + } + + void FetchTree(const ModuleScriptFetchRequest& request, + ModuleTreeClient* client) final { + EXPECT_EQ(kTestDependencyURL, request.Url().GetString()); + + pending_client_ = client; + } + + ScriptValue ExecuteModule(const ModuleScript* module_script, + CaptureEvalErrorFlag capture_error) final { + EXPECT_EQ(CaptureEvalErrorFlag::kCapture, capture_error); + + ScriptState::Scope scope(script_state_.Get()); + return module_script->Record().Evaluate(script_state_.Get(), + CaptureEvalErrorFlag::kCapture); + } + + ScriptModuleState GetRecordStatus(ScriptModule script_module) final { + ScriptState::Scope scope(script_state_.Get()); + return script_module.Status(script_state_.Get()); + } + + ScriptValue GetError(const ModuleScript* module_script) final { + ScriptState::Scope scope(script_state_.Get()); + ScriptModule record = module_script->Record(); + DCHECK(!record.IsNull()); + return ScriptValue(script_state_.Get(), + record.ErrorCompletion(script_state_.Get())); + } + + RefPtr<ScriptState> script_state_; + Member<ModuleTreeClient> pending_client_; +}; + +DEFINE_TRACE(DynamicModuleResolverTestModulator) { + visitor->Trace(pending_client_); + DummyModulator::Trace(visitor); +} + +// CaptureExportedStringFunction implements a javascript function +// with a single argument of type module namespace. +// CaptureExportedStringFunction captures the exported string value +// from the module namespace as a blink::String, exposed via CapturedValue(). +class CaptureExportedStringFunction final : public ScriptFunction { + public: + CaptureExportedStringFunction(ScriptState* script_state, + const String& export_name) + : ScriptFunction(script_state), export_name_(export_name) {} + + v8::Local<v8::Function> Bind() { return BindToV8Function(); } + bool WasCalled() const { return was_called_; } + const String& CapturedValue() const { return captured_value_; } + + private: + ScriptValue Call(ScriptValue value) override { + was_called_ = true; + + v8::Isolate* isolate = GetScriptState()->GetIsolate(); + v8::Local<v8::Context> context = GetScriptState()->GetContext(); + + v8::Local<v8::Object> module_namespace = + value.V8Value()->ToObject(context).ToLocalChecked(); + v8::Local<v8::Value> exported_value = + module_namespace->Get(context, V8String(isolate, export_name_)) + .ToLocalChecked(); + captured_value_ = ToCoreString(exported_value->ToString()); + + return ScriptValue(); + } + + const String export_name_; + bool was_called_ = false; + String captured_value_; +}; + +// CaptureErrorFunction implements a javascript function which captures +// name and error of the exception passed as its argument. +class CaptureErrorFunction final : public ScriptFunction { + public: + explicit CaptureErrorFunction(ScriptState* script_state) + : ScriptFunction(script_state) {} + + v8::Local<v8::Function> Bind() { return BindToV8Function(); } + bool WasCalled() const { return was_called_; } + const String& Name() const { return name_; } + const String& Message() const { return message_; } + + private: + ScriptValue Call(ScriptValue value) override { + was_called_ = true; + + v8::Isolate* isolate = GetScriptState()->GetIsolate(); + v8::Local<v8::Context> context = GetScriptState()->GetContext(); + + v8::Local<v8::Object> error_object = + value.V8Value()->ToObject(context).ToLocalChecked(); + + v8::Local<v8::Value> name = + error_object->Get(context, V8String(isolate, "name")).ToLocalChecked(); + name_ = ToCoreString(name->ToString()); + v8::Local<v8::Value> message = + error_object->Get(context, V8String(isolate, "message")) + .ToLocalChecked(); + message_ = ToCoreString(message->ToString()); + + return ScriptValue(); + } + + bool was_called_ = false; + String name_; + String message_; +}; + +class NotReached final : public ScriptFunction { + public: + static v8::Local<v8::Function> CreateFunction(ScriptState* script_state) { + auto not_reached = new NotReached(script_state); + return not_reached->BindToV8Function(); + } + + private: + explicit NotReached(ScriptState* script_state) + : ScriptFunction(script_state) {} + + ScriptValue Call(ScriptValue) override { + ADD_FAILURE(); + return ScriptValue(); + } +}; + +} // namespace + +TEST(DynamicModuleResolverTest, ResolveSuccess) { + V8TestingScope scope; + DynamicModuleResolverTestModulator* modulator = + new DynamicModuleResolverTestModulator(scope.GetScriptState()); + + auto promise_resolver = ScriptPromiseResolver::Create(scope.GetScriptState()); + ScriptPromise promise = promise_resolver->Promise(); + + auto capture = + new CaptureExportedStringFunction(scope.GetScriptState(), "foo"); + promise.Then(capture->Bind(), + NotReached::CreateFunction(scope.GetScriptState())); + + auto resolver = DynamicModuleResolver::Create(modulator); + resolver->ResolveDynamically("./dependency.js", kTestReferrerURL, + ReferrerScriptInfo(), promise_resolver); + + v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate()); + EXPECT_FALSE(capture->WasCalled()); + + KURL url(kParsedURLString, kTestDependencyURL); + ScriptModule record = ScriptModule::Compile( + scope.GetIsolate(), "export const foo = 'hello';", url.GetString(), + kSharableCrossOrigin, WebURLRequest::kFetchCredentialsModeOmit, "", + kParserInserted, TextPosition::MinimumPosition(), ASSERT_NO_EXCEPTION); + ModuleScript* module_script = ModuleScript::CreateForTest( + modulator, record, url, "nonce", kNotParserInserted, + WebURLRequest::kFetchCredentialsModeOmit); + record.Instantiate(scope.GetScriptState()); + EXPECT_FALSE(module_script->IsErrored()); + modulator->ResolveTreeFetch(module_script); + + v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate()); + EXPECT_TRUE(capture->WasCalled()); + EXPECT_EQ("hello", capture->CapturedValue()); +} + +TEST(DynamicModuleResolverTest, ResolveSpecifierFailure) { + V8TestingScope scope; + auto modulator = + new DynamicModuleResolverTestModulator(scope.GetScriptState()); + + auto promise_resolver = ScriptPromiseResolver::Create(scope.GetScriptState()); + ScriptPromise promise = promise_resolver->Promise(); + + auto capture = new CaptureErrorFunction(scope.GetScriptState()); + promise.Then(NotReached::CreateFunction(scope.GetScriptState()), + capture->Bind()); + + auto resolver = DynamicModuleResolver::Create(modulator); + resolver->ResolveDynamically("invalid-specifier", kTestReferrerURL, + ReferrerScriptInfo(), promise_resolver); + + v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate()); + EXPECT_TRUE(capture->WasCalled()); + EXPECT_EQ("TypeError", capture->Name()); + EXPECT_TRUE(capture->Message().StartsWith("Failed to resolve")); +} + +TEST(DynamicModuleResolverTest, FetchFailure) { + V8TestingScope scope; + auto modulator = + new DynamicModuleResolverTestModulator(scope.GetScriptState()); + + auto promise_resolver = ScriptPromiseResolver::Create(scope.GetScriptState()); + ScriptPromise promise = promise_resolver->Promise(); + + auto capture = new CaptureErrorFunction(scope.GetScriptState()); + promise.Then(NotReached::CreateFunction(scope.GetScriptState()), + capture->Bind()); + + auto resolver = DynamicModuleResolver::Create(modulator); + resolver->ResolveDynamically("./dependency.js", kTestReferrerURL, + ReferrerScriptInfo(), promise_resolver); + + EXPECT_FALSE(capture->WasCalled()); + + modulator->ResolveTreeFetch(nullptr); + + v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate()); + EXPECT_TRUE(capture->WasCalled()); + EXPECT_EQ("TypeError", capture->Name()); + EXPECT_TRUE(capture->Message().StartsWith("Failed to fetch")); +} + +TEST(DynamicModuleResolverTest, ExceptionThrown) { + V8TestingScope scope; + auto modulator = + new DynamicModuleResolverTestModulator(scope.GetScriptState()); + + auto promise_resolver = ScriptPromiseResolver::Create(scope.GetScriptState()); + ScriptPromise promise = promise_resolver->Promise(); + + auto capture = new CaptureErrorFunction(scope.GetScriptState()); + promise.Then(NotReached::CreateFunction(scope.GetScriptState()), + capture->Bind()); + + auto resolver = DynamicModuleResolver::Create(modulator); + resolver->ResolveDynamically("./dependency.js", kTestReferrerURL, + ReferrerScriptInfo(), promise_resolver); + + EXPECT_FALSE(capture->WasCalled()); + + KURL url(kParsedURLString, kTestDependencyURL); + ScriptModule record = ScriptModule::Compile( + scope.GetIsolate(), "throw Error('bar')", url.GetString(), + kSharableCrossOrigin, WebURLRequest::kFetchCredentialsModeOmit, "", + kParserInserted, TextPosition::MinimumPosition(), ASSERT_NO_EXCEPTION); + ModuleScript* module_script = ModuleScript::CreateForTest( + modulator, record, url, "nonce", kNotParserInserted, + WebURLRequest::kFetchCredentialsModeOmit); + record.Instantiate(scope.GetScriptState()); + EXPECT_FALSE(module_script->IsErrored()); + modulator->ResolveTreeFetch(module_script); + + v8::MicrotasksScope::PerformCheckpoint(scope.GetIsolate()); + EXPECT_TRUE(capture->WasCalled()); + EXPECT_EQ("Error", capture->Name()); + EXPECT_EQ("bar", capture->Message()); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/editing/LayoutSelection.cpp b/third_party/WebKit/Source/core/editing/LayoutSelection.cpp index b598598..1e2b445 100644 --- a/third_party/WebKit/Source/core/editing/LayoutSelection.cpp +++ b/third_party/WebKit/Source/core/editing/LayoutSelection.cpp
@@ -185,6 +185,23 @@ DISALLOW_COPY_AND_ASSIGN(PaintInvalidationSet); }; +#ifndef NDEBUG +void PrintPaintInvalidationSet(const PaintInvalidationSet& invalidation_set) { + std::stringstream stream; + stream << std::endl << "layout_objects:" << std::endl; + for (LayoutObject* layout_object : invalidation_set.layout_objects) { + PrintLayoutObjectForSelection(stream, layout_object); + stream << std::endl; + } + stream << "layout_blocks:" << std::endl; + for (LayoutBlock* layout_object : invalidation_set.layout_blocks) { + PrintLayoutObjectForSelection(stream, layout_object); + stream << std::endl; + } + LOG(INFO) << stream.str(); +} +#endif + static void InsertLayoutObjectAndAncestorBlocks( PaintInvalidationSet* invalidation_set, LayoutObject* layout_object) { @@ -724,7 +741,7 @@ ostream << "<null>"; return; } - ostream << layout_object->GetNode() + ostream << (void*)layout_object << ' ' << layout_object->GetNode() << ", state:" << layout_object->GetSelectionState() << (layout_object->ShouldInvalidateSelection() ? ", ShouldInvalidate" : ", NotInvalidate");
diff --git a/third_party/WebKit/Source/core/exported/WebNode.cpp b/third_party/WebKit/Source/core/exported/WebNode.cpp index a4a2d5aa..3a8662b1 100644 --- a/third_party/WebKit/Source/core/exported/WebNode.cpp +++ b/third_party/WebKit/Source/core/exported/WebNode.cpp
@@ -187,6 +187,22 @@ ->QuerySelector(selector, IGNORE_EXCEPTION_FOR_TESTING); } +WebVector<WebElement> WebNode::QuerySelectorAll( + const WebString& selector) const { + if (!private_->IsContainerNode()) + return WebVector<WebElement>(); + StaticElementList* elements = + ToContainerNode(private_.Get()) + ->QuerySelectorAll(selector, IGNORE_EXCEPTION_FOR_TESTING); + if (elements) { + WebVector<WebElement> vector((size_t)elements->length()); + for (unsigned i = 0; i < elements->length(); ++i) + vector[i] = elements->item(i); + return vector; + } + return WebVector<WebElement>(); +} + bool WebNode::Focused() const { return private_->IsFocused(); }
diff --git a/third_party/WebKit/Source/core/layout/BUILD.gn b/third_party/WebKit/Source/core/layout/BUILD.gn index e04fb35..2ef2b47 100644 --- a/third_party/WebKit/Source/core/layout/BUILD.gn +++ b/third_party/WebKit/Source/core/layout/BUILD.gn
@@ -234,8 +234,8 @@ "TextAutosizer.h", "TextDecorationOffset.cpp", "TextDecorationOffset.h", - "TextDecorationOffsetBase", "TextDecorationOffsetBase.cpp", + "TextDecorationOffsetBase.h", "TextRunConstructor.cpp", "TextRunConstructor.h", "TracedLayoutObject.cpp",
diff --git a/third_party/WebKit/Source/core/layout/TextDecorationOffset.cpp b/third_party/WebKit/Source/core/layout/TextDecorationOffset.cpp index 75fe76dd..f2801baa6 100644 --- a/third_party/WebKit/Source/core/layout/TextDecorationOffset.cpp +++ b/third_party/WebKit/Source/core/layout/TextDecorationOffset.cpp
@@ -11,7 +11,7 @@ int TextDecorationOffset::ComputeUnderlineOffsetForUnder( float text_decoration_thickness, - LineVerticalPositionType position_type) { + LineVerticalPositionType position_type) const { const RootInlineBox& root = inline_text_box_->Root(); FontBaseline baseline_type = root.BaselineType(); LayoutUnit offset = inline_text_box_->OffsetTo(position_type, baseline_type);
diff --git a/third_party/WebKit/Source/core/layout/TextDecorationOffset.h b/third_party/WebKit/Source/core/layout/TextDecorationOffset.h index ea115c4..57ab82b 100644 --- a/third_party/WebKit/Source/core/layout/TextDecorationOffset.h +++ b/third_party/WebKit/Source/core/layout/TextDecorationOffset.h
@@ -27,7 +27,7 @@ ~TextDecorationOffset() {} int ComputeUnderlineOffsetForUnder(float text_decoration_thickness, - LineVerticalPositionType) override; + LineVerticalPositionType) const override; private: const InlineTextBox* inline_text_box_;
diff --git a/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.cpp b/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.cpp index 022e11a..3bfaaea2 100644 --- a/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.cpp +++ b/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.cpp
@@ -11,7 +11,7 @@ int TextDecorationOffsetBase::ComputeUnderlineOffsetForRoman( const FontMetrics& font_metrics, - float text_decoration_thickness) { + float text_decoration_thickness) const { // Compute the gap between the font and the underline. Use at least one // pixel gap, if underline is thick then use a bigger gap. int gap = 0; @@ -34,7 +34,7 @@ int TextDecorationOffsetBase::ComputeUnderlineOffset( ResolvedUnderlinePosition underline_position, const FontMetrics& font_metrics, - float text_decoration_thickness) { + float text_decoration_thickness) const { switch (underline_position) { default: NOTREACHED();
diff --git a/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.h b/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.h index 9c046b03..d7eaf2c 100644 --- a/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.h +++ b/third_party/WebKit/Source/core/layout/TextDecorationOffsetBase.h
@@ -23,15 +23,16 @@ TextDecorationOffsetBase(const ComputedStyle& style) : style_(style) {} ~TextDecorationOffsetBase() {} - virtual int ComputeUnderlineOffsetForUnder(float text_decoration_thickness, - LineVerticalPositionType) = 0; + virtual int ComputeUnderlineOffsetForUnder( + float text_decoration_thickness, + LineVerticalPositionType) const = 0; int ComputeUnderlineOffsetForRoman(const FontMetrics&, - float text_decoration_thickness); + float text_decoration_thickness) const; int ComputeUnderlineOffset(ResolvedUnderlinePosition, const FontMetrics&, - float text_decoration_thickness); + float text_decoration_thickness) const; protected: const ComputedStyle& style_;
diff --git a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp index 65e70f9..26f90ac9 100644 --- a/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp +++ b/third_party/WebKit/Source/core/layout/line/InlineFlowBox.cpp
@@ -1106,12 +1106,6 @@ std::max(bottom_glyph_overflow, emphasis_mark_height); } - // If letter-spacing is negative, we should factor that into right layout - // overflow. Even in RTL, letter-spacing is applied to the right, so this is - // not an issue with left overflow. - right_glyph_overflow -= - std::min(0.0f, style.GetFont().GetFontDescription().LetterSpacing()); - LayoutRectOutsets text_shadow_logical_outsets; if (ShadowList* text_shadow = style.TextShadow()) { text_shadow_logical_outsets =
diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_physical_text_fragment.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_physical_text_fragment.cc index 05ce8f3f..d910224 100644 --- a/third_party/WebKit/Source/core/layout/ng/inline/ng_physical_text_fragment.cc +++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_physical_text_fragment.cc
@@ -40,10 +40,6 @@ // TODO(kojii): Implement emphasis marks. - // letter-spacing, including negative, is built into ShapeResult. - // No need to take it into account here. - // TODO(kojii): Is this ture? Need to test. - if (ShadowList* text_shadow = style.TextShadow()) { // TODO(kojii): Implement text shadow. }
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp index 7b898eab..f4b1516 100644 --- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp +++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp
@@ -132,61 +132,6 @@ } } -static void PaintDecorationsExceptLineThrough( - TextPainter& text_painter, - bool& has_line_through_decoration, - const InlineTextBox& box, - const DecorationInfo& decoration_info, - const LineLayoutItem& decorating_box, - const PaintInfo& paint_info, - const Vector<AppliedTextDecoration>& decorations) { - GraphicsContext& context = paint_info.context; - GraphicsContextStateSaver state_saver(context); - context.SetStrokeThickness(decoration_info.thickness); - - // text-underline-position may flip underline and overline. - ResolvedUnderlinePosition underline_position = - decoration_info.underline_position; - bool flip_underline_and_overline = false; - if (underline_position == ResolvedUnderlinePosition::kOver) { - flip_underline_and_overline = true; - underline_position = ResolvedUnderlinePosition::kUnder; - } - - TextDecorationOffset decoration_offset(*decoration_info.style, &box, - decorating_box); - for (const AppliedTextDecoration& decoration : decorations) { - TextDecoration lines = decoration.Lines(); - bool has_underline = EnumHasFlags(lines, TextDecoration::kUnderline); - bool has_overline = EnumHasFlags(lines, TextDecoration::kOverline); - if (flip_underline_and_overline) - std::swap(has_underline, has_overline); - if (has_underline && decoration_info.font_data) { - const int underline_offset = decoration_offset.ComputeUnderlineOffset( - underline_position, decoration_info.font_data->GetFontMetrics(), - decoration_info.thickness); - text_painter.PaintDecorationUnderOrOverLine( - context, decoration_info, decoration, underline_offset, - decoration_info.double_offset); - } - if (has_overline) { - const int overline_offset = - decoration_offset.ComputeUnderlineOffsetForUnder( - decoration_info.thickness, - flip_underline_and_overline - ? LineVerticalPositionType::TopOfEmHeight - : LineVerticalPositionType::TextTop); - text_painter.PaintDecorationUnderOrOverLine( - context, decoration_info, decoration, overline_offset, - -decoration_info.double_offset); - } - // We could instead build a vector of the TextDecoration instances needing - // line-through but this is a rare case so better to avoid vector overhead. - has_line_through_decoration |= - EnumHasFlags(lines, TextDecoration::kLineThrough); - } -} - void InlineTextBoxPainter::Paint(const PaintInfo& paint_info, const LayoutPoint& paint_offset) { if (!ShouldPaintTextBox(paint_info)) @@ -430,10 +375,12 @@ PrepareContextForDecoration(context, state_saver, inline_text_box_.IsHorizontal(), text_style, combined_text, box_rect); - PaintDecorationsExceptLineThrough( - text_painter, has_line_through_decoration, inline_text_box_, - decoration_info, decorating_box, paint_info, - style_to_use.AppliedTextDecorations()); + + TextDecorationOffset decoration_offset(*decoration_info.style, + &inline_text_box_, decorating_box); + text_painter.PaintDecorationsExceptLineThrough( + decoration_offset, decoration_info, paint_info, + style_to_use.AppliedTextDecorations(), &has_line_through_decoration); RestoreContextFromDecoration(context, combined_text, box_rect); }
diff --git a/third_party/WebKit/Source/core/paint/TextPainterBase.cpp b/third_party/WebKit/Source/core/paint/TextPainterBase.cpp index e1ef2616..e3d9847 100644 --- a/third_party/WebKit/Source/core/paint/TextPainterBase.cpp +++ b/third_party/WebKit/Source/core/paint/TextPainterBase.cpp
@@ -5,6 +5,8 @@ #include "core/paint/TextPainterBase.h" #include "core/dom/Document.h" +#include "core/layout/TextDecorationOffsetBase.h" +#include "core/layout/line/LineVerticalPositionType.h" #include "core/paint/AppliedDecorationPainter.h" #include "core/paint/BoxPainterBase.h" #include "core/paint/PaintInfo.h" @@ -184,6 +186,60 @@ } } +void TextPainterBase::PaintDecorationsExceptLineThrough( + const TextDecorationOffsetBase& decoration_offset, + const DecorationInfo& decoration_info, + const PaintInfo& paint_info, + const Vector<AppliedTextDecoration>& decorations, + bool* has_line_through_decoration) { + GraphicsContext& context = paint_info.context; + GraphicsContextStateSaver state_saver(context); + context.SetStrokeThickness(decoration_info.thickness); + + // text-underline-position may flip underline and overline. + ResolvedUnderlinePosition underline_position = + decoration_info.underline_position; + bool flip_underline_and_overline = false; + if (underline_position == ResolvedUnderlinePosition::kOver) { + flip_underline_and_overline = true; + underline_position = ResolvedUnderlinePosition::kUnder; + } + + for (const AppliedTextDecoration& decoration : decorations) { + TextDecoration lines = decoration.Lines(); + bool has_underline = EnumHasFlags(lines, TextDecoration::kUnderline); + bool has_overline = EnumHasFlags(lines, TextDecoration::kOverline); + if (flip_underline_and_overline) + std::swap(has_underline, has_overline); + + if (has_underline && decoration_info.font_data) { + const int underline_offset = decoration_offset.ComputeUnderlineOffset( + underline_position, decoration_info.font_data->GetFontMetrics(), + decoration_info.thickness); + PaintDecorationUnderOrOverLine(context, decoration_info, decoration, + underline_offset, + decoration_info.double_offset); + } + + if (has_overline) { + LineVerticalPositionType position = + flip_underline_and_overline ? LineVerticalPositionType::TopOfEmHeight + : LineVerticalPositionType::TextTop; + const int overline_offset = + decoration_offset.ComputeUnderlineOffsetForUnder( + decoration_info.thickness, position); + PaintDecorationUnderOrOverLine(context, decoration_info, decoration, + overline_offset, + -decoration_info.double_offset); + } + + // We could instead build a vector of the TextDecoration instances needing + // line-through but this is a rare case so better to avoid vector overhead. + *has_line_through_decoration |= + EnumHasFlags(lines, TextDecoration::kLineThrough); + } +} + void TextPainterBase::PaintDecorationsOnlyLineThrough( const DecorationInfo& decoration_info, const PaintInfo& paint_info,
diff --git a/third_party/WebKit/Source/core/paint/TextPainterBase.h b/third_party/WebKit/Source/core/paint/TextPainterBase.h index 17df9bd..e9e035a 100644 --- a/third_party/WebKit/Source/core/paint/TextPainterBase.h +++ b/third_party/WebKit/Source/core/paint/TextPainterBase.h
@@ -22,6 +22,7 @@ class Document; class GraphicsContext; class GraphicsContextStateSaver; +class TextDecorationOffsetBase; struct PaintInfo; // Base class for text painting. Has no dependencies on the layout tree and thus @@ -50,6 +51,11 @@ bool horizontal, GraphicsContextStateSaver&); + void PaintDecorationsExceptLineThrough(const TextDecorationOffsetBase&, + const DecorationInfo&, + const PaintInfo&, + const Vector<AppliedTextDecoration>&, + bool* has_line_through_decoration); void PaintDecorationsOnlyLineThrough(const DecorationInfo&, const PaintInfo&, const Vector<AppliedTextDecoration>&);
diff --git a/third_party/WebKit/Source/platform/WebTaskRunner.cpp b/third_party/WebKit/Source/platform/WebTaskRunner.cpp index d7b9464..947e684 100644 --- a/third_party/WebKit/Source/platform/WebTaskRunner.cpp +++ b/third_party/WebKit/Source/platform/WebTaskRunner.cpp
@@ -103,7 +103,7 @@ TaskHandle& TaskHandle::operator=(TaskHandle&& other) { TaskHandle tmp(std::move(other)); - runner_.Swap(tmp.runner_); + runner_.swap(tmp.runner_); return *this; }
diff --git a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaperTest.cpp b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaperTest.cpp index af426d3..76734e6 100644 --- a/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaperTest.cpp +++ b/third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaperTest.cpp
@@ -11,6 +11,7 @@ #include "platform/fonts/FontCache.h" #include "platform/fonts/FontTestUtilities.h" #include "platform/fonts/shaping/ShapeResultInlineHeaders.h" +#include "platform/fonts/shaping/ShapeResultSpacing.h" #include "platform/fonts/shaping/ShapeResultTestInfo.h" #include "platform/text/TextBreakIterator.h" #include "platform/text/TextRun.h" @@ -362,6 +363,23 @@ EXPECT_EQ(string.length(), result->EndIndexForResult()); } +TEST_F(HarfBuzzShaperTest, NegativeLetterSpacing) { + String string(u"Hello"); + HarfBuzzShaper shaper(string.Characters16(), string.length()); + RefPtr<ShapeResult> result = shaper.Shape(&font, TextDirection::kLtr); + float width = result->Width(); + FloatRect bounds = result->Bounds(); + + ShapeResultSpacing<String> spacing(string); + FontDescription font_description; + font_description.SetLetterSpacing(-5); + spacing.SetSpacing(font_description); + result->ApplySpacing(spacing); + + EXPECT_EQ(5 * 5, width - result->Width()); + EXPECT_EQ(5 * 4 - 1, bounds.Width() - result->Bounds().Width()); +} + TEST_F(HarfBuzzShaperTest, PositionForOffsetLatin) { String string = To16Bit("Hello World!", 12); TextDirection direction = TextDirection::kLtr;
diff --git a/third_party/WebKit/Source/platform/fonts/shaping/ShapeResult.cpp b/third_party/WebKit/Source/platform/fonts/shaping/ShapeResult.cpp index 2d4a9cc..beea269 100644 --- a/third_party/WebKit/Source/platform/fonts/shaping/ShapeResult.cpp +++ b/third_party/WebKit/Source/platform/fonts/shaping/ShapeResult.cpp
@@ -319,6 +319,7 @@ int text_start_offset) { float offset = 0; float total_space = 0; + float space = 0; for (auto& run : runs_) { if (!run) continue; @@ -334,7 +335,7 @@ continue; } - float space = spacing.ComputeSpacing( + space = spacing.ComputeSpacing( run_start_index + glyph_data.character_index, offset); glyph_data.advance += space; total_space_for_run += space; @@ -355,6 +356,20 @@ total_space += total_space_for_run; } width_ += total_space; + + // The spacing on the right of the last glyph does not affect the glyph + // bounding box. Thus, the glyph bounding box becomes smaller than the advance + // if the letter spacing is positve, or larger if negative. + if (space) { + total_space -= space; + + // TODO(kojii): crbug.com/768284: There are cases where + // InlineTextBox::LogicalWidth() is round down of ShapeResult::Width() in + // LayoutUnit. Ceiling the width did not help. Add 1px to avoid cut-off. + if (space < 0) + total_space += 1; + } + // Glyph bounding box is in logical space. glyph_bounding_box_.SetWidth(glyph_bounding_box_.Width() + total_space); }
diff --git a/third_party/WebKit/Source/platform/wtf/RefPtr.h b/third_party/WebKit/Source/platform/wtf/RefPtr.h index b635862..980b0ed 100644 --- a/third_party/WebKit/Source/platform/wtf/RefPtr.h +++ b/third_party/WebKit/Source/platform/wtf/RefPtr.h
@@ -94,7 +94,7 @@ explicit operator bool() const { return ptr_ != nullptr; } RefPtr& operator=(RefPtr o) { - Swap(o); + swap(o); return *this; } RefPtr& operator=(std::nullptr_t) { @@ -107,7 +107,7 @@ template <typename U> RefPtr& operator=(RefPtrValuePeeker<U>); - void Swap(RefPtr&); + void swap(RefPtr&); private: friend RefPtr AdoptRef<T>(T*); @@ -129,18 +129,18 @@ template <typename U> inline RefPtr<T>& RefPtr<T>::operator=(RefPtrValuePeeker<U> optr) { RefPtr ptr = static_cast<U*>(optr); - Swap(ptr); + swap(ptr); return *this; } template <class T> -inline void RefPtr<T>::Swap(RefPtr& o) { +inline void RefPtr<T>::swap(RefPtr& o) { std::swap(ptr_, o.ptr_); } template <class T> inline void swap(RefPtr<T>& a, RefPtr<T>& b) { - a.Swap(b); + a.swap(b); } template <typename T, typename U>
diff --git a/third_party/WebKit/Source/platform/wtf/text/WTFString.h b/third_party/WebKit/Source/platform/wtf/text/WTFString.h index 949075a..2eaac98 100644 --- a/third_party/WebKit/Source/platform/wtf/text/WTFString.h +++ b/third_party/WebKit/Source/platform/wtf/text/WTFString.h
@@ -99,7 +99,7 @@ String(StringImpl* impl) : impl_(impl) {} String(RefPtr<StringImpl> impl) : impl_(std::move(impl)) {} - void swap(String& o) { impl_.Swap(o.impl_); } + void swap(String& o) { impl_.swap(o.impl_); } template <typename CharType> static String Adopt(StringBuffer<CharType>& buffer) {
diff --git a/third_party/WebKit/public/web/WebNode.h b/third_party/WebKit/public/web/WebNode.h index ce9fbea..3a022f2c 100644 --- a/third_party/WebKit/public/web/WebNode.h +++ b/third_party/WebKit/public/web/WebNode.h
@@ -93,6 +93,8 @@ // If the JS API would have thrown this returns null instead. WebElement QuerySelector(const WebString& selector) const; + WebVector<WebElement> QuerySelectorAll(const WebString& selector) const; + bool Focused() const; WebPluginContainer* PluginContainer() const;
diff --git a/third_party/breakpad/BUILD.gn b/third_party/breakpad/BUILD.gn deleted file mode 100644 index 6d77030..0000000 --- a/third_party/breakpad/BUILD.gn +++ /dev/null
@@ -1,988 +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/symlink.gni") -import("//testing/libfuzzer/fuzzer_test.gni") -import("//testing/test.gni") - -if (is_win) { - import("//build/config/win/visual_studio_version.gni") -} - -config("tools_config") { - include_dirs = [ - "breakpad/src", - "breakpad/src/third_party", - ] - if (is_android) { - defines = [ "__ANDROID__" ] - } - if (is_clang) { - cflags = [ "-Wno-tautological-constant-out-of-range-compare" ] - } -} - -config("internal_config") { - include_dirs = [ "breakpad/src" ] - defines = [] - if (is_debug) { - # This is needed for GTMLogger to work correctly. - defines += [ "DEBUG" ] - } - if (is_android) { - defines += [ "__ANDROID__" ] - } -} - -config("client_config") { - include_dirs = [ "breakpad/src" ] - if (is_android) { - include_dirs += [ "breakpad/src/common/android/include" ] - } - if (is_chromeos) { - defines = [ "__CHROMEOS__" ] - } -} - -config("handler_config") { - include_dirs = [ "breakpad/src" ] -} - -config("sender_config") { - include_dirs = [ "breakpad/src" ] -} - -config("breakpad_unittest_config") { - # One of the breakpad unit tests test that we can detect the proper build-id. - # We must override the build-id for this one target. - ldflags = [ "-Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" ] -} - -# {micro,mini}dump_stackwalk and minidump_dump are tool-type executables -# that do not build on Windows. -if (!is_win) { - if (current_toolchain == host_toolchain) { - # Contains the code shared by both {micro,mini}dump_stackwalk. - static_library("stackwalk_common") { - # Always want these files included regardless of platform. - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/processor/basic_code_module.h", - "breakpad/src/processor/basic_code_modules.cc", - "breakpad/src/processor/basic_code_modules.h", - "breakpad/src/processor/basic_source_line_resolver.cc", - "breakpad/src/processor/call_stack.cc", - "breakpad/src/processor/cfi_frame_info.cc", - "breakpad/src/processor/cfi_frame_info.h", - "breakpad/src/processor/disassembler_x86.cc", - "breakpad/src/processor/disassembler_x86.h", - "breakpad/src/processor/dump_context.cc", - "breakpad/src/processor/dump_object.cc", - "breakpad/src/processor/logging.cc", - "breakpad/src/processor/logging.h", - "breakpad/src/processor/pathname_stripper.cc", - "breakpad/src/processor/pathname_stripper.h", - "breakpad/src/processor/proc_maps_linux.cc", - "breakpad/src/processor/process_state.cc", - "breakpad/src/processor/simple_symbol_supplier.cc", - "breakpad/src/processor/simple_symbol_supplier.h", - "breakpad/src/processor/source_line_resolver_base.cc", - "breakpad/src/processor/stack_frame_cpu.cc", - "breakpad/src/processor/stack_frame_symbolizer.cc", - "breakpad/src/processor/stackwalk_common.cc", - "breakpad/src/processor/stackwalker.cc", - "breakpad/src/processor/stackwalker_amd64.cc", - "breakpad/src/processor/stackwalker_amd64.h", - "breakpad/src/processor/stackwalker_arm.cc", - "breakpad/src/processor/stackwalker_arm.h", - "breakpad/src/processor/stackwalker_arm64.cc", - "breakpad/src/processor/stackwalker_arm64.h", - "breakpad/src/processor/stackwalker_mips.cc", - "breakpad/src/processor/stackwalker_mips.h", - "breakpad/src/processor/stackwalker_ppc.cc", - "breakpad/src/processor/stackwalker_ppc.h", - "breakpad/src/processor/stackwalker_ppc64.cc", - "breakpad/src/processor/stackwalker_ppc64.h", - "breakpad/src/processor/stackwalker_sparc.cc", - "breakpad/src/processor/stackwalker_sparc.h", - "breakpad/src/processor/stackwalker_x86.cc", - "breakpad/src/processor/stackwalker_x86.h", - "breakpad/src/processor/tokenize.cc", - "breakpad/src/processor/tokenize.h", - - # libdisasm - "breakpad/src/third_party/libdisasm/ia32_implicit.c", - "breakpad/src/third_party/libdisasm/ia32_implicit.h", - "breakpad/src/third_party/libdisasm/ia32_insn.c", - "breakpad/src/third_party/libdisasm/ia32_insn.h", - "breakpad/src/third_party/libdisasm/ia32_invariant.c", - "breakpad/src/third_party/libdisasm/ia32_invariant.h", - "breakpad/src/third_party/libdisasm/ia32_modrm.c", - "breakpad/src/third_party/libdisasm/ia32_modrm.h", - "breakpad/src/third_party/libdisasm/ia32_opcode_tables.c", - "breakpad/src/third_party/libdisasm/ia32_opcode_tables.h", - "breakpad/src/third_party/libdisasm/ia32_operand.c", - "breakpad/src/third_party/libdisasm/ia32_operand.h", - "breakpad/src/third_party/libdisasm/ia32_reg.c", - "breakpad/src/third_party/libdisasm/ia32_reg.h", - "breakpad/src/third_party/libdisasm/ia32_settings.c", - "breakpad/src/third_party/libdisasm/ia32_settings.h", - "breakpad/src/third_party/libdisasm/libdis.h", - "breakpad/src/third_party/libdisasm/qword.h", - "breakpad/src/third_party/libdisasm/x86_disasm.c", - "breakpad/src/third_party/libdisasm/x86_format.c", - "breakpad/src/third_party/libdisasm/x86_imm.c", - "breakpad/src/third_party/libdisasm/x86_imm.h", - "breakpad/src/third_party/libdisasm/x86_insn.c", - "breakpad/src/third_party/libdisasm/x86_misc.c", - "breakpad/src/third_party/libdisasm/x86_operand_list.c", - "breakpad/src/third_party/libdisasm/x86_operand_list.h", - ] - - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] - } - - fuzzer_test("minidump_fuzzer") { - sources = [ - "breakpad/src/processor/exploitability.cc", - "breakpad/src/processor/minidump.cc", - "breakpad/src/processor/minidump_processor.cc", - "minidump_fuzzer.cc", - ] - - deps = [ - ":stackwalk_common", - "//base", - ] - - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - include_dirs = [ "breakpad/src" ] - dict = "minidump_fuzzer.dict" - - libfuzzer_options = [ - "close_fd_mask=3", - "max_len=128000", - ] - - # Always want these files included regardless of platform. - set_sources_assignment_filter([]) - sources += [ - "breakpad/src/processor/exploitability_linux.cc", - "breakpad/src/processor/exploitability_linux.h", - "breakpad/src/processor/exploitability_win.cc", - "breakpad/src/processor/exploitability_win.h", - "breakpad/src/processor/symbolic_constants_win.cc", - "breakpad/src/processor/symbolic_constants_win.h", - ] - } - - executable("microdump_stackwalk") { - sources = [ - "breakpad/src/processor/microdump.cc", - "breakpad/src/processor/microdump_processor.cc", - "breakpad/src/processor/microdump_stackwalk.cc", - ] - - deps = [ - ":stackwalk_common", - "//build/config:exe_and_shlib_deps", - ] - - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] - } - - executable("minidump_stackwalk") { - sources = [ - "breakpad/src/processor/exploitability.cc", - "breakpad/src/processor/minidump.cc", - "breakpad/src/processor/minidump_processor.cc", - "breakpad/src/processor/minidump_stackwalk.cc", - ] - - deps = [ - ":stackwalk_common", - "//build/config:exe_and_shlib_deps", - ] - - defines = [ "BPLOG_MINIMUM_SEVERITY=SEVERITY_ERROR" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ ":tools_config" ] - - # Always want these files included regardless of platform. - set_sources_assignment_filter([]) - sources += [ - "breakpad/src/processor/exploitability_linux.cc", - "breakpad/src/processor/exploitability_linux.h", - "breakpad/src/processor/exploitability_win.cc", - "breakpad/src/processor/exploitability_win.h", - "breakpad/src/processor/symbolic_constants_win.cc", - "breakpad/src/processor/symbolic_constants_win.h", - ] - } - - executable("minidump_dump") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/processor/basic_code_module.h", - "breakpad/src/processor/basic_code_modules.cc", - "breakpad/src/processor/basic_code_modules.h", - "breakpad/src/processor/dump_context.cc", - "breakpad/src/processor/dump_object.cc", - "breakpad/src/processor/logging.cc", - "breakpad/src/processor/logging.h", - "breakpad/src/processor/minidump.cc", - "breakpad/src/processor/minidump_dump.cc", - "breakpad/src/processor/pathname_stripper.cc", - "breakpad/src/processor/pathname_stripper.h", - "breakpad/src/processor/proc_maps_linux.cc", - ] - - configs += [ ":tools_config" ] - - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - - deps = [ - "//build/config:exe_and_shlib_deps", - ] - } - } else { - # Aliases for convenience. - binary_symlink("microdump_stackwalk") { - binary_label = ":$target_name($host_toolchain)" - } - binary_symlink("minidump_stackwalk") { - binary_label = ":$target_name($host_toolchain)" - } - binary_symlink("minidump_dump") { - binary_label = ":$target_name($host_toolchain)" - } - } -} - -# Mac -------------------------------------------------------------------------- - -if (is_mac) { - if (current_toolchain == host_toolchain) { - executable("dump_syms") { - sources = [ - "breakpad/src/common/dwarf/bytereader.cc", - "breakpad/src/common/dwarf/dwarf2diehandler.cc", - "breakpad/src/common/dwarf/dwarf2reader.cc", - "breakpad/src/common/dwarf/elf_reader.cc", - "breakpad/src/common/dwarf/elf_reader.h", - "breakpad/src/common/dwarf_cfi_to_module.cc", - "breakpad/src/common/dwarf_cu_to_module.cc", - "breakpad/src/common/dwarf_line_to_module.cc", - "breakpad/src/common/language.cc", - "breakpad/src/common/mac/arch_utilities.cc", - "breakpad/src/common/mac/arch_utilities.h", - "breakpad/src/common/mac/dump_syms.cc", - "breakpad/src/common/mac/file_id.cc", - "breakpad/src/common/mac/macho_id.cc", - "breakpad/src/common/mac/macho_reader.cc", - "breakpad/src/common/mac/macho_utilities.cc", - "breakpad/src/common/mac/macho_walker.cc", - "breakpad/src/common/md5.cc", - "breakpad/src/common/module.cc", - "breakpad/src/common/stabs_reader.cc", - "breakpad/src/common/stabs_to_module.cc", - "breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc", - ] - - # For breakpad/src/common/stabs_reader.h. - defines = [ "HAVE_MACH_O_NLIST_H" ] - include_dirs = [ "breakpad/src/common/mac" ] - - # The DWARF utilities require -funsigned-char. - cflags = [ "-funsigned-char" ] - - configs += [ ":internal_config" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - - # dwarf2reader.cc uses dynamic_cast. - configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] - - libs = [ "Foundation.framework" ] - - if (!is_debug) { - # dump_syms crashes when built at -O1, -O2, and -O3. It does - # not crash at -Os. To play it safe, dump_syms is always built - # at -O0 until this can be sorted out. - # https://crbug.com/google-breakpad/329 - configs -= [ "//build/config/compiler:default_optimization" ] - cflags += [ "-O0" ] - } - - deps = [ - "//build/config:exe_and_shlib_deps", - ] - } - - executable("symupload") { - sources = [ - "breakpad/src/common/mac/HTTPMultipartUpload.m", - "breakpad/src/tools/mac/symupload/symupload.m", - ] - - include_dirs = [ "breakpad/src/common/mac" ] - - libs = [ "Foundation.framework" ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - - deps = [ - "//build/config:exe_and_shlib_deps", - ] - } - } else { - binary_symlink("dump_syms") { - binary_label = ":$target_name($host_toolchain)" - } - binary_symlink("symupload") { - binary_label = ":$target_name($host_toolchain)" - } - } -} - -if (is_ios) { - binary_symlink("dump_syms") { - binary_label = ":$target_name($host_toolchain)" - } - binary_symlink("symupload") { - binary_label = ":$target_name($host_toolchain)" - } -} - -if (is_mac) { - static_library("utilities") { - sources = [ - "breakpad/src/client/mac/crash_generation/ConfigFile.mm", - "breakpad/src/client/mac/handler/breakpad_nlist_64.cc", - "breakpad/src/client/mac/handler/dynamic_images.cc", - "breakpad/src/client/mac/handler/minidump_generator.cc", - "breakpad/src/client/minidump_file_writer.cc", - "breakpad/src/common/convert_UTF.c", - "breakpad/src/common/mac/MachIPC.mm", - "breakpad/src/common/mac/arch_utilities.cc", - "breakpad/src/common/mac/bootstrap_compat.cc", - "breakpad/src/common/mac/file_id.cc", - "breakpad/src/common/mac/launch_reporter.cc", - "breakpad/src/common/mac/macho_id.cc", - "breakpad/src/common/mac/macho_utilities.cc", - "breakpad/src/common/mac/macho_walker.cc", - "breakpad/src/common/mac/string_utilities.cc", - "breakpad/src/common/md5.cc", - "breakpad/src/common/simple_string_dictionary.cc", - "breakpad/src/common/string_conversion.cc", - ] - - configs += [ ":internal_config" ] - - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - } - - executable("crash_inspector") { - sources = [ - "breakpad/src/client/mac/crash_generation/Inspector.mm", - "breakpad/src/client/mac/crash_generation/InspectorMain.mm", - ] - - # TODO(GYP): 'mac_real_dsym': 1, - - include_dirs = [ - "breakpad/src/client/apple/Framework", - "breakpad/src/common/mac", - "breakpad/src", - ] - libs = [ - "CoreServices.framework", - "Foundation.framework", - ] - - deps = [ - ":utilities", - "//build/config:exe_and_shlib_deps", - ] - } - - # TODO(GYP) this target has some mac_bundle_resources stuff. - # executable("crash_report_sender") { - # } - group("crash_report_sender") { - } - - config("breakpad_config") { - include_dirs = [ "breakpad/src/client/apple/Framework" ] - } - - static_library("breakpad") { - sources = [ - "breakpad/src/client/mac/Framework/Breakpad.mm", - "breakpad/src/client/mac/Framework/OnDemandServer.mm", - "breakpad/src/client/mac/crash_generation/crash_generation_client.cc", - "breakpad/src/client/mac/crash_generation/crash_generation_client.h", - "breakpad/src/client/mac/handler/exception_handler.cc", - "breakpad/src/client/mac/handler/protected_memory_allocator.cc", - ] - - configs += [ ":internal_config" ] - public_configs = [ ":breakpad_config" ] - - defines = [ "USE_PROTECTED_ALLOCATIONS=1" ] - include_dirs = [ "breakpad/src/client/apple/Framework" ] - - deps = [ - ":crash_inspector", - ":crash_report_sender", - ":utilities", - ] - } - - group("client") { - public_configs = [ ":client_config" ] - } -} - -if (is_linux || is_android) { - if (current_toolchain == host_toolchain) { - executable("symupload") { - sources = [ - "breakpad/src/common/linux/http_upload.cc", - "breakpad/src/common/linux/http_upload.h", - "breakpad/src/common/linux/symbol_upload.cc", - "breakpad/src/common/linux/symbol_upload.h", - "breakpad/src/tools/linux/symupload/sym_upload.cc", - ] - - include_dirs = [ - "breakpad/src", - "breakpad/src/third_party", - ] - - configs += [ ":tools_config" ] - - libs = [ "dl" ] - - deps = [ - "//build/config:exe_and_shlib_deps", - ] - } - - # dump_syms is a host tool, so only compile it for the host system. - executable("dump_syms") { - sources = [ - "breakpad/src/common/dwarf/bytereader.cc", - "breakpad/src/common/dwarf/dwarf2diehandler.cc", - "breakpad/src/common/dwarf/dwarf2reader.cc", - "breakpad/src/common/dwarf/elf_reader.cc", - "breakpad/src/common/dwarf/elf_reader.h", - "breakpad/src/common/dwarf_cfi_to_module.cc", - "breakpad/src/common/dwarf_cfi_to_module.h", - "breakpad/src/common/dwarf_cu_to_module.cc", - "breakpad/src/common/dwarf_cu_to_module.h", - "breakpad/src/common/dwarf_line_to_module.cc", - "breakpad/src/common/dwarf_line_to_module.h", - "breakpad/src/common/language.cc", - "breakpad/src/common/language.h", - "breakpad/src/common/linux/crc32.cc", - "breakpad/src/common/linux/crc32.h", - "breakpad/src/common/linux/dump_symbols.cc", - "breakpad/src/common/linux/dump_symbols.h", - "breakpad/src/common/linux/elf_symbols_to_module.cc", - "breakpad/src/common/linux/elf_symbols_to_module.h", - "breakpad/src/common/linux/elfutils.cc", - "breakpad/src/common/linux/elfutils.h", - "breakpad/src/common/linux/file_id.cc", - "breakpad/src/common/linux/file_id.h", - "breakpad/src/common/linux/guid_creator.h", - "breakpad/src/common/linux/linux_libc_support.cc", - "breakpad/src/common/linux/linux_libc_support.h", - "breakpad/src/common/linux/memory_mapped_file.cc", - "breakpad/src/common/linux/memory_mapped_file.h", - "breakpad/src/common/module.cc", - "breakpad/src/common/module.h", - "breakpad/src/common/stabs_reader.cc", - "breakpad/src/common/stabs_reader.h", - "breakpad/src/common/stabs_to_module.cc", - "breakpad/src/common/stabs_to_module.h", - "breakpad/src/tools/linux/dump_syms/dump_syms.cc", - ] - - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - - # dwarf2reader.cc uses dynamic_cast. Because we don't typically - # don't support RTTI, we enable it for this single target. Since - # dump_syms doesn't share any object files with anything else, - # this doesn't end up polluting Chrome itself. - configs -= [ "//build/config/compiler:no_rtti" ] - configs += [ "//build/config/compiler:rtti" ] - - # Breakpad rev 583 introduced this flag. - # Using this define, stabs_reader.h will include a.out.h to - # build on Linux. - defines = [ "HAVE_A_OUT_H" ] - - include_dirs = [ "breakpad/src" ] - - deps = [ - "//build/config:exe_and_shlib_deps", - ] - } - } else { - # Aliases for convenience. - binary_symlink("dump_syms") { - binary_label = ":dump_syms($host_toolchain)" - } - binary_symlink("symupload") { - binary_label = ":symupload($host_toolchain)" - } - } - - static_library("client") { - # Want all these sources for both Linux and Android. - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/client/linux/crash_generation/crash_generation_client.cc", - "breakpad/src/client/linux/crash_generation/crash_generation_client.h", - "breakpad/src/client/linux/dump_writer_common/mapping_info.h", - "breakpad/src/client/linux/dump_writer_common/thread_info.cc", - "breakpad/src/client/linux/dump_writer_common/thread_info.h", - "breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc", - "breakpad/src/client/linux/dump_writer_common/ucontext_reader.h", - "breakpad/src/client/linux/handler/exception_handler.cc", - "breakpad/src/client/linux/handler/exception_handler.h", - "breakpad/src/client/linux/handler/minidump_descriptor.cc", - "breakpad/src/client/linux/handler/minidump_descriptor.h", - "breakpad/src/client/linux/log/log.cc", - "breakpad/src/client/linux/log/log.h", - "breakpad/src/client/linux/microdump_writer/microdump_writer.cc", - "breakpad/src/client/linux/microdump_writer/microdump_writer.h", - "breakpad/src/client/linux/minidump_writer/cpu_set.h", - "breakpad/src/client/linux/minidump_writer/directory_reader.h", - "breakpad/src/client/linux/minidump_writer/line_reader.h", - "breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc", - "breakpad/src/client/linux/minidump_writer/linux_core_dumper.h", - "breakpad/src/client/linux/minidump_writer/linux_dumper.cc", - "breakpad/src/client/linux/minidump_writer/linux_dumper.h", - "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc", - "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.h", - "breakpad/src/client/linux/minidump_writer/minidump_writer.cc", - "breakpad/src/client/linux/minidump_writer/minidump_writer.h", - "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader.h", - "breakpad/src/client/minidump_file_writer-inl.h", - "breakpad/src/client/minidump_file_writer.cc", - "breakpad/src/client/minidump_file_writer.h", - "breakpad/src/common/convert_UTF.c", - "breakpad/src/common/convert_UTF.h", - "breakpad/src/common/linux/elf_core_dump.cc", - "breakpad/src/common/linux/elf_core_dump.h", - "breakpad/src/common/linux/elfutils.cc", - "breakpad/src/common/linux/elfutils.h", - "breakpad/src/common/linux/file_id.cc", - "breakpad/src/common/linux/file_id.h", - "breakpad/src/common/linux/google_crashdump_uploader.cc", - "breakpad/src/common/linux/google_crashdump_uploader.h", - "breakpad/src/common/linux/guid_creator.cc", - "breakpad/src/common/linux/guid_creator.h", - "breakpad/src/common/linux/libcurl_wrapper.cc", - "breakpad/src/common/linux/libcurl_wrapper.h", - "breakpad/src/common/linux/linux_libc_support.cc", - "breakpad/src/common/linux/linux_libc_support.h", - "breakpad/src/common/linux/memory_mapped_file.cc", - "breakpad/src/common/linux/memory_mapped_file.h", - "breakpad/src/common/linux/safe_readlink.cc", - "breakpad/src/common/linux/safe_readlink.h", - "breakpad/src/common/memory.h", - "breakpad/src/common/simple_string_dictionary.cc", - "breakpad/src/common/simple_string_dictionary.h", - "breakpad/src/common/string_conversion.cc", - "breakpad/src/common/string_conversion.h", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - public_configs = [ ":client_config" ] - - if (current_cpu == "arm" && is_chromeos) { - # Avoid running out of registers in - # linux_syscall_support.h:sys_clone()'s inline assembly. - cflags = [ "-marm" ] - } - - # Clang's -mstackrealign doesn't work well with - # linux_syscall_support.h hand written asm syscalls. - # See https://crbug.com/556393 - configs -= [ "//build/config/compiler:clang_stackrealign" ] - - if (is_android) { - sources += [ "breakpad/src/common/android/breakpad_getcontext.S" ] - } - - libs = [ "dl" ] - - include_dirs = [ - ".", - "breakpad/src", - "breakpad/src/client", - "breakpad/src/third_party/linux/include", - ] - } - - static_library("processor_support") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/common/scoped_ptr.h", - "breakpad/src/processor/basic_code_modules.cc", - "breakpad/src/processor/basic_code_modules.h", - "breakpad/src/processor/dump_context.cc", - "breakpad/src/processor/dump_object.cc", - "breakpad/src/processor/logging.cc", - "breakpad/src/processor/logging.h", - "breakpad/src/processor/minidump.cc", - "breakpad/src/processor/pathname_stripper.cc", - "breakpad/src/processor/pathname_stripper.h", - "breakpad/src/processor/proc_maps_linux.cc", - ] - - include_dirs = [ - "breakpad/src", - "breakpad/src/client", - "breakpad/src/third_party/linux/include", - ".", - ] - - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - } - - test("breakpad_unittests") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/client/linux/handler/exception_handler_unittest.cc", - "breakpad/src/client/linux/minidump_writer/cpu_set_unittest.cc", - "breakpad/src/client/linux/minidump_writer/directory_reader_unittest.cc", - "breakpad/src/client/linux/minidump_writer/line_reader_unittest.cc", - "breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc", - "breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc", - "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc", - "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc", - "breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc", - "breakpad/src/common/linux/elf_core_dump_unittest.cc", - "breakpad/src/common/linux/file_id_unittest.cc", - "breakpad/src/common/linux/linux_libc_support_unittest.cc", - "breakpad/src/common/linux/synth_elf.cc", - "breakpad/src/common/linux/tests/auto_testfile.h", - "breakpad/src/common/linux/tests/crash_generator.cc", - "breakpad/src/common/linux/tests/crash_generator.h", - "breakpad/src/common/memory_range.h", - "breakpad/src/common/memory_unittest.cc", - "breakpad/src/common/simple_string_dictionary_unittest.cc", - "breakpad/src/common/test_assembler.cc", - "breakpad/src/common/tests/file_utils.cc", - "breakpad/src/common/tests/file_utils.h", - "breakpad/src/tools/linux/md2core/minidump_memory_range.h", - "breakpad/src/tools/linux/md2core/minidump_memory_range_unittest.cc", - "linux/breakpad_googletest_includes.h", - ] - - deps = [ - ":client", - ":linux_dumper_unittest_helper", - ":processor_support", - "//build/config:exe_and_shlib_deps", - "//testing/gmock", - "//testing/gtest", - "//testing/gtest:gtest_main", - ] - - include_dirs = [ - "linux", # Use our copy of breakpad_googletest_includes.h - ".", - ] - - # There are some warnings in this code. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":client_config", - "//build/config/compiler:no_chromium_code", - ] - - if (is_clang) { - # See https://crbug.com/138571#c18 - cflags = [ "-Wno-unused-value" ] - } - - if (is_android) { - use_raw_android_executable = true - sources += - [ "breakpad/src/common/android/breakpad_getcontext_unittest.cc" ] - libs = [ "log" ] - extra_dist_files = [ "$root_out_dir/linux_dumper_unittest_helper" ] - } - - # Clang's -mstackrealign doesn't work well with - # linux_syscall_support.h hand written asm syscalls. - # See https://crbug.com/556393 - configs -= [ "//build/config/compiler:clang_stackrealign" ] - - # Add the breakpad unittest config at the end to override all configs. - configs += [ ":breakpad_unittest_config" ] - } - - executable("linux_dumper_unittest_helper") { - set_sources_assignment_filter([]) - testonly = true - sources = [ - "breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc", - ] - deps = [ - ":processor_support", - "//build/config:exe_and_shlib_deps", - ] - - configs += [ ":client_config" ] - - if (is_component_build) { - ldflags = [ - "-Wl,-rpath,", - rebase_path(root_build_dir), - ] - } - } - - executable("generate_test_dump") { - set_sources_assignment_filter([]) - testonly = true - sources = [ - "linux/generate-test-dump.cc", - ] - - # This file has an unused variable warning. - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - ":client_config", - "//build/config/compiler:no_chromium_code", - ] - - deps = [ - ":client", - "//build/config:exe_and_shlib_deps", - ] - - if (is_android) { - libs = [ "log" ] - } - } - - executable("minidump-2-core") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/tools/linux/md2core/minidump-2-core.cc", - ] - - include_dirs = [ "breakpad/src" ] - - deps = [ - ":client", - "//build/config:exe_and_shlib_deps", - ] - } - - executable("core-2-minidump") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/tools/linux/core2md/core2md.cc", - ] - - deps = [ - ":client", - "//build/config:exe_and_shlib_deps", - ] - - include_dirs = [ "breakpad/src" ] - } -} - -if (is_win) { - executable("dump_syms") { - # TODO(scottmg) using this with VS2015 may break the crash server. - # https://crbug.com/696671 - include_dirs = [ - "$visual_studio_path/DIA SDK/include", - "breakpad/src", - ] - - sources = [ - "breakpad/src/common/windows/dia_util.cc", - "breakpad/src/common/windows/dia_util.h", - "breakpad/src/common/windows/guid_string.cc", - "breakpad/src/common/windows/guid_string.h", - "breakpad/src/common/windows/omap.cc", - "breakpad/src/common/windows/omap.h", - "breakpad/src/common/windows/pdb_source_line_writer.cc", - "breakpad/src/common/windows/pdb_source_line_writer.h", - "breakpad/src/common/windows/string_utils-inl.h", - "breakpad/src/common/windows/string_utils.cc", - "breakpad/src/tools/windows/dump_syms/dump_syms.cc", - ] - - lib_dirs = [] - if (target_cpu == "x64") { - lib_dirs += [ "$visual_studio_path/DIA SDK/lib/amd64" ] - } else { - lib_dirs += [ "$visual_studio_path/DIA SDK/lib" ] - } - - libs = [ - "diaguids.lib", - "imagehlp.lib", - ] - if (is_clang) { - # clang complains about microsoft-specific goto extensions. Instead of - # rewriting decade-old, goto-ridden code, disable the warning. - cflags = [ "-Wno-microsoft-goto" ] - } - } -} - -if (is_ios) { - static_library("client") { - set_sources_assignment_filter([]) - sources = [ - "breakpad/src/client/ios/Breakpad.h", - "breakpad/src/client/ios/Breakpad.mm", - "breakpad/src/client/ios/BreakpadController.h", - "breakpad/src/client/ios/BreakpadController.mm", - "breakpad/src/client/ios/handler/ios_exception_minidump_generator.h", - "breakpad/src/client/ios/handler/ios_exception_minidump_generator.mm", - "breakpad/src/client/mac/crash_generation/ConfigFile.h", - "breakpad/src/client/mac/crash_generation/ConfigFile.mm", - "breakpad/src/client/mac/handler/breakpad_nlist_64.cc", - "breakpad/src/client/mac/handler/breakpad_nlist_64.h", - "breakpad/src/client/mac/handler/dynamic_images.cc", - "breakpad/src/client/mac/handler/dynamic_images.h", - "breakpad/src/client/mac/handler/exception_handler.cc", - "breakpad/src/client/mac/handler/exception_handler.h", - "breakpad/src/client/mac/handler/minidump_generator.cc", - "breakpad/src/client/mac/handler/minidump_generator.h", - "breakpad/src/client/mac/handler/protected_memory_allocator.cc", - "breakpad/src/client/mac/handler/protected_memory_allocator.h", - "breakpad/src/client/mac/sender/uploader.h", - "breakpad/src/client/mac/sender/uploader.mm", - "breakpad/src/client/minidump_file_writer-inl.h", - "breakpad/src/client/minidump_file_writer.cc", - "breakpad/src/client/minidump_file_writer.h", - "breakpad/src/common/convert_UTF.c", - "breakpad/src/common/convert_UTF.h", - "breakpad/src/common/mac/HTTPMultipartUpload.m", - "breakpad/src/common/mac/file_id.cc", - "breakpad/src/common/mac/file_id.h", - "breakpad/src/common/mac/macho_id.cc", - "breakpad/src/common/mac/macho_id.h", - "breakpad/src/common/mac/macho_utilities.cc", - "breakpad/src/common/mac/macho_utilities.h", - "breakpad/src/common/mac/macho_walker.cc", - "breakpad/src/common/mac/macho_walker.h", - "breakpad/src/common/mac/string_utilities.cc", - "breakpad/src/common/mac/string_utilities.h", - "breakpad/src/common/md5.cc", - "breakpad/src/common/md5.h", - "breakpad/src/common/simple_string_dictionary.cc", - "breakpad/src/common/simple_string_dictionary.h", - "breakpad/src/common/string_conversion.cc", - "breakpad/src/common/string_conversion.h", - "breakpad/src/google_breakpad/common/minidump_format.h", - ] - set_sources_assignment_filter(sources_assignment_filter) - - include_dirs = [ - "breakpad/src", - "breakpad/src/client/mac/Framework", - "breakpad/src/common/mac", - ] - - deps = [ - "//third_party/google_toolbox_for_mac", - ] - - public_configs = [ ":client_config" ] - - if (is_clang) { - # See https://crbug.com/google-breakpad/675. - cflags = [ "-Wno-deprecated-declarations" ] - } - } -} - -if (is_win) { - group("client") { - public_configs = [ ":client_config" ] - } - - config("breakpad_handler_warnings") { - if (is_clang) { - # See https://crbug.com/google-breakpad/658. - cflags = [ "-Wno-reorder" ] - } - } - - static_library("breakpad_handler") { - configs += [ ":handler_config" ] - if (is_win) { - public_configs = [ ":handler_config" ] - } - - defines = [ "BREAKPAD_NO_TERMINATE_THREAD" ] - - sources = [ - "breakpad/src/client/windows/crash_generation/client_info.cc", - "breakpad/src/client/windows/crash_generation/client_info.h", - "breakpad/src/client/windows/crash_generation/crash_generation_client.cc", - "breakpad/src/client/windows/crash_generation/crash_generation_client.h", - "breakpad/src/client/windows/crash_generation/crash_generation_server.cc", - "breakpad/src/client/windows/crash_generation/crash_generation_server.h", - "breakpad/src/client/windows/crash_generation/minidump_generator.cc", - "breakpad/src/client/windows/crash_generation/minidump_generator.h", - "breakpad/src/client/windows/handler/exception_handler.cc", - "breakpad/src/client/windows/handler/exception_handler.h", - "breakpad/src/common/windows/guid_string.cc", - "breakpad/src/common/windows/guid_string.h", - "breakpad/src/common/windows/string_utils-inl.h", - "breakpad/src/google_breakpad/common/minidump_format.h", - ] - configs += [ ":breakpad_handler_warnings" ] - } - - source_set("breakpad_sender") { - sources = [ - "breakpad/src/client/windows/sender/crash_report_sender.cc", - "breakpad/src/client/windows/sender/crash_report_sender.h", - "breakpad/src/common/windows/http_upload.cc", - "breakpad/src/common/windows/http_upload.h", - ] - configs += [ ":sender_config" ] - public_configs = [ ":sender_config" ] - } -}
diff --git a/third_party/breakpad/DEPS b/third_party/breakpad/DEPS deleted file mode 100644 index 3d23004..0000000 --- a/third_party/breakpad/DEPS +++ /dev/null
@@ -1,12 +0,0 @@ -skip_child_includes = [ - 'linux', -] - -specific_include_rules = { - '^minidump_fuzzer\.cc$': [ - '+base', - '+google_breakpad', - '+processor', - '+testing', - ], -}
diff --git a/third_party/breakpad/README.chromium b/third_party/breakpad/README.chromium deleted file mode 100644 index 4c8913b..0000000 --- a/third_party/breakpad/README.chromium +++ /dev/null
@@ -1,9 +0,0 @@ -Name: Breakpad, An open-source multi-platform crash reporting system -Short Name: breakpad -URL: https://chromium.googlesource.com/breakpad/breakpad -Version: unknown -License: New BSD, Apple PSL 2.0 and Apache 2.0 -Security Critical: yes - -The upstream Breakpad project is pulled into the breakpad/ subdirectory via -DEPS.
diff --git a/third_party/leveldatabase/README.chromium b/third_party/leveldatabase/README.chromium index acb1764f..6456d606 100644 --- a/third_party/leveldatabase/README.chromium +++ b/third_party/leveldatabase/README.chromium
@@ -26,5 +26,3 @@ * Handle in-process exclusive file locks, based on src/util/env_posix.cc * Unit tests for the Chromium environment. * db_bench is built as leveldb_db_bench in Chromium. -* leveldb_chrome::NewMemEnv() to create memory Env instances that are tracked to - know if a database open request is in-memory.
diff --git a/third_party/leveldatabase/chromium_logger.h b/third_party/leveldatabase/chromium_logger.h index 47114a4..8e174852 100644 --- a/third_party/leveldatabase/chromium_logger.h +++ b/third_party/leveldatabase/chromium_logger.h
@@ -11,7 +11,9 @@ #include "base/files/file.h" #include "base/format_macros.h" +#include "base/strings/string_util.h" #include "base/time/time.h" +#include "third_party/leveldatabase/src/include/leveldb/env.h" namespace leveldb {
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc index 6c484d23..4f9f233 100644 --- a/third_party/leveldatabase/env_chromium.cc +++ b/third_party/leveldatabase/env_chromium.cc
@@ -1397,20 +1397,12 @@ const std::string& name, std::unique_ptr<leveldb::DB>* dbptr) { DBTracker::TrackedDB* tracked_db = nullptr; - leveldb::Status s; - if (options.env && leveldb_chrome::IsMemEnv(options.env)) { - // Zero size cache to prevent cache hits. - static leveldb::Cache* s_empty_cache = leveldb::NewLRUCache(0); - Options mem_options = options; - mem_options.block_cache = s_empty_cache; - mem_options.write_buffer_size = 0; // minimum size. - s = DBTracker::GetInstance()->OpenDatabase(mem_options, name, &tracked_db); - } else { - s = DBTracker::GetInstance()->OpenDatabase(options, name, &tracked_db); - } - if (s.ok()) + leveldb::Status status = + DBTracker::GetInstance()->OpenDatabase(options, name, &tracked_db); + if (status.ok()) { dbptr->reset(tracked_db); - return s; + } + return status; } } // namespace leveldb_env
diff --git a/third_party/leveldatabase/env_chromium.h b/third_party/leveldatabase/env_chromium.h index abb1d90b..50e5018 100644 --- a/third_party/leveldatabase/env_chromium.h +++ b/third_party/leveldatabase/env_chromium.h
@@ -318,15 +318,10 @@ DISALLOW_COPY_AND_ASSIGN(DBTracker); }; -// Opens a database with the specified "name" and "options" (see note) and -// exposes it to Chrome's tracing (see DBTracker for details). The function -// guarantees that: +// Opens a database and exposes it to Chrome's tracing (see DBTracker for +// details). The function guarantees that: // 1. |dbptr| is not touched on failure // 2. |dbptr| is not NULL on success -// -// Note: All |options| values are honored, except if options.env is an in-memory -// Env. In this case the block cache is disabled and a minimum write buffer size -// is used to conserve memory with all other values honored. leveldb::Status OpenDB(const leveldb_env::Options& options, const std::string& name, std::unique_ptr<leveldb::DB>* dbptr);
diff --git a/third_party/leveldatabase/env_chromium_unittest.cc b/third_party/leveldatabase/env_chromium_unittest.cc index 617a52c..5225087 100644 --- a/third_party/leveldatabase/env_chromium_unittest.cc +++ b/third_party/leveldatabase/env_chromium_unittest.cc
@@ -18,7 +18,6 @@ #include "base/trace_event/process_memory_dump.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/leveldatabase/env_chromium.h" -#include "third_party/leveldatabase/leveldb_chrome.h" #include "third_party/leveldatabase/src/include/leveldb/db.h" #define FPL FILE_PATH_LITERAL @@ -435,15 +434,6 @@ delete untracked_db; } -TEST_F(ChromiumEnvDBTrackerTest, CheckInMemoryEnv) { - Env* env = leveldb::Env::Default(); - ASSERT_TRUE(env != nullptr); - EXPECT_FALSE(leveldb_chrome::IsMemEnv(env)); - - std::unique_ptr<leveldb::Env> memenv(leveldb_chrome::NewMemEnv(env)); - EXPECT_TRUE(leveldb_chrome::IsMemEnv(memenv.get())); -} - } // namespace leveldb_env int main(int argc, char** argv) { return base::TestSuite(argc, argv).Run(); }
diff --git a/third_party/leveldatabase/leveldb_chrome.cc b/third_party/leveldatabase/leveldb_chrome.cc index fd47fba..2529092 100644 --- a/third_party/leveldatabase/leveldb_chrome.cc +++ b/third_party/leveldatabase/leveldb_chrome.cc
@@ -5,13 +5,9 @@ #include "third_party/leveldatabase/leveldb_chrome.h" #include <memory> - #include "base/bind.h" -#include "base/containers/flat_set.h" #include "base/memory/memory_pressure_listener.h" #include "base/sys_info.h" -#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" -#include "util/mutexlock.h" using MemoryPressureLevel = base::MemoryPressureListener::MemoryPressureLevel; using leveldb::Cache; @@ -63,23 +59,6 @@ web_block_cache()->Prune(); } - void DidCreateChromeMemEnv(leveldb::Env* env) { - leveldb::MutexLock l(&env_mutex_); - DCHECK(in_memory_envs_.find(env) == in_memory_envs_.end()); - in_memory_envs_.insert(env); - } - - void WillDestroyChromeMemEnv(leveldb::Env* env) { - leveldb::MutexLock l(&env_mutex_); - DCHECK(in_memory_envs_.find(env) != in_memory_envs_.end()); - in_memory_envs_.erase(env); - } - - bool IsInMemoryEnv(const leveldb::Env* env) const { - leveldb::MutexLock l(&env_mutex_); - return in_memory_envs_.find(env) != in_memory_envs_.end(); - } - private: ~Globals() {} @@ -87,28 +66,10 @@ std::unique_ptr<Cache> browser_block_cache_; // Never null. // Listens for the system being under memory pressure. std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; - mutable leveldb::port::Mutex env_mutex_; - base::flat_set<leveldb::Env*> in_memory_envs_; DISALLOW_COPY_AND_ASSIGN(Globals); }; -class ChromeMemEnv : public leveldb::EnvWrapper { - public: - ChromeMemEnv(leveldb::Env* base_env) - : EnvWrapper(leveldb::NewMemEnv(base_env)), base_env_(target()) { - Globals::GetInstance()->DidCreateChromeMemEnv(this); - } - - ~ChromeMemEnv() override { - Globals::GetInstance()->WillDestroyChromeMemEnv(this); - } - - private: - std::unique_ptr<leveldb::Env> base_env_; - DISALLOW_COPY_AND_ASSIGN(ChromeMemEnv); -}; - } // namespace // Returns a separate (from the default) block cache for use by web APIs. @@ -124,13 +85,4 @@ return Globals::GetInstance()->browser_block_cache(); } -bool IsMemEnv(const leveldb::Env* env) { - DCHECK(env); - return Globals::GetInstance()->IsInMemoryEnv(env); -} - -leveldb::Env* NewMemEnv(leveldb::Env* base_env) { - return new ChromeMemEnv(base_env); -} - } // namespace leveldb_chrome
diff --git a/third_party/leveldatabase/leveldb_chrome.h b/third_party/leveldatabase/leveldb_chrome.h index 590f1c9..aea1879 100644 --- a/third_party/leveldatabase/leveldb_chrome.h +++ b/third_party/leveldatabase/leveldb_chrome.h
@@ -6,7 +6,6 @@ #define THIRD_PARTY_LEVELDATABASE_LEVELDB_CHROME_H_ #include "leveldb/cache.h" -#include "leveldb/env.h" namespace leveldb_chrome { @@ -18,12 +17,6 @@ // *does not* own the returned instance. extern leveldb::Cache* GetSharedBrowserBlockCache(); -// Determine if a leveldb::Env stores the file data in RAM. -extern bool IsMemEnv(const leveldb::Env* env); - -// Creates an in-memory Env for which all files are stored in the heap. -extern leveldb::Env* NewMemEnv(leveldb::Env* base_env); - } // namespace leveldb_chrome #endif // THIRD_PARTY_LEVELDATABASE_LEVELDB_CHROME_H_
diff --git a/third_party/minizip/BUILD.gn b/third_party/minizip/BUILD.gn index c2c7ef883..990b101d 100644 --- a/third_party/minizip/BUILD.gn +++ b/third_party/minizip/BUILD.gn
@@ -2,9 +2,17 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. -config("minizip_warnings") { +config("minizip_compiler_flags") { if (is_clang) { cflags = [ "-Wno-unused-function" ] + + if (!is_nacl) { + cflags += [ + "-maes", + "-msse3", + "-msse4.1", + ] + } } } @@ -14,28 +22,27 @@ static_library("minizip") { sources = [ - # TODO(yawano): AES part cannot be compiled in pnacl. - # "src/aes/aes.h", - # "src/aes/aescrypt.c", - # "src/aes/aeskey.c", - # "src/aes/aesopt.h", - # "src/aes/aestab.c", - # "src/aes/aestab.h", - # "src/aes/aes_ni.c", - # "src/aes/aes_ni.h", - # "src/aes/aes_via_ace.h", - # "src/aes/brg_endian.h", - # "src/aes/brg_types.h", - # "src/aes/fileenc.c", - # "src/aes/fileenc.h", - # "src/aes/hmac.c", - # "src/aes/hmac.h", - # "src/aes/prng.c", - # "src/aes/prng.h", - # "src/aes/pwd2key.c", - # "src/aes/pwd2key.h", - # "src/aes/sha1.c", - # "src/aes/sha1.h", + "src/aes/aes.h", + "src/aes/aes_ni.c", + "src/aes/aes_ni.h", + "src/aes/aes_via_ace.h", + "src/aes/aescrypt.c", + "src/aes/aeskey.c", + "src/aes/aesopt.h", + "src/aes/aestab.c", + "src/aes/aestab.h", + "src/aes/brg_endian.h", + "src/aes/brg_types.h", + "src/aes/fileenc.c", + "src/aes/fileenc.h", + "src/aes/hmac.c", + "src/aes/hmac.h", + "src/aes/prng.c", + "src/aes/prng.h", + "src/aes/pwd2key.c", + "src/aes/pwd2key.h", + "src/aes/sha1.c", + "src/aes/sha1.h", "src/crypt.c", "src/crypt.h", "src/ioapi.c", @@ -50,15 +57,13 @@ "src/zip.h", ] - defines = [ - # "HAVE_AES" - ] + defines = [ "HAVE_AES" ] if (is_nacl) { defines += [ "USE_FILE32API" ] } - configs += [ ":minizip_warnings" ] + configs += [ ":minizip_compiler_flags" ] public_configs = [ ":minizip_include_dirs" ]
diff --git a/third_party/minizip/README.chromium b/third_party/minizip/README.chromium index 0226149..57309c86 100644 --- a/third_party/minizip/README.chromium +++ b/third_party/minizip/README.chromium
@@ -2,7 +2,7 @@ Short name: minizip URL: https://github.com/nmoinvaz/minizip Version: 0 -Revision: dc3ad01e3d5928e9105f770b7e896a8e9fe0d3b4 +Revision: e07e141475220196b55294c8172b274cc32d642d Security critical: yes License: Custom license License File: src/LICENSE
diff --git a/tools/checklicenses/checklicenses.py b/tools/checklicenses/checklicenses.py index 3c84c26..ecd2a15 100755 --- a/tools/checklicenses/checklicenses.py +++ b/tools/checklicenses/checklicenses.py
@@ -119,6 +119,11 @@ 'UNKNOWN', ], + # http://code.google.com/p/google-breakpad/issues/detail?id=450 + 'breakpad/src': [ + 'UNKNOWN', + ], + 'buildtools/third_party/libc++/trunk/test': [ # http://llvm.org/bugs/show_bug.cgi?id=25980 'UNKNOWN', @@ -181,11 +186,6 @@ 'UNKNOWN', ], - # https://crbug.com/google-breakpad/450 - 'third_party/breakpad/breakpad': [ - 'UNKNOWN', - ], - # http://crbug.com/603946 # https://github.com/google/oauth2client/issues/331 # Just imports googleapiclient. Chromite is not shipped.
diff --git a/tools/msan/blacklist.txt b/tools/msan/blacklist.txt index feada5c1..40ea4b8 100644 --- a/tools/msan/blacklist.txt +++ b/tools/msan/blacklist.txt
@@ -20,5 +20,5 @@ fun:unpack_RGB888 # False positives due to use of linux_syscall_support. http://crbug.com/394028 -src:*/third_party/breakpad/breakpad/src/* +src:*/breakpad/src/* src:*/components/crash/content/app/breakpad_linux.cc
diff --git a/tools/perf/benchmarks/loading.py b/tools/perf/benchmarks/loading.py index 0e8ff58..ca0bbcf7 100644 --- a/tools/perf/benchmarks/loading.py +++ b/tools/perf/benchmarks/loading.py
@@ -31,8 +31,7 @@ def CreateStorySet(self, options): return page_sets.LoadingDesktopStorySet( - cache_temperatures=[cache_temperature.PCV1_COLD, - cache_temperature.PCV1_WARM,]) + cache_temperatures=[cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations):
diff --git a/tools/perf/chrome_telemetry_build/BUILD.gn b/tools/perf/chrome_telemetry_build/BUILD.gn index 850be94..54a039c 100644 --- a/tools/perf/chrome_telemetry_build/BUILD.gn +++ b/tools/perf/chrome_telemetry_build/BUILD.gn
@@ -38,14 +38,14 @@ } if (is_linux) { - data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] + data_deps += [ "//breakpad:dump_syms($host_toolchain)" ] } if (is_mac) { data_deps += [ + "//breakpad:dump_syms", "//chrome:chrome_framework", "//chrome:chrome_helper_app", - "//third_party/breakpad:dump_syms", "//third_party/crashpad/crashpad/tools:crashpad_database_util", ] }
diff --git a/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py b/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py index bfaf8158..8821a5e 100644 --- a/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py +++ b/tools/perf/contrib/cros_benchmarks/page_cycler_v2.py
@@ -55,7 +55,7 @@ def CreateStorySet(self, options): return page_sets.Typical25PageSet(run_no_page_interactions=True, cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations): @@ -78,7 +78,7 @@ def CreateStorySet(self, options): return page_sets.IntlArFaHePageSet(cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations): @@ -101,7 +101,7 @@ def CreateStorySet(self, options): return page_sets.IntlEsFrPtBrPageSet(cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations): @@ -124,7 +124,7 @@ def CreateStorySet(self, options): return page_sets.IntlHiRuPageSet(cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations): @@ -146,7 +146,7 @@ def CreateStorySet(self, options): return page_sets.IntlJaZhPageSet(cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations): @@ -169,7 +169,7 @@ def CreateStorySet(self, options): return page_sets.IntlKoThViPageSet(cache_temperatures=[ - cache_temperature.PCV1_COLD, cache_temperature.PCV1_WARM]) + cache_temperature.COLD, cache_temperature.WARM]) def GetExpectations(self): class StoryExpectations(story.expectations.StoryExpectations):
diff --git a/tools/perf/page_sets/loading_desktop.py b/tools/perf/page_sets/loading_desktop.py index dc4e8ff..f2ac38b3 100644 --- a/tools/perf/page_sets/loading_desktop.py +++ b/tools/perf/page_sets/loading_desktop.py
@@ -22,7 +22,7 @@ if cache_temperatures is None: cache_temperatures = [ - cache_temperature_module.PCV1_COLD, cache_temperature_module.PCV1_WARM + cache_temperature_module.COLD, cache_temperature_module.WARM ] # Passed as (story, name) tuple. self.AddStories(
diff --git a/ui/aura/mus/window_port_mus.cc b/ui/aura/mus/window_port_mus.cc index 5e0d594..6121fe3 100644 --- a/ui/aura/mus/window_port_mus.cc +++ b/ui/aura/mus/window_port_mus.cc
@@ -104,15 +104,20 @@ viz::mojom::CompositorFrameSinkClientPtr client; viz::mojom::CompositorFrameSinkClientRequest client_request = mojo::MakeRequest(&client); - constexpr bool enable_surface_synchronization = true; + + viz::ClientLayerTreeFrameSink::InitParams params; + params.gpu_memory_buffer_manager = gpu_memory_buffer_manager; + params.compositor_frame_sink_info = std::move(sink_info); + params.client_request = std::move(client_request); + params.hit_test_data_provider = + base::MakeUnique<HitTestDataProviderAura>(window_); + params.local_surface_id_provider = + base::MakeUnique<viz::DefaultLocalSurfaceIdProvider>(); + params.enable_surface_synchronization = true; + auto layer_tree_frame_sink = base::MakeUnique<viz::ClientLayerTreeFrameSink>( std::move(context_provider), nullptr /* worker_context_provider */, - gpu_memory_buffer_manager, nullptr /* shared_bitmap_manager */, - nullptr /* synthetic_begin_frame_source */, std::move(sink_info), - std::move(client_request), - base::MakeUnique<HitTestDataProviderAura>(window_), - base::MakeUnique<viz::DefaultLocalSurfaceIdProvider>(), - enable_surface_synchronization); + ¶ms); window_tree_client_->AttachCompositorFrameSink( server_id(), std::move(sink_request), std::move(client)); return layer_tree_frame_sink;