diff --git a/.gn b/.gn index 7f3c4ea..a4fb5e74 100644 --- a/.gn +++ b/.gn
@@ -245,8 +245,6 @@ "//third_party/catapult/tracing/BUILD.gn", "//third_party/google_input_tools/inputview.gni", - # CLD2 should be removed soon, delete this when we do. - "//third_party/cld_2/BUILD.gn", "//tools/grit/grit_rule.gni", # Not gypi-to-gn.
diff --git a/DEPS b/DEPS index 3554fe7b..a82af38 100644 --- a/DEPS +++ b/DEPS
@@ -74,7 +74,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '9eccfff674724f42955daabfa5c7ff4db8bafc43', + 'skia_revision': '065b41dd90782e22b5708c8b43696db641d54f46', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -287,9 +287,6 @@ 'condition': 'checkout_linux', }, - 'src/third_party/cld_2/src': - Var('chromium_git') + '/external/github.com/CLD2Owners/cld2.git' + '@' + '84b58a5d7690ebf05a91406f371ce00c3daf31c0', - 'src/third_party/cld_3/src': Var('chromium_git') + '/external/github.com/google/cld_3.git' + '@' + 'ae02d6b8a2af41e87c956c7c7d3f651a8b7b9e79', @@ -311,7 +308,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '4a2cb46cd6011ef96ec553dae8ca50a3583ca266', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '1413d75bc71561db4dd2f9085650c6b58a77161f', # DevTools node modules. Used on Linux buildbots only. 'src/third_party/devtools-node-modules': {
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 00a43e5..62449fd 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1669,6 +1669,8 @@ "shelf/overflow_button_test_api.h", "shelf/shelf_button_pressed_metric_tracker_test_api.cc", "shelf/shelf_button_pressed_metric_tracker_test_api.h", + "shelf/shelf_test_api.cc", + "shelf/shelf_test_api.h", "shelf/shelf_view_test_api.cc", "shelf/shelf_view_test_api.h", "shell/toplevel_window.cc",
diff --git a/ash/mojo_test_interface_factory.cc b/ash/mojo_test_interface_factory.cc index 9820ebe..ba4c6c3 100644 --- a/ash/mojo_test_interface_factory.cc +++ b/ash/mojo_test_interface_factory.cc
@@ -6,7 +6,9 @@ #include <utility> +#include "ash/public/interfaces/shelf_test_api.mojom.h" #include "ash/public/interfaces/system_tray_test_api.mojom.h" +#include "ash/shelf/shelf_test_api.h" #include "ash/system/tray/system_tray_test_api.h" #include "base/bind.h" #include "base/single_thread_task_runner.h" @@ -15,8 +17,12 @@ namespace mojo_test_interface_factory { namespace { -// This isn't strictly necessary, but exists to make threading and arguments -// clearer. +// These functions aren't strictly necessary, but exist to make threading and +// arguments clearer. +void BindShelfTestApiOnMainThread(mojom::ShelfTestApiRequest request) { + ShelfTestApi::BindRequest(std::move(request)); +} + void BindSystemTrayTestApiOnMainThread( mojom::SystemTrayTestApiRequest request) { SystemTrayTestApi::BindRequest(std::move(request)); @@ -27,6 +33,8 @@ void RegisterInterfaces( service_manager::BinderRegistry* registry, scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner) { + registry->AddInterface(base::Bind(&BindShelfTestApiOnMainThread), + main_thread_task_runner); registry->AddInterface(base::Bind(&BindSystemTrayTestApiOnMainThread), main_thread_task_runner); }
diff --git a/ash/mus/manifest.json b/ash/mus/manifest.json index 28a02e18..3f5fe8a 100644 --- a/ash/mus/manifest.json +++ b/ash/mus/manifest.json
@@ -26,12 +26,13 @@ "ash::mojom::SystemTray", "ash::mojom::TabletModeController", "ash::mojom::TrayAction", - "ash::mojom::VoiceInteractionController", + "ash::mojom::VoiceInteractionController", "ash::mojom::VpnList", "ash::mojom::WallpaperController" ], // Test-only interfaces. "test": [ + "ash::mojom::ShelfTestApi", "ash::mojom::SystemTrayTestApi" ], // Only chrome is allowed to use this (required as dbus runs in Chrome).
diff --git a/ash/public/interfaces/BUILD.gn b/ash/public/interfaces/BUILD.gn index 1f54d61..734cb5f4 100644 --- a/ash/public/interfaces/BUILD.gn +++ b/ash/public/interfaces/BUILD.gn
@@ -68,6 +68,7 @@ mojom("test_interfaces") { testonly = true sources = [ + "shelf_test_api.mojom", "system_tray_test_api.mojom", ] deps = [
diff --git a/ash/public/interfaces/shelf_test_api.mojom b/ash/public/interfaces/shelf_test_api.mojom new file mode 100644 index 0000000..57040fce --- /dev/null +++ b/ash/public/interfaces/shelf_test_api.mojom
@@ -0,0 +1,22 @@ +// 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. + +module ash.mojom; + +// All methods operate on the shelf on the primary display. +interface ShelfTestApi { + // Returns true if the shelf is visible (e.g. not auto-hidden). + IsVisible() => (bool visible); + + // Forces a visibility update and then runs the callback. + UpdateVisibility() => (); + + // Returns true if a window is overlapping the shelf, which changes its + // appearance slightly. + HasOverlappingWindow() => (bool overlap); + + // Returns true if the shelf alignment is BOTTOM_LOCKED, which is not exposed + // via prefs. + IsAlignmentBottomLocked() => (bool locked); +};
diff --git a/ash/shelf/shelf_test_api.cc b/ash/shelf/shelf_test_api.cc new file mode 100644 index 0000000..2c86d2f --- /dev/null +++ b/ash/shelf/shelf_test_api.cc
@@ -0,0 +1,43 @@ +// 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 "ash/shelf/shelf_test_api.h" + +#include "ash/root_window_controller.h" +#include "ash/shelf/shelf.h" +#include "ash/shelf/shelf_layout_manager.h" +#include "ash/shell.h" +#include "mojo/public/cpp/bindings/strong_binding.h" + +namespace ash { + +ShelfTestApi::ShelfTestApi(Shelf* shelf) : shelf_(shelf) {} + +ShelfTestApi::~ShelfTestApi() = default; + +// static +void ShelfTestApi::BindRequest(mojom::ShelfTestApiRequest request) { + Shelf* shelf = Shell::Get()->GetPrimaryRootWindowController()->shelf(); + mojo::MakeStrongBinding(std::make_unique<ShelfTestApi>(shelf), + std::move(request)); +} + +void ShelfTestApi::IsVisible(IsVisibleCallback cb) { + std::move(cb).Run(shelf_->shelf_layout_manager()->IsVisible()); +} + +void ShelfTestApi::UpdateVisibility(UpdateVisibilityCallback cb) { + shelf_->shelf_layout_manager()->UpdateVisibilityState(); + std::move(cb).Run(); +} + +void ShelfTestApi::HasOverlappingWindow(HasOverlappingWindowCallback cb) { + std::move(cb).Run(shelf_->shelf_layout_manager()->window_overlaps_shelf()); +} + +void ShelfTestApi::IsAlignmentBottomLocked(IsAlignmentBottomLockedCallback cb) { + std::move(cb).Run(shelf_->alignment() == SHELF_ALIGNMENT_BOTTOM_LOCKED); +} + +} // namespace ash
diff --git a/ash/shelf/shelf_test_api.h b/ash/shelf/shelf_test_api.h new file mode 100644 index 0000000..2a1b537d --- /dev/null +++ b/ash/shelf/shelf_test_api.h
@@ -0,0 +1,38 @@ +// 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 ASH_SHELF_SHELF_TEST_API_H_ +#define ASH_SHELF_SHELF_TEST_API_H_ + +#include "ash/public/interfaces/shelf_test_api.mojom.h" +#include "base/macros.h" + +namespace ash { + +class Shelf; + +// Allows tests to access private state of the shelf. +class ShelfTestApi : public mojom::ShelfTestApi { + public: + explicit ShelfTestApi(Shelf* shelf); + ~ShelfTestApi() override; + + // Creates and binds an instance from a remote request (e.g. from chrome). + static void BindRequest(mojom::ShelfTestApiRequest request); + + // mojom::ShelfTestApi: + void IsVisible(IsVisibleCallback cb) override; + void UpdateVisibility(UpdateVisibilityCallback cb) override; + void HasOverlappingWindow(HasOverlappingWindowCallback cb) override; + void IsAlignmentBottomLocked(IsAlignmentBottomLockedCallback cb) override; + + private: + Shelf* shelf_; + + DISALLOW_COPY_AND_ASSIGN(ShelfTestApi); +}; + +} // namespace ash + +#endif // ASH_SHELF_SHELF_TEST_API_H_
diff --git a/build/config/sysroot.gni b/build/config/sysroot.gni index fa361e6..4dec4e9 100644 --- a/build/config/sysroot.gni +++ b/build/config/sysroot.gni
@@ -40,6 +40,20 @@ } else { assert(false, "No android sysroot for cpu: $target_cpu") } +} else if (is_chromeos && use_sysroot) { + if (current_cpu == "x64") { + sysroot = "$target_sysroot_dir/debian_stretch_amd64-sysroot" + } else if (current_cpu == "x86") { + sysroot = "$target_sysroot_dir/debian_stretch_i386-sysroot" + } else if (current_cpu == "mipsel") { + sysroot = "$target_sysroot_dir/debian_stretch_mips-sysroot" + } else if (current_cpu == "arm") { + sysroot = "$target_sysroot_dir/debian_stretch_arm-sysroot" + } else if (current_cpu == "arm64") { + sysroot = "$target_sysroot_dir/debian_stretch_arm64-sysroot" + } else { + assert(false, "No chromeos sysroot for cpu: $target_cpu") + } } else if (is_linux && use_sysroot) { # By default build against a sysroot image downloaded from Cloud Storage # during gclient runhooks.
diff --git a/build/linux/sysroot_scripts/install-sysroot.py b/build/linux/sysroot_scripts/install-sysroot.py index de4eead5..e6c2c9b 100755 --- a/build/linux/sysroot_scripts/install-sysroot.py +++ b/build/linux/sysroot_scripts/install-sysroot.py
@@ -159,6 +159,12 @@ print 'You much specify either --arch, --all or --running-as-hook' return 1 + # Desktop Chromium OS builds require the stretch sysroot. + # TODO(thomasanderson): only download this when the GN arg target_os + # == 'chromeos', when the functionality to perform the check becomes + # available. + InstallSysroot('Stretch', 'amd64') + return 0
diff --git a/build/linux/sysroot_scripts/packagelist.jessie.amd64 b/build/linux/sysroot_scripts/packagelist.jessie.amd64 index 7642c26..6ac2bd9 100644 --- a/build/linux/sysroot_scripts/packagelist.jessie.amd64 +++ b/build/linux/sysroot_scripts/packagelist.jessie.amd64
@@ -69,6 +69,14 @@ http://ftp.us.debian.org/debian/pool/main/libp/libp11/libp11-2_0.2.8-5_amd64.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_amd64.deb http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.4.1-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.4.1-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.2-3_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.2-3_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.2-3_amd64.deb @@ -206,7 +214,7 @@ http://security.debian.org/pool/updates/main/libt/libtasn1-6/libtasn1-6_4.2-3+deb8u3_amd64.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4_4.12-1+debu8u1_amd64.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4-dev_4.12-1+debu8u1_amd64.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u2_amd64.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u2_amd64.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_amd64.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u6_amd64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u3_amd64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u3_amd64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_amd64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u7_amd64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.jessie.arm b/build/linux/sysroot_scripts/packagelist.jessie.arm index 4d220fe9..7aa8748 100644 --- a/build/linux/sysroot_scripts/packagelist.jessie.arm +++ b/build/linux/sysroot_scripts/packagelist.jessie.arm
@@ -66,6 +66,14 @@ http://ftp.us.debian.org/debian/pool/main/libp/libp11/libp11-2_0.2.8-5_armhf.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_armhf.deb http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.4.1-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.4.1-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.2-3_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.2-3_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.2-3_armhf.deb @@ -203,7 +211,7 @@ http://security.debian.org/pool/updates/main/libt/libtasn1-6/libtasn1-6_4.2-3+deb8u3_armhf.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4_4.12-1+debu8u1_armhf.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4-dev_4.12-1+debu8u1_armhf.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u2_armhf.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u2_armhf.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u6_armhf.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u3_armhf.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u3_armhf.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_armhf.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u7_armhf.deb
diff --git a/build/linux/sysroot_scripts/packagelist.jessie.arm64 b/build/linux/sysroot_scripts/packagelist.jessie.arm64 index 69da69db..0793eb50 100644 --- a/build/linux/sysroot_scripts/packagelist.jessie.arm64 +++ b/build/linux/sysroot_scripts/packagelist.jessie.arm64
@@ -65,6 +65,14 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_arm64.deb http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.3-2_arm64.deb http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.21-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.4.1-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.4.1-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.2-3_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.2-3_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.2-3_arm64.deb @@ -205,7 +213,7 @@ http://security.debian.org/pool/updates/main/libt/libtasn1-6/libtasn1-6_4.2-3+deb8u3_arm64.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4_4.12-1+debu8u1_arm64.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4-dev_4.12-1+debu8u1_arm64.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u2_arm64.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u2_arm64.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_arm64.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u6_arm64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u3_arm64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u3_arm64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_arm64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u7_arm64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.jessie.i386 b/build/linux/sysroot_scripts/packagelist.jessie.i386 index 6c8e623..8e979feb 100644 --- a/build/linux/sysroot_scripts/packagelist.jessie.i386 +++ b/build/linux/sysroot_scripts/packagelist.jessie.i386
@@ -67,6 +67,14 @@ http://ftp.us.debian.org/debian/pool/main/libp/libp11/libp11-2_0.2.8-5_i386.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_i386.deb http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.4.1-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.4.1-1_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.2-3_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.2-3_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.2-3_i386.deb @@ -204,7 +212,7 @@ http://security.debian.org/pool/updates/main/libt/libtasn1-6/libtasn1-6_4.2-3+deb8u3_i386.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4_4.12-1+debu8u1_i386.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4-dev_4.12-1+debu8u1_i386.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u2_i386.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u2_i386.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_i386.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u6_i386.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u3_i386.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u3_i386.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_i386.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u7_i386.deb
diff --git a/build/linux/sysroot_scripts/packagelist.jessie.mipsel b/build/linux/sysroot_scripts/packagelist.jessie.mipsel index 4392e12..4f328ddc 100644 --- a/build/linux/sysroot_scripts/packagelist.jessie.mipsel +++ b/build/linux/sysroot_scripts/packagelist.jessie.mipsel
@@ -61,6 +61,14 @@ http://ftp.us.debian.org/debian/pool/main/libp/libp11/libp11-2_0.2.8-5_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.4.1-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.4.1-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.2-3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.2-3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.2-3_mipsel.deb @@ -198,7 +206,7 @@ http://security.debian.org/pool/updates/main/libt/libtasn1-6/libtasn1-6_4.2-3+deb8u3_mipsel.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4_4.12-1+debu8u1_mipsel.deb http://security.debian.org/pool/updates/main/n/nspr/libnspr4-dev_4.12-1+debu8u1_mipsel.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u2_mipsel.deb -http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u2_mipsel.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_mipsel.deb -http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u6_mipsel.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26-1+debu8u3_mipsel.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26-1+debu8u3_mipsel.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_mipsel.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1t-1+deb8u7_mipsel.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.amd64 b/build/linux/sysroot_scripts/packagelist.stretch.amd64 index 39f8b9e0..6e01c0d 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.amd64 +++ b/build/linux/sysroot_scripts/packagelist.stretch.amd64
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_amd64.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_amd64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_amd64.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_amd64.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_amd64.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_amd64.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_amd64.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_amd64.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_amd64.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_amd64.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_amd64.deb @@ -63,16 +63,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.74-1_amd64.deb @@ -96,8 +96,16 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_amd64.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_amd64.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_amd64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_amd64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_amd64.deb @@ -156,11 +164,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_amd64.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_amd64.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_amd64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_amd64.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_amd64.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_amd64.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_amd64.deb @@ -183,9 +186,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_amd64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_amd64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_amd64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_amd64.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_amd64.deb @@ -223,3 +226,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_amd64.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_amd64.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_amd64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_amd64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_amd64.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_amd64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_amd64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_amd64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.arm b/build/linux/sysroot_scripts/packagelist.stretch.arm index e87baa3..d58ff93 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.arm +++ b/build/linux/sysroot_scripts/packagelist.stretch.arm
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_armhf.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_armhf.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_armhf.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_armhf.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_armhf.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_armhf.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_armhf.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_armhf.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_armhf.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_armhf.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_armhf.deb @@ -57,16 +57,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.74-1_armhf.deb @@ -93,8 +93,16 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_armhf.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_armhf.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_armhf.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_armhf.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_armhf.deb @@ -153,11 +161,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_armhf.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_armhf.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_armhf.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_armhf.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_armhf.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_armhf.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_armhf.deb @@ -180,9 +183,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_armhf.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_armhf.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_armhf.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_armhf.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_armhf.deb @@ -220,3 +223,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_armhf.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_armhf.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_armhf.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_armhf.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_armhf.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_armhf.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_armhf.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_armhf.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.arm64 b/build/linux/sysroot_scripts/packagelist.stretch.arm64 index cd75e2c..830ac47 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.arm64 +++ b/build/linux/sysroot_scripts/packagelist.stretch.arm64
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_arm64.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_arm64.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_arm64.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_arm64.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_arm64.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_arm64.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_arm64.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_arm64.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_arm64.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_arm64.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_arm64.deb @@ -59,16 +59,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libd/libdatrie/libdatrie1_0.2.10-4+b1_arm64.deb @@ -94,9 +94,17 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_arm64.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_arm64.deb http://ftp.us.debian.org/debian/pool/main/libt/libthai/libthai0_0.1.26-1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_arm64.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_arm64.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_arm64.deb @@ -155,11 +163,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_arm64.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_arm64.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_arm64.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_arm64.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_arm64.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_arm64.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_arm64.deb @@ -182,9 +185,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_arm64.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_arm64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_arm64.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_arm64.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_arm64.deb @@ -222,3 +225,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_arm64.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_arm64.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_arm64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_arm64.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_arm64.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_arm64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_arm64.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_arm64.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.i386 b/build/linux/sysroot_scripts/packagelist.stretch.i386 index 6c803a1e..8c30574 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.i386 +++ b/build/linux/sysroot_scripts/packagelist.stretch.i386
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_i386.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_i386.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_i386.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_i386.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_i386.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_i386.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_i386.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_i386.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_i386.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_i386.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_i386.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_i386.deb @@ -61,16 +61,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_i386.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_i386.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_i386.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_i386.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_i386.deb http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.74-1_i386.deb @@ -94,8 +94,16 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_i386.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_i386.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_i386.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_i386.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_i386.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_i386.deb @@ -154,11 +162,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_i386.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_i386.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_i386.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_i386.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_i386.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_i386.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_i386.deb @@ -181,9 +184,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_i386.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_i386.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_i386.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_i386.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_i386.deb @@ -221,3 +224,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_i386.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_i386.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_i386.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_i386.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_i386.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_i386.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_i386.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_i386.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.mips64el b/build/linux/sysroot_scripts/packagelist.stretch.mips64el index 9179d18..199b641 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.mips64el +++ b/build/linux/sysroot_scripts/packagelist.stretch.mips64el
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_mips64el.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_mips64el.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_mips64el.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_mips64el.deb @@ -55,16 +55,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.74-1_mips64el.deb @@ -87,8 +87,16 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_mips64el.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_mips64el.deb @@ -147,11 +155,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_mips64el.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_mips64el.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_mips64el.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_mips64el.deb @@ -174,9 +177,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_mips64el.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_mips64el.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_mips64el.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_mips64el.deb @@ -214,3 +217,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_mips64el.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_mips64el.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_mips64el.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_mips64el.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_mips64el.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_mips64el.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_mips64el.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_mips64el.deb
diff --git a/build/linux/sysroot_scripts/packagelist.stretch.mipsel b/build/linux/sysroot_scripts/packagelist.stretch.mipsel index 8465c68d..54ef062 100644 --- a/build/linux/sysroot_scripts/packagelist.stretch.mipsel +++ b/build/linux/sysroot_scripts/packagelist.stretch.mipsel
@@ -4,8 +4,8 @@ http://ftp.us.debian.org/debian/pool/main/a/atk1.0/libatk1.0-dev_2.22.0-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.22.0-2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/a/at-spi2-atk/libatk-bridge2.0-dev_2.22.0-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-0_2.22.0-6+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/a/at-spi2-core/libatspi2.0-dev_2.22.0-6+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/a/attr/libattr1_2.4.47-2+b2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/a/audit/libaudit1_2.6.7-2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/a/avahi/libavahi-client3_0.6.32-2_mipsel.deb @@ -21,8 +21,8 @@ http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2_2.2.1-8_mipsel.deb http://ftp.us.debian.org/debian/pool/main/c/cups/libcupsimage2-dev_2.2.1-8_mipsel.deb http://ftp.us.debian.org/debian/pool/main/d/dbus-glib/libdbus-glib-1-2_0.108-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.18-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.18-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-3_1.10.22-0+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/d/dbus/libdbus-1-dev_1.10.22-0+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf1_0.26.0-2+b1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/d/d-conf/libdconf-dev_0.26.0-2+b1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/e/e2fsprogs/comerr-dev_2.1-1.43.4-2_mipsel.deb @@ -55,16 +55,16 @@ http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-gobject0_1.4.2-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/h/harfbuzz/libharfbuzz-icu0_1.4.2-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/k/keyutils/libkeyutils1_1.5.9-9_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/krb5-multidev_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssapi-krb5-2_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libgssrpc4_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libk5crypto3_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5clnt-mit11_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkadm5srv-mit11_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkdb5-8_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-3_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5-dev_1.15-1+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/k/krb5/libkrb5support0_1.15-1+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap2_2.25-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libc/libcap2/libcap-dev_2.25-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libd/libdrm/libdrm2_2.4.74-1_mipsel.deb @@ -87,8 +87,16 @@ http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng16-16_1.6.28-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libp/libpng1.6/libpng-dev_1.6.28-1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libp/libpthread-stubs/libpthread-stubs0-dev_0.3-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libs/libselinux/libselinux1_2.6-3+b3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libt/libtasn1-6/libtasn1-6_4.10-1.1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-dev_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-drm1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-egl1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-glx1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-tpi1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-wayland1_1.7.3-2_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/libv/libva/libva-x11-1_1.7.3-2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-6_1.6.4-3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-dev_1.6.4-3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/libx/libx11/libx11-xcb1_1.6.4-3_mipsel.deb @@ -147,11 +155,6 @@ http://ftp.us.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_mipsel.deb http://ftp.us.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl1.0/libssl1.0.2_1.0.2l-2_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.0f-3_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl-dev_1.1.0f-3_mipsel.deb http://ftp.us.debian.org/debian/pool/main/o/orbit2/liborbit2_2.14.19-2+b1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/p/p11-kit/libp11-kit0_0.23.3-2_mipsel.deb http://ftp.us.debian.org/debian/pool/main/p/pam/libpam0g_1.1.8-3.6_mipsel.deb @@ -174,9 +177,9 @@ http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse0_10.0-1+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-dev_10.0-1+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/p/pulseaudio/libpulse-mainloop-glib0_10.0-1+deb9u1_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4_mipsel.deb -http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd2_0.8.6-4+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/libspeechd-dev_0.8.6-4+deb9u1_mipsel.deb +http://ftp.us.debian.org/debian/pool/main/s/speech-dispatcher/speech-dispatcher_0.8.6-4+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev1_232-25+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/s/systemd/libudev-dev_232-25+deb9u1_mipsel.deb http://ftp.us.debian.org/debian/pool/main/w/wayland/libwayland-client0_1.12.0-1_mipsel.deb @@ -214,3 +217,8 @@ http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20_1.7.6-2+deb9u2_mipsel.deb http://security.debian.org/pool/updates/main/libg/libgcrypt20/libgcrypt20-dev_1.7.6-2+deb9u2_mipsel.deb http://security.debian.org/pool/updates/main/l/linux/linux-libc-dev_4.9.30-2+deb9u5_mipsel.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3_3.26.2-1.1+deb9u1_mipsel.deb +http://security.debian.org/pool/updates/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_mipsel.deb +http://security.debian.org/pool/updates/main/o/openssl1.0/libssl1.0.2_1.0.2l-2+deb9u1_mipsel.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl1.1_1.1.0f-3+deb9u1_mipsel.deb +http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.1.0f-3+deb9u1_mipsel.deb
diff --git a/build/linux/sysroot_scripts/sysroot-creator-jessie.sh b/build/linux/sysroot_scripts/sysroot-creator-jessie.sh index 0a4cb2f..0ca91cf 100755 --- a/build/linux/sysroot_scripts/sysroot-creator-jessie.sh +++ b/build/linux/sysroot_scripts/sysroot-creator-jessie.sh
@@ -163,6 +163,14 @@ libtasn1-6 libudev-dev libudev1 + libva1 + libva-dev + libva-drm1 + libva-egl1 + libva-glx1 + libva-tpi1 + libva-wayland1 + libva-x11-1 libwayland-client0 libwayland-cursor0 libwayland-dev
diff --git a/build/linux/sysroot_scripts/sysroot-creator-stretch.sh b/build/linux/sysroot_scripts/sysroot-creator-stretch.sh index 81c3147..40cf046 100755 --- a/build/linux/sysroot_scripts/sysroot-creator-stretch.sh +++ b/build/linux/sysroot_scripts/sysroot-creator-stretch.sh
@@ -175,6 +175,14 @@ libtasn1-6 libudev-dev libudev1 + libva1 + libva-dev + libva-drm1 + libva-egl1 + libva-glx1 + libva-tpi1 + libva-wayland1 + libva-x11-1 libwayland-client0 libwayland-cursor0 libwayland-dev
diff --git a/build/linux/sysroot_scripts/sysroots.json b/build/linux/sysroot_scripts/sysroots.json index 14c6716..1c87b26c 100644 --- a/build/linux/sysroot_scripts/sysroots.json +++ b/build/linux/sysroot_scripts/sysroots.json
@@ -1,67 +1,67 @@ { "jessie_amd64": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "cdf4b63d578b78491a3dd527730b4abb6ad3c0ef", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "3f608208f525d85a934e5d74ca0a76f8f234aea5", "SysrootDir": "debian_jessie_amd64-sysroot", "Tarball": "debian_jessie_amd64_sysroot.tar.xz" }, "jessie_arm": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "c5eeee2f84f07c76f4d46849de561b7ec3ca7638", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "5565736d389d834938b238bf6391a7facef1c26f", "SysrootDir": "debian_jessie_arm-sysroot", "Tarball": "debian_jessie_arm_sysroot.tar.xz" }, "jessie_arm64": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "ed372720bf897cd5565e552c6a7f0d510b572c44", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "6281c416ea24fdb4d1e5c411feb7cc88eb87aecd", "SysrootDir": "debian_jessie_arm64-sysroot", "Tarball": "debian_jessie_arm64_sysroot.tar.xz" }, "jessie_i386": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "3c9ce5efc973b5342b04e9c9c97551ce8ce2c76b", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "0315e93779f58164ff307f89c11756aa9377dfac", "SysrootDir": "debian_jessie_i386-sysroot", "Tarball": "debian_jessie_i386_sysroot.tar.xz" }, "jessie_mips": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "567a036527d98388271c097f225212080cf814a2", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "3e2487e2048c0d468685068dbd96950af50a4165", "SysrootDir": "debian_jessie_mips-sysroot", "Tarball": "debian_jessie_mips_sysroot.tar.xz" }, "stretch_amd64": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "83e93938092c750565435663049272a50b657c3e", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "a73bcd43fc4910afe264f730f7c06f5ef5c965cd", "SysrootDir": "debian_stretch_amd64-sysroot", "Tarball": "debian_stretch_amd64_sysroot.tar.xz" }, "stretch_arm": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "4f61e21b003d94d6004c07390e663d3f8e638fc5", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "7c5c22fbfca6fd825a63363bc906fbfa800d7f95", "SysrootDir": "debian_stretch_arm-sysroot", "Tarball": "debian_stretch_arm_sysroot.tar.xz" }, "stretch_arm64": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "f812db22eba59fe4890b06fca3ddcc109f616de0", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "ab8063f2d9d6b777797653041851c3f9274a33af", "SysrootDir": "debian_stretch_arm64-sysroot", "Tarball": "debian_stretch_arm64_sysroot.tar.xz" }, "stretch_i386": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "f45dd3370b5d40e3e8489766f5ec6c015647c1d6", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "72ed2ce337bd40e8e7a89e5501b0b63050453d6c", "SysrootDir": "debian_stretch_i386-sysroot", "Tarball": "debian_stretch_i386_sysroot.tar.xz" }, "stretch_mips": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "2ea51db835e777858befcbb6e7cfb42f3f655f9f", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "fe5949ed3795aa64913a27389052637ea2629da3", "SysrootDir": "debian_stretch_mips-sysroot", "Tarball": "debian_stretch_mips_sysroot.tar.xz" }, "stretch_mips64el": { - "Revision": "823bd3badb80d935f8029a06218d88dcf380ca82", - "Sha1Sum": "1d35dfdc1573a7a2a6237160a8dd122dc7a5fff8", + "Revision": "1126d9b629c97385a503debac7a1b59e60a3ab1b", + "Sha1Sum": "5d95b45a9633c3c874d3ab9326306b0e951f01f1", "SysrootDir": "debian_stretch_mips64el-sysroot", "Tarball": "debian_stretch_mips64el_sysroot.tar.xz" }
diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc index e793690..fac2392 100644 --- a/cc/layers/surface_layer.cc +++ b/cc/layers/surface_layer.cc
@@ -65,12 +65,17 @@ } void SurfaceLayer::SetPrimarySurfaceInfo(const viz::SurfaceInfo& surface_info) { + if (primary_surface_info_ == surface_info) + return; primary_surface_info_ = surface_info; UpdateDrawsContent(HasDrawableContent()); SetNeedsCommit(); } void SurfaceLayer::SetFallbackSurfaceId(const viz::SurfaceId& surface_id) { + if (fallback_surface_id_ == surface_id) + return; + RemoveReference(std::move(fallback_reference_returner_)); if (layer_tree_host()) layer_tree_host()->RemoveSurfaceLayerId(fallback_surface_id_); @@ -86,12 +91,16 @@ } void SurfaceLayer::SetDefaultBackgroundColor(SkColor background_color) { + if (default_background_color_ == background_color) + return; default_background_color_ = background_color; SetNeedsPushProperties(); } void SurfaceLayer::SetStretchContentToFillBounds( bool stretch_content_to_fill_bounds) { + if (stretch_content_to_fill_bounds_ == stretch_content_to_fill_bounds) + return; stretch_content_to_fill_bounds_ = stretch_content_to_fill_bounds; SetNeedsPushProperties(); }
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index 9a2f9767..61a017f 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -390,7 +390,7 @@ "//net:net_resources", "//ppapi/features", "//services/service_manager/embedder", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", "//third_party/wtl", "//ui/views", ] @@ -1172,7 +1172,7 @@ "//content/public/common:service_names", "//headless:headless_shell_lib", "//services/service_manager/embedder", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", ] if (is_component_build) {
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd index aa9596a..2214c884 100644 --- a/chrome/app/chromium_strings.grd +++ b/chrome/app/chromium_strings.grd
@@ -722,16 +722,6 @@ </message> </if> - <!-- SRT bubble messages. - This string is for the old Chrome Cleanup version and should be - deleted as soon as all Chrome Cleanup UI is fully integrated into - Chrome. --> - <if expr="is_win"> - <message name="IDS_SRT_BUBBLE_TITLE" desc="Text for the title of the software removal tool bubble view."> - Chromium has detected unusual behavior - </message> - </if> - <!-- Chrome Cleanup prompt and web UI. Note: these strings should only be used by Google Chrome, but omitting them brings up a hash collision error. -->
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 44883e7a..da28577 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -5890,36 +5890,6 @@ Report an issue </message> - <!-- SRT bubble messages. - These strings are for the old Chrome Cleanup version and should be - deleted as soon as all Chrome Cleanup UI is fully integrated into - Chrome. --> - <message name="IDS_SRT_BUBBLE_DOWNLOAD_BUTTON_TEXT" desc="Download button of the Chrome Cleanup Tool bubble"> - Get the Chrome Cleanup Tool - </message> - <message name="IDS_SRT_BUBBLE_DISMISS" desc="Dismiss button text of the Chrome Cleanup Tool bubble"> - Dismiss - </message> - <message name="IDS_SRT_BUBBLE_RUN_BUTTON_TEXT" desc="Run button of the Chrome Cleanup Tool bubble"> - Run Chrome Cleanup Tool - </message> - <message name="IDS_SRT_BUBBLE_TEXT" desc="Text for the Chrome Cleanup Tool bubble view full description."> - Is Chrome crashing, showing unusual startup pages, toolbars, or unexpected ads you can't get rid of, or otherwise changing your browsing experience? You may be able to fix the problem by running the Chrome Cleanup Tool. - </message> - <message name="IDS_SRT_BUBBLE_TEXT_2_UWS_NAMES" desc="Text to put within IDS_SRT_BUBBLE_TEXT_WITH_UWS_NAME when there are 2 UwS found, e.g., Software1 and Software2."> - <ph name="UWS_NAME">$1<ex>SoftwareName</ex></ph> and <ph name="UWS_NAME">$2<ex>Software2</ex></ph> - </message> - <if expr="use_titlecase"> - <message name="IDS_SRT_MENU_ITEM" desc="In Title Case: Text for the Chrome menu option to be shown when unusual behavior was detected."> - Unusual Behavior Detected - </message> - </if> - <if expr="not use_titlecase"> - <message name="IDS_SRT_MENU_ITEM" desc="Text for the Chrome menu option to be shown when unusual behavior was detected."> - Unusual behavior detected - </message> - </if> - <!-- Chrome Cleanup prompt and web UI --> <if expr="is_win"> <message name="IDS_CHROME_CLEANUP_PROMPT_DETAILS_BUTTON_LABEL" desc="The button in the Chrome Cleanup dialog that lets users see more details, such as what files will be deleted from their computer. Chrome browser shows the dialog when unwanted software, like ad injectors or software that changes the user's settings without their knowledge, is found on the user's computer. Noun; verb 'See' is omitted.">
diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd index 4c7194d..b8f5ae3 100644 --- a/chrome/app/google_chrome_strings.grd +++ b/chrome/app/google_chrome_strings.grd
@@ -732,16 +732,6 @@ </message> </if> - <!-- SRT bubble messages. - This string is for the old Chrome Cleanup version and should be - deleted as soon as all Chrome Cleanup UI is fully integrated into - Chrome. --> - <if expr="is_win"> - <message name="IDS_SRT_BUBBLE_TITLE" desc="Text for the title of the software removal tool bubble view."> - Chrome has detected unusual behavior - </message> - </if> - <!-- Chrome Cleanup prompt and web UI --> <if expr="is_win"> <message name="IDS_CHROME_CLEANUP_PROMPT_EXPLANATION" desc="Description in the Chrome Cleanup dialog that Chrome browser shows when unwanted software, like ad injectors or software that changes the user's settings without their knowledge, is found on the user's computer. Appears under the title asking 'Remove harmful software?' Actor is Chrome; we are asking, Do you want Chrome to remove harmful software? 'it' is harmful software. User has the option of clicking 'Remove' to proceed with a cleanup, or 'Details' to see more details. Preferrably, the translation for this string should match IDS_CHROME_CLEANUP_WEBUI_EXPLANATION.">
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc index fa4cdfe..fff25004 100644 --- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc +++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_browsertest.cc
@@ -9,7 +9,6 @@ #include "base/path_service.h" #include "base/test/histogram_tester.h" #include "base/threading/thread_restrictions.h" -#include "build/build_config.h" #include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_error_reporter.h" #include "chrome/browser/extensions/extension_util.h" @@ -191,15 +190,9 @@ using DeclarativeNetRequestBrowserTest_Packed = DeclarativeNetRequestBrowserTest; -#if defined(OS_WIN) && !defined(NDEBUG) -// TODO: test times out on win7-debug. http://crbug.com/782326. -#define MAYBE_BlockRequests_UrlFilter DISABLED_BlockRequests_UrlFilter -#else -#define MAYBE_BlockRequests_UrlFilter BlockRequests_UrlFilter -#endif // Tests the "urlFilter" property of a declarative rule condition. IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, - MAYBE_BlockRequests_UrlFilter) { + BlockRequests_UrlFilter) { struct { std::string url_filter; int id; @@ -209,8 +202,7 @@ {"|http://*.us", 3}, {"pages_with_script/page2.html|", 4}, {"|http://msn*/pages_with_script/page.html|", 5}, - {"pages_with_script/page2.html?q=bye^", 6}, - {"%20", 7}, // Block any urls with space. + {"%20", 6}, // Block any urls with space. }; // Rule |i| is the rule with id |i|. @@ -231,37 +223,11 @@ {"msn.com", "/pages_with_script/page.html", false}, // Rule 5 {"msn.com", "/pages_with_script/page.html?q=hello", true}, {"a.msn.com", "/pages_with_script/page.html", true}, - - // '^' (Separator character) matches anything except a letter, a digit or - // one of the following: _ - . %. - {"google.com", "/pages_with_script/page2.html?q=bye&x=1", - false}, // Rule 6 - {"google.com", "/pages_with_script/page2.html?q=bye#x=1", - false}, // Rule 6 - {"google.com", "/pages_with_script/page2.html?q=bye:", false}, // Rule 6 - {"google.com", "/pages_with_script/page2.html?q=bye3", true}, - {"google.com", "/pages_with_script/page2.html?q=byea", true}, - {"google.com", "/pages_with_script/page2.html?q=bye_", true}, - {"google.com", "/pages_with_script/page2.html?q=bye-", true}, - {"google.com", "/pages_with_script/page2.html?q=bye%", true}, - {"google.com", "/pages_with_script/page2.html?q=bye.", true}, - - {"abc.com", "/pages_with_script/page.html?q=hi bye", false}, // Rule 7 - {"abc.com", "/pages_with_script/page.html?q=hi%20bye", false}, // Rule 7 + {"abc.com", "/pages_with_script/page.html?q=hi bye", false}, // Rule 6 + {"abc.com", "/pages_with_script/page.html?q=hi%20bye", false}, // Rule 6 {"abc.com", "/pages_with_script/page.html?q=hibye", true}, }; - // Verify that all test urls load successfully without the DNR extension. - for (const auto& test_case : test_cases) { - GURL url = - embedded_test_server()->GetURL(test_case.hostname, test_case.path); - SCOPED_TRACE(base::StringPrintf("Testing %s", url.spec().c_str())); - - ui_test_utils::NavigateToURL(browser(), url); - EXPECT_TRUE(WasFrameWithScriptLoaded(GetMainFrame())); - EXPECT_EQ(content::PAGE_TYPE_NORMAL, GetPageType()); - } - // Load the extension. std::vector<TestRule> rules; for (const auto& rule_data : rules_data) { @@ -289,6 +255,46 @@ } } +// Tests the matching behavior of the separator ('^') character. +IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest, + BlockRequests_Separator) { + TestRule rule = CreateGenericRule(); + rule.condition->url_filter = + std::string("pages_with_script/page2.html?q=bye^"); + ASSERT_NO_FATAL_FAILURE(LoadExtensionWithRules({rule})); + + // '^' (Separator character) matches anything except a letter, a digit or + // one of the following: _ - . %. + struct { + std::string url_path; + bool expect_main_frame_loaded; + } test_cases[] = { + {"/pages_with_script/page2.html?q=bye&x=1", false}, + {"/pages_with_script/page2.html?q=bye#x=1", false}, + {"/pages_with_script/page2.html?q=bye:", false}, + {"/pages_with_script/page2.html?q=bye3", true}, + {"/pages_with_script/page2.html?q=byea", true}, + {"/pages_with_script/page2.html?q=bye_", true}, + {"/pages_with_script/page2.html?q=bye-", true}, + {"/pages_with_script/page2.html?q=bye%", true}, + {"/pages_with_script/page2.html?q=bye.", true}, + }; + + for (const auto& test_case : test_cases) { + GURL url = embedded_test_server()->GetURL("google.com", test_case.url_path); + SCOPED_TRACE(base::StringPrintf("Testing %s", url.spec().c_str())); + + ui_test_utils::NavigateToURL(browser(), url); + EXPECT_EQ(test_case.expect_main_frame_loaded, + WasFrameWithScriptLoaded(GetMainFrame())); + + content::PageType expected_page_type = test_case.expect_main_frame_loaded + ? content::PAGE_TYPE_NORMAL + : content::PAGE_TYPE_ERROR; + EXPECT_EQ(expected_page_type, GetPageType()); + } +} + // Tests that the separator character '^' correctly matches the end of the url. // TODO(crbug.com/772260): Enable once the bug is fixed. IN_PROC_BROWSER_TEST_P(DeclarativeNetRequestBrowserTest,
diff --git a/chrome/browser/media/webrtc/media_stream_devices_controller.cc b/chrome/browser/media/webrtc/media_stream_devices_controller.cc index 0e18b05..f71c674 100644 --- a/chrome/browser/media/webrtc/media_stream_devices_controller.cc +++ b/chrome/browser/media/webrtc/media_stream_devices_controller.cc
@@ -34,6 +34,7 @@ #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_widget_host_view.h" +#include "content/public/common/content_features.h" #include "content/public/common/media_stream_request.h" #include "content/public/common/origin_util.h" #include "extensions/common/constants.h" @@ -308,8 +309,12 @@ // Log a deprecation warning for pepper requests made when a feature policy is // in place. Other types of requests (namely getUserMedia requests) have a - // deprecation warning logged in blink. - if (request_.request_type == content::MEDIA_OPEN_DEVICE_PEPPER_ONLY) { + // deprecation warning logged in blink. Only do this if + // kUseFeaturePolicyForPermissions isn't yet enabled. When it is enabled, we + // log an error in PermissionContextBase as a part of the request. + if (request_.request_type == content::MEDIA_OPEN_DEVICE_PEPPER_ONLY && + !base::FeatureList::IsEnabled( + features::kUseFeaturePolicyForPermissions)) { DCHECK_NE(CONTENT_SETTING_DEFAULT, audio_setting_); DCHECK_NE(CONTENT_SETTING_DEFAULT, video_setting_); content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 44710f52..b92e186a 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -495,7 +495,6 @@ "//third_party/adobe/flash:flapper_version_h", "//third_party/brotli:dec", "//third_party/cacheinvalidation", - "//third_party/cld:cld_version", "//third_party/icu", "//third_party/leveldatabase", "//third_party/re2",
diff --git a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc index 3c17a3e..98c65ca 100644 --- a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc +++ b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.cc
@@ -53,9 +53,6 @@ new AppShortcutLauncherItemController(shelf_id)); } -// Item controller for an app shortcut. Shortcuts track app and launcher ids, -// but do not have any associated windows (opening a shortcut will replace the -// item with the appropriate ash::ShelfItemDelegate type). AppShortcutLauncherItemController::AppShortcutLauncherItemController( const ash::ShelfID& shelf_id) : ash::ShelfItemDelegate(shelf_id) {
diff --git a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h index 87a5597..a09b812 100644 --- a/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h +++ b/chrome/browser/ui/ash/launcher/app_shortcut_launcher_item_controller.h
@@ -24,9 +24,14 @@ class Extension; } -// Item controller for an app shortcut. Shortcuts track app and launcher ids, -// but do not have any associated windows (opening a shortcut will replace the -// item with the appropriate ash::ShelfItemDelegate type). +// Item controller for an app shortcut. +// If the associated app is a platform or ARC app, launching the app replaces +// this instance with an AppWindowLauncherItemController to handle the app's +// windows. Closing all associated AppWindows will replace that delegate with +// a new instance of this class (if the app is pinned to the shelf). +// +// Non-platform app types do not use AppWindows. This delegate is not replaced +// when browser windows are opened for those app types. class AppShortcutLauncherItemController : public ash::ShelfItemDelegate { public: ~AppShortcutLauncherItemController() override;
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc index 37e4c0ff..14be02f 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc
@@ -579,10 +579,14 @@ std::vector<content::WebContents*> ChromeLauncherController::GetV1ApplicationsFromAppId( const std::string& app_id) { + // Use the app's shelf item to find that app's windows. const ash::ShelfItem* item = GetItem(ash::ShelfID(app_id)); - // If there is no such item pinned to the launcher, no menu gets created. - if (!item || item->type != ash::TYPE_PINNED_APP) + if (!item) return std::vector<content::WebContents*>(); + + // This should only be called for apps. + DCHECK(item->type == ash::TYPE_APP || item->type == ash::TYPE_PINNED_APP); + ash::ShelfItemDelegate* delegate = model_->GetShelfItemDelegate(item->id); AppShortcutLauncherItemController* item_controller = static_cast<AppShortcutLauncherItemController*>(delegate);
diff --git a/chrome/browser/ui/ash/shelf_browsertest.cc b/chrome/browser/ui/ash/shelf_browsertest.cc index 022c90b..32d4f9f5 100644 --- a/chrome/browser/ui/ash/shelf_browsertest.cc +++ b/chrome/browser/ui/ash/shelf_browsertest.cc
@@ -2,8 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/shelf/shelf.h" -#include "ash/shelf/shelf_layout_manager.h" +#include "ash/public/cpp/shelf_prefs.h" +#include "ash/public/interfaces/constants.mojom.h" +#include "ash/public/interfaces/shelf_test_api.mojom.h" #include "base/command_line.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ui/browser.h" @@ -12,38 +13,85 @@ #include "chrome/common/chrome_switches.h" #include "chrome/test/base/in_process_browser_test.h" #include "chromeos/chromeos_switches.h" +#include "components/signin/core/account_id/account_id.h" #include "components/user_manager/user_names.h" +#include "content/public/common/service_manager_connection.h" +#include "services/service_manager/public/cpp/connector.h" +#include "ui/aura/test/mus/change_completion_waiter.h" +#include "ui/display/display.h" +#include "ui/display/screen.h" +#include "ui/views/mus/mus_client.h" -using ShelfBrowserTest = InProcessBrowserTest; +class ShelfBrowserTest : public InProcessBrowserTest { + public: + ShelfBrowserTest() = default; + ~ShelfBrowserTest() override = default; + + // InProcessBrowserTest: + void SetUpOnMainThread() override { + InProcessBrowserTest::SetUpOnMainThread(); + // Connect to the ash test interface for the shelf. + content::ServiceManagerConnection::GetForProcess() + ->GetConnector() + ->BindInterface(ash::mojom::kServiceName, &shelf_test_api_); + } + + protected: + // Waits for in-flight changes to window bounds, visibility, etc. to complete. + // Both ui service and ash will see the changes before this returns. + void WaitForWindowChanges() { + // Only need to wait for mus and mash. Classic ash is synchronous. + if (!views::MusClient::Exists()) + return; + aura::test::WaitForAllChangesToComplete( + views::MusClient::Get()->window_tree_client()); + } + + ash::mojom::ShelfTestApiPtr shelf_test_api_; + + private: + DISALLOW_COPY_AND_ASSIGN(ShelfBrowserTest); +}; // Confirm that a status bubble doesn't cause the shelf to darken. IN_PROC_BROWSER_TEST_F(ShelfBrowserTest, StatusBubble) { - ash::ShelfLayoutManager* shelf_layout_manager = - ash::Shelf::ForWindow(browser()->window()->GetNativeWindow()) - ->shelf_layout_manager(); - EXPECT_TRUE(shelf_layout_manager->IsVisible()); + ash::mojom::ShelfTestApiAsyncWaiter shelf(shelf_test_api_.get()); + bool shelf_visible = false; + shelf.IsVisible(&shelf_visible); + EXPECT_TRUE(shelf_visible); // Ensure that the browser abuts the shelf. + const int shelf_top = + display::Screen::GetScreen()->GetPrimaryDisplay().work_area().bottom(); gfx::Rect bounds = browser()->window()->GetBounds(); - bounds.set_height(shelf_layout_manager->GetIdealBounds().y() - bounds.y()); + bounds.set_height(shelf_top - bounds.y()); browser()->window()->SetBounds(bounds); - EXPECT_FALSE(shelf_layout_manager->window_overlaps_shelf()); + WaitForWindowChanges(); + + // Browser does not overlap shelf. + bool has_overlapping_window = false; + shelf.HasOverlappingWindow(&has_overlapping_window); + EXPECT_FALSE(has_overlapping_window); // Show status, which may overlap the shelf by a pixel. browser()->window()->GetStatusBubble()->SetStatus( base::UTF8ToUTF16("Dummy Status Text")); - shelf_layout_manager->UpdateVisibilityState(); + WaitForWindowChanges(); + shelf.UpdateVisibility(); // Ensure that status doesn't cause overlap. - EXPECT_FALSE(shelf_layout_manager->window_overlaps_shelf()); + shelf.HasOverlappingWindow(&has_overlapping_window); + EXPECT_FALSE(has_overlapping_window); // Ensure that moving the browser slightly down does cause overlap. bounds.Offset(0, 1); browser()->window()->SetBounds(bounds); - EXPECT_TRUE(shelf_layout_manager->window_overlaps_shelf()); + WaitForWindowChanges(); + shelf.HasOverlappingWindow(&has_overlapping_window); + EXPECT_TRUE(has_overlapping_window); } -class ShelfGuestSessionBrowserTest : public InProcessBrowserTest { +class ShelfGuestSessionBrowserTest : public ShelfBrowserTest { protected: void SetUpCommandLine(base::CommandLine* command_line) override { command_line->AppendSwitch(chromeos::switches::kGuestSession); @@ -58,7 +106,15 @@ // Tests that in guest session, shelf alignment could be initialized to bottom // aligned, instead of bottom locked (crbug.com/699661). IN_PROC_BROWSER_TEST_F(ShelfGuestSessionBrowserTest, ShelfAlignment) { - ash::Shelf* shelf = - ash::Shelf::ForWindow(browser()->window()->GetNativeWindow()); - EXPECT_EQ(ash::SHELF_ALIGNMENT_BOTTOM, shelf->alignment()); + // Check the alignment pref for the primary display. + ash::ShelfAlignment alignment = ash::GetShelfAlignmentPref( + browser()->profile()->GetPrefs(), + display::Screen::GetScreen()->GetPrimaryDisplay().id()); + EXPECT_EQ(ash::SHELF_ALIGNMENT_BOTTOM, alignment); + + // Check the locked state, which is not exposed via prefs. + ash::mojom::ShelfTestApiAsyncWaiter shelf(shelf_test_api_.get()); + bool shelf_bottom_locked = false; + shelf.IsAlignmentBottomLocked(&shelf_bottom_locked); + EXPECT_FALSE(shelf_bottom_locked); }
diff --git a/chrome/browser/ui/send_mouse_move_uitest_win.cc b/chrome/browser/ui/send_mouse_move_uitest_win.cc index a6824a6..20e3a21 100644 --- a/chrome/browser/ui/send_mouse_move_uitest_win.cc +++ b/chrome/browser/ui/send_mouse_move_uitest_win.cc
@@ -11,6 +11,7 @@ #include "ui/base/test/ui_controls.h" #include "ui/display/display.h" #include "ui/display/screen.h" +#include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" class SendMouseMoveUITest : public InProcessBrowserTest { @@ -28,7 +29,9 @@ // --gtest_filter=SendMouseMoveUITest.DISABLED_Fullscreen IN_PROC_BROWSER_TEST_F(SendMouseMoveUITest, DISABLED_Fullscreen) { // Make the browser fullscreen so that we can position the mouse anywhere on - // the display. + // the display, as ui_controls::SendMouseMoveNotifyWhenDone can only provide + // notifications when the mouse is moved over a window belonging to the + // current process. chrome::ToggleFullscreenMode(browser()); display::Screen* const screen = display::Screen::GetScreen(); @@ -47,11 +50,41 @@ scan_x, scan_y, run_loop.QuitClosure())); run_loop.Run(); - // Check it two ways. - POINT cursor_pos = {}; - ASSERT_NE(::GetCursorPos(&cursor_pos), FALSE); - EXPECT_EQ(gfx::Point(cursor_pos), gfx::Point(scan_x, scan_y)); + // Check it. EXPECT_EQ(screen->GetCursorScreenPoint(), gfx::Point(scan_x, scan_y)); } } } + +// Test that the mouse can be positioned at a few locations on the screen. +IN_PROC_BROWSER_TEST_F(SendMouseMoveUITest, Probe) { + // Make the browser fullscreen so that we can position the mouse anywhere on + // the display, as ui_controls::SendMouseMoveNotifyWhenDone can only provide + // notifications when the mouse is moved over a window belonging to the + // current process. + chrome::ToggleFullscreenMode(browser()); + + display::Screen* const screen = display::Screen::GetScreen(); + const gfx::Rect screen_bounds = screen->GetPrimaryDisplay().bounds(); + + // Position the mouse at the corners and the center. + const gfx::Point kPoints[] = { + screen_bounds.origin(), + gfx::Point(screen_bounds.right() - 1, screen_bounds.y()), + gfx::Point(screen_bounds.x(), screen_bounds.bottom() - 1), + gfx::Point(screen_bounds.right() - 1, screen_bounds.bottom() - 1), + screen_bounds.CenterPoint()}; + + for (const auto& point : kPoints) { + SCOPED_TRACE(testing::Message() + << "(" << point.x() << ", " << point.y() << ")"); + // Move the pointer. + base::RunLoop run_loop; + EXPECT_TRUE(ui_controls::SendMouseMoveNotifyWhenDone( + point.x(), point.y(), run_loop.QuitClosure())); + run_loop.Run(); + + // Check it. + EXPECT_EQ(screen->GetCursorScreenPoint(), point); + } +}
diff --git a/chrome/browser/ui/webui/DEPS b/chrome/browser/ui/webui/DEPS index 20c9470..ab5553d 100644 --- a/chrome/browser/ui/webui/DEPS +++ b/chrome/browser/ui/webui/DEPS
@@ -14,7 +14,6 @@ # Generated files "+js2webui/chrome/test/data", - "+third_party/cld", # Other libraries. "+third_party/angle", # For ANGLE version.
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc index 0e7fc8e..8da3020 100644 --- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc +++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.cc
@@ -6,6 +6,7 @@ #include <memory> #include <string> +#include <utility> #include "base/callback.h" #include "base/command_line.h" @@ -180,26 +181,22 @@ if (!print_to_pdf_path_.empty()) { // User has already selected a path, no need to show the dialog again. PostPrintToPdfTask(); - } else if (!select_file_dialog_.get() || - !select_file_dialog_->IsRunning(platform_util::GetTopLevel( - preview_web_contents_->GetNativeView()))) { - DCHECK(!print_callback_); - print_callback_ = std::move(callback); -#if defined(OS_WIN) - base::FilePath::StringType print_job_title(job_title); -#elif defined(OS_POSIX) - base::FilePath::StringType print_job_title = base::UTF16ToUTF8(job_title); -#endif - - base::i18n::ReplaceIllegalCharactersInPath(&print_job_title, '_'); - base::FilePath default_filename(print_job_title); - default_filename = - default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); - - base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); - bool prompt_user = !cmdline->HasSwitch(switches::kKioskModePrinting); - SelectFile(default_filename, prompt_user); + return; } + + if (select_file_dialog_ && + select_file_dialog_->IsRunning( + platform_util::GetTopLevel(preview_web_contents_->GetNativeView()))) { + // Dialog is already showing. + return; + } + + DCHECK(!print_callback_); + print_callback_ = std::move(callback); + + base::CommandLine* cmdline = base::CommandLine::ForCurrentProcess(); + bool prompt_user = !cmdline->HasSwitch(switches::kKioskModePrinting); + SelectFile(GetFileNameForPrintJobTitle(job_title), prompt_user); } void PdfPrinterHandler::FileSelected(const base::FilePath& path, @@ -222,6 +219,20 @@ pdf_file_saved_closure_ = closure; } +// static +base::FilePath PdfPrinterHandler::GetFileNameForPrintJobTitle( + const base::string16& job_title) { +#if defined(OS_WIN) + base::FilePath::StringType print_job_title(job_title); +#elif defined(OS_POSIX) + base::FilePath::StringType print_job_title = base::UTF16ToUTF8(job_title); +#endif + + base::i18n::ReplaceIllegalCharactersInPath(&print_job_title, '_'); + base::FilePath default_filename(print_job_title); + return default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); +} + void PdfPrinterHandler::SelectFile(const base::FilePath& default_filename, bool prompt_user) { printing::PrintPreviewDialogController* dialog_controller =
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h index 50537bc..054f1bc 100644 --- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h +++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler.h
@@ -9,6 +9,7 @@ #include <string> #include "base/callback.h" +#include "base/files/file_path.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/strings/string16.h" @@ -66,6 +67,10 @@ // Sets |pdf_file_saved_closure_| to |closure|. void SetPdfSavedClosureForTesting(const base::Closure& closure); + // Exposed for testing. + static base::FilePath GetFileNameForPrintJobTitle( + const base::string16& job_title); + protected: virtual void SelectFile(const base::FilePath& default_filename, bool prompt_user);
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler_unittest.cc new file mode 100644 index 0000000..6860b39 --- /dev/null +++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler_unittest.cc
@@ -0,0 +1,34 @@ +// 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 "chrome/browser/ui/webui/print_preview/pdf_printer_handler.h" + +#include "base/strings/utf_string_conversions.h" +#include "testing/gtest/include/gtest/gtest.h" + +using PdfPrinterHandlerTest = testing::Test; + +TEST_F(PdfPrinterHandlerTest, GetFileNameForPrintJobTitle) { + static const struct { + const char* input; + const base::FilePath::CharType* expected_output; + } kTestData[] = { + {"Foo", FILE_PATH_LITERAL("Foo.pdf")}, + {"bar", FILE_PATH_LITERAL("bar.pdf")}, + {"qux.html", FILE_PATH_LITERAL("qux.pdf")}, + {"Print Me", FILE_PATH_LITERAL("Print Me.pdf")}, + {"Print Me.html", FILE_PATH_LITERAL("Print Me.pdf")}, + {"1l!egal_F@L#(N)ame.html", FILE_PATH_LITERAL("1l!egal_F@L#(N)ame.pdf")}, + // TODO(thestig): Fix for https://crbug.com/782041 + // Should be "example.com.pdf", like the regular file save dialog. + {"example.com", FILE_PATH_LITERAL("example.pdf")}, + }; + + for (const auto& data : kTestData) { + SCOPED_TRACE(data.input); + base::FilePath path = PdfPrinterHandler::GetFileNameForPrintJobTitle( + base::ASCIIToUTF16(data.input)); + EXPECT_EQ(data.expected_output, path.value()); + } +}
diff --git a/chrome/browser/ui/webui/print_preview/pdf_printer_handler_win_unittest.cc b/chrome/browser/ui/webui/print_preview/pdf_printer_handler_win_unittest.cc index 04a6c68..f09768d5 100644 --- a/chrome/browser/ui/webui/print_preview/pdf_printer_handler_win_unittest.cc +++ b/chrome/browser/ui/webui/print_preview/pdf_printer_handler_win_unittest.cc
@@ -113,10 +113,10 @@ } // namespace -class PdfPrinterHandlerTest : public BrowserWithTestWindowTest { +class PdfPrinterHandlerWinTest : public BrowserWithTestWindowTest { public: - PdfPrinterHandlerTest() {} - ~PdfPrinterHandlerTest() override {} + PdfPrinterHandlerWinTest() {} + ~PdfPrinterHandlerWinTest() override {} void SetUp() override { BrowserWithTestWindowTest::SetUp(); @@ -134,16 +134,16 @@ std::unique_ptr<FakePdfPrinterHandler> pdf_printer_; private: - DISALLOW_COPY_AND_ASSIGN(PdfPrinterHandlerTest); + DISALLOW_COPY_AND_ASSIGN(PdfPrinterHandlerWinTest); }; -TEST_F(PdfPrinterHandlerTest, TestSaveAsPdf) { +TEST_F(PdfPrinterHandlerWinTest, TestSaveAsPdf) { pdf_printer_->StartPrintToPdf(L"111111111111111111111.html"); EXPECT_TRUE(pdf_printer_->init_called()); EXPECT_TRUE(pdf_printer_->save_failed()); } -TEST_F(PdfPrinterHandlerTest, TestSaveAsPdfLongFileName) { +TEST_F(PdfPrinterHandlerWinTest, TestSaveAsPdfLongFileName) { pdf_printer_->StartPrintToPdf( L"11111111111111111111111111111111111111111111111111111111111111111111111" L"11111111111111111111111111111111111111111111111111111111111111111111111"
diff --git a/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc b/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc index bda9a6df..c32b73f3 100644 --- a/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc +++ b/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc
@@ -20,7 +20,6 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" -#include "third_party/cld/cld_version.h" #include "ui/base/l10n/l10n_util.h" namespace { @@ -62,17 +61,8 @@ source->AddString(key, value); } - std::string cld_version = ""; - // The version string is hardcoded here to avoid linking with the CLD - // library, see http://crbug.com/297777. -#if BUILDFLAG(CLD_VERSION) == 2 - cld_version = "2"; -#elif BUILDFLAG(CLD_VERSION) == 3 - cld_version = "3"; -#else -# error "CLD_VERSION must be 2 or 3" -#endif - source->AddString("cld-version", cld_version); + // Current cld-version is "3". + source->AddString("cld-version", "3"); return source; }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 57e60671..7228e5e 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -4555,6 +4555,7 @@ "../browser/printing/print_preview_test.h", "../browser/printing/print_view_manager_unittest.cc", "../browser/ui/webui/print_preview/extension_printer_handler_unittest.cc", + "../browser/ui/webui/print_preview/pdf_printer_handler_unittest.cc", "../browser/ui/webui/print_preview/pdf_printer_handler_win_unittest.cc", "../browser/ui/webui/print_preview/print_preview_handler_unittest.cc", "../browser/ui/webui/print_preview/print_preview_ui_unittest.cc",
diff --git a/chrome/test/data/cld2_component/160/_platform_specific/all/cld2_data.bin b/chrome/test/data/cld2_component/160/_platform_specific/all/cld2_data.bin deleted file mode 100644 index 590a7ff..0000000 --- a/chrome/test/data/cld2_component/160/_platform_specific/all/cld2_data.bin +++ /dev/null Binary files differ
diff --git a/chrome/test/data/cld2_component/160/manifest.json b/chrome/test/data/cld2_component/160/manifest.json deleted file mode 100644 index 4b3a098f..0000000 --- a/chrome/test/data/cld2_component/160/manifest.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "manifest_version": 2, - "name": "CLD2 Data", - "description": "Compact Language Detector 2 (CLD2) data for Chrome", - "minimum_chrome_version": "36", - "version": "160", - "platforms": [ - { - "sub_package_path": "_platform_specific/all/" - } - ] -} \ No newline at end of file
diff --git a/chrome/test/data/cld2_component/README.chromium b/chrome/test/data/cld2_component/README.chromium deleted file mode 100644 index bae374e..0000000 --- a/chrome/test/data/cld2_component/README.chromium +++ /dev/null
@@ -1,25 +0,0 @@ -This directory contains a static copy of the contents of the CLD2 CRX file. -The ID of the extension (as well as other relevant information) can be found -in the following file: - src/chrome/browser/component_updater/cld_component_installer.cc - -In general there should be little need to modify the data here. CLD2 updates -are rare and consist of incremental improvements to language detection -accuracy. All such updates are expected to be backwards-compatible from CLD2 -revision 160 onwards, which was the initial version to be checked in. Any -future format-breaking changes are likely to result in a "CLD3". - -For the sake of maintainability and clarity of purpose, the subdirectory that -contains the CRX extract is named for the version that is contained within it. -This mimics the behavior of the component updater and makes it obvious at a -glance which version of the CRX is checked in here; if you DO update the -content here, make sure to make a new directory and update the constant in the -test utilities class: - src/chrome/browser/translate/translate_browser_test_utils.cc - -If backwards compatibility is required, you'll have to add tests to try with -both the old version and the new. - -For more information please refer to: - src/third_party/cld_2/README.chromium -
diff --git a/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc b/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc index 36e0f03..67b7a25 100644 --- a/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc +++ b/chromecast/media/cma/backend/alsa/stream_mixer_unittest.cc
@@ -309,7 +309,7 @@ MOCK_METHOD2(SetPostProcessorConfig, void(const std::string& name, const std::string& config)); - + MOCK_METHOD1(UpdatePlayoutChannel, void(int)); static std::unordered_map<std::string, MockPostProcessor*>* instances() { return &instances_; }
diff --git a/chromecast/media/cma/backend/filter_group.cc b/chromecast/media/cma/backend/filter_group.cc index 2568303..ebb492a7 100644 --- a/chromecast/media/cma/backend/filter_group.cc +++ b/chromecast/media/cma/backend/filter_group.cc
@@ -18,12 +18,14 @@ namespace media { FilterGroup::FilterGroup(int num_channels, + GroupType type, bool mix_to_mono, const std::string& name, std::unique_ptr<PostProcessingPipeline> pipeline, const std::unordered_set<std::string>& device_ids, const std::vector<FilterGroup*>& mixed_inputs) : num_channels_(num_channels), + type_(type), mix_to_mono_(mix_to_mono), playout_channel_(kChannelAll), name_(name), @@ -35,12 +37,13 @@ delay_frames_(0), loudest_content_type_(AudioContentType::kMedia), post_processing_pipeline_(std::move(pipeline)) { - for (auto* const m : mixed_inputs) + for (auto* const m : mixed_inputs) { DCHECK_EQ(m->GetOutputChannelCount(), num_channels); + } // Don't need mono mixer if input is single channel. - if (num_channels == 1) + if (num_channels == 1) { mix_to_mono_ = false; - post_processing_pipeline_->SetContentType(loudest_content_type_); + } } FilterGroup::~FilterGroup() = default; @@ -48,6 +51,8 @@ void FilterGroup::Initialize(int output_samples_per_second) { output_samples_per_second_ = output_samples_per_second; CHECK(post_processing_pipeline_->SetSampleRate(output_samples_per_second)); + post_processing_pipeline_->SetContentType(loudest_content_type_); + post_processing_pipeline_->UpdatePlayoutChannel(playout_channel_); } bool FilterGroup::CanProcessInput(StreamMixer::InputQueue* input) { @@ -71,7 +76,7 @@ float tmp = filter_group->MixAndFilter(chunk_size); if (tmp > volume) { volume = tmp; - loudest_content_type = filter_group->GetLoudestContentType(); + loudest_content_type = filter_group->loudest_content_type(); } } @@ -122,7 +127,7 @@ // Copy the active channel to all channels. Only used in the "linearize" // instance. - if (playout_channel_ != kChannelAll) { + if (playout_channel_ != kChannelAll && type_ == GroupType::kLinearize) { DCHECK_GE(playout_channel_, 0); DCHECK_LT(playout_channel_, num_channels_); @@ -149,7 +154,7 @@ interleaved(), chunk_size, last_volume_, is_silence); // Mono mixing if needed. Only used in the "Mix" instance. - if (mix_to_mono_) { + if (mix_to_mono_ && type_ == GroupType::kFinalMix) { for (int frame = 0; frame < chunk_size; ++frame) { float sum = 0; for (int c = 0; c < num_channels_; ++c) @@ -195,13 +200,13 @@ } void FilterGroup::UpdatePlayoutChannel(int playout_channel) { - LOG(INFO) << __FUNCTION__ << " channel=" << playout_channel; if (playout_channel >= num_channels_) { LOG(ERROR) << "only " << num_channels_ << " present, wanted channel #" << playout_channel; return; } playout_channel_ = playout_channel; + post_processing_pipeline_->UpdatePlayoutChannel(playout_channel_); } } // namespace media
diff --git a/chromecast/media/cma/backend/filter_group.h b/chromecast/media/cma/backend/filter_group.h index 60fa83e..066d3cd 100644 --- a/chromecast/media/cma/backend/filter_group.h +++ b/chromecast/media/cma/backend/filter_group.h
@@ -36,7 +36,12 @@ // MixAndFilter() is called (they must be added each time data is queried). class FilterGroup { public: + enum class GroupType { kStream, kFinalMix, kLinearize }; // |num_channels| indicates number of input audio channels. + // |type| indicates where in the pipeline this FilterGroup sits. + // some features are specific to certain locations: + // - mono mixer takes place at the end of kFinalMix. + // - channel selection occurs before post-processing in kLinearize. // |mix_to_mono| enables mono mixing in the pipeline. The number of audio // output channels will be 1 if it is set to true, otherwise it remains // same as |num_channels|. @@ -49,7 +54,9 @@ // ex: the final mix ("mix") FilterGroup mixes all other filter groups. // FilterGroups currently use either InputQueues OR FilterGroups as inputs, // but there is no technical limitation preventing mixing input classes. + FilterGroup(int num_channels, + GroupType type, bool mix_to_mono, const std::string& name, std::unique_ptr<PostProcessingPipeline> pipeline, @@ -104,12 +111,15 @@ void UpdatePlayoutChannel(int playout_channel); // Get loudest content type - AudioContentType GetLoudestContentType() { return loudest_content_type_; } + AudioContentType loudest_content_type() const { + return loudest_content_type_; + } private: void ResizeBuffersIfNecessary(int chunk_size); const int num_channels_; + const GroupType type_; bool mix_to_mono_; int playout_channel_; const std::string name_;
diff --git a/chromecast/media/cma/backend/filter_group_unittest.cc b/chromecast/media/cma/backend/filter_group_unittest.cc index e593175..d7f8cb6 100644 --- a/chromecast/media/cma/backend/filter_group_unittest.cc +++ b/chromecast/media/cma/backend/filter_group_unittest.cc
@@ -33,6 +33,7 @@ "Test checks that the correct volume is used."); constexpr AudioContentType kDefaultContentType = AudioContentType::kMedia; +constexpr int kDefaultPlayoutChannel = -1; class MockPostProcessingPipeline : public PostProcessingPipeline { public: @@ -44,6 +45,7 @@ MOCK_METHOD2(SetPostProcessorConfig, void(const std::string& name, const std::string& config)); MOCK_METHOD1(SetContentType, void(AudioContentType)); + MOCK_METHOD1(UpdatePlayoutChannel, void(int)); private: bool SetSampleRate(int sample_rate) override { return true; } @@ -199,12 +201,14 @@ ~FilterGroupTest() override {} void MakeFilterGroup( + FilterGroup::GroupType type, bool mix_to_mono, std::unique_ptr<MockPostProcessingPipeline> post_processor) { post_processor_ = post_processor.get(); EXPECT_CALL(*post_processor_, SetContentType(kDefaultContentType)); + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(kDefaultPlayoutChannel)); filter_group_ = std::make_unique<FilterGroup>( - kNumInputChannels, mix_to_mono, "test_filter", + kNumInputChannels, type, mix_to_mono, "test_filter", std::move(post_processor), std::unordered_set<std::string>() /* device_ids */, std::vector<FilterGroup*>()); @@ -218,6 +222,16 @@ return input_->data()->channel(channel)[frame]; } + void AssertPassthrough() { + // Verify if the fiter group output matches the source. + float* interleaved_data = filter_group_->interleaved(); + for (int f = 0; f < kInputFrames; ++f) { + for (int ch = 0; ch < kNumInputChannels; ++ch) { + ASSERT_EQ(Input(ch, f), interleaved_data[f * kNumInputChannels + ch]); + } + } + } + float LeftInput(int frame) { return Input(0, frame); } float RightInput(int frame) { return Input(1, frame); } @@ -231,25 +245,40 @@ }; TEST_F(FilterGroupTest, Passthrough) { - MakeFilterGroup(false /* mix to mono */, + MakeFilterGroup(FilterGroup::GroupType::kFinalMix, false /* mix to mono */, std::make_unique<MockPostProcessingPipeline>()); EXPECT_CALL(*input_.get(), TargetVolume()).Times(0); EXPECT_CALL(*post_processor_, ProcessFrames(_, kInputFrames, kInstantaneousVolume, false)); filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); +} - // Verify if the fiter group output matches the source. - float* interleaved_data = filter_group_->interleaved(); - for (int f = 0; f < kInputFrames; ++f) { - for (int ch = 0; ch < kNumInputChannels; ++ch) { - ASSERT_EQ(Input(ch, f), interleaved_data[f * kNumInputChannels + ch]); - } - } +TEST_F(FilterGroupTest, StreamGroupsDoNotMonoMix) { + MakeFilterGroup(FilterGroup::GroupType::kStream, true /* mix to mono */, + std::make_unique<MockPostProcessingPipeline>()); + EXPECT_CALL(*input_.get(), TargetVolume()).Times(0); + EXPECT_CALL(*post_processor_, + ProcessFrames(_, kInputFrames, kInstantaneousVolume, false)); + + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); +} + +TEST_F(FilterGroupTest, LinearizeGroupsDoNotMonoMix) { + MakeFilterGroup(FilterGroup::GroupType::kLinearize, true /* mix to mono */, + std::make_unique<MockPostProcessingPipeline>()); + EXPECT_CALL(*input_.get(), TargetVolume()).Times(0); + EXPECT_CALL(*post_processor_, + ProcessFrames(_, kInputFrames, kInstantaneousVolume, false)); + + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); } TEST_F(FilterGroupTest, MonoMixer) { - MakeFilterGroup(true /* mix to mono */, + MakeFilterGroup(FilterGroup::GroupType::kFinalMix, true /* mix to mono */, std::make_unique<MockPostProcessingPipeline>()); filter_group_->MixAndFilter(kInputFrames); @@ -263,7 +292,7 @@ TEST_F(FilterGroupTest, MonoMixesAfterPostProcessors) { MakeFilterGroup( - true /* mix to mono */, + FilterGroup::GroupType::kFinalMix, true /* mix to mono */, std::make_unique<InvertChannelPostProcessor>(kNumInputChannels, 0)); filter_group_->MixAndFilter(kInputFrames); @@ -276,10 +305,41 @@ } } -TEST_F(FilterGroupTest, SelectsOutputChannel) { - MakeFilterGroup(false /* mix to mono */, +TEST_F(FilterGroupTest, StreamGroupDoesNotSelectChannels) { + MakeFilterGroup(FilterGroup::GroupType::kStream, false /* mix to mono */, std::make_unique<MockPostProcessingPipeline>()); + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(0)); + filter_group_->UpdatePlayoutChannel(0); + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(1)); + filter_group_->UpdatePlayoutChannel(1); + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); +} + +TEST_F(FilterGroupTest, MixGroupDoesNotSelectChannels) { + MakeFilterGroup(FilterGroup::GroupType::kFinalMix, false /* mix to mono */, + std::make_unique<MockPostProcessingPipeline>()); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(0)); + filter_group_->UpdatePlayoutChannel(0); + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(1)); + filter_group_->UpdatePlayoutChannel(1); + filter_group_->MixAndFilter(kInputFrames); + AssertPassthrough(); +} + +TEST_F(FilterGroupTest, SelectsOutputChannel) { + MakeFilterGroup(FilterGroup::GroupType::kLinearize, false /* mix to mono */, + std::make_unique<MockPostProcessingPipeline>()); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(0)); filter_group_->UpdatePlayoutChannel(0); filter_group_->MixAndFilter(kInputFrames); @@ -291,6 +351,9 @@ } } + testing::Mock::VerifyAndClearExpectations(post_processor_); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(1)); filter_group_->UpdatePlayoutChannel(1); filter_group_->MixAndFilter(kInputFrames); for (int f = 0; f < kInputFrames; ++f) { @@ -300,6 +363,9 @@ } } + testing::Mock::VerifyAndClearExpectations(post_processor_); + + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(-1)); filter_group_->UpdatePlayoutChannel(-1); filter_group_->MixAndFilter(kInputFrames); for (int f = 0; f < kInputFrames; ++f) { @@ -312,8 +378,9 @@ TEST_F(FilterGroupTest, SelectsOutputChannelBeforePostProcessors) { MakeFilterGroup( - false /* mix to mono */, + FilterGroup::GroupType::kLinearize, false /* mix to mono */, std::make_unique<InvertChannelPostProcessor>(kNumInputChannels, 0)); + EXPECT_CALL(*post_processor_, UpdatePlayoutChannel(0)); filter_group_->UpdatePlayoutChannel(0); filter_group_->MixAndFilter(kInputFrames); @@ -328,7 +395,8 @@ } TEST_F(FilterGroupTest, ChecksLoudestContentType) { - MakeFilterGroup(false, std::make_unique<MockPostProcessingPipeline>()); + MakeFilterGroup(FilterGroup::GroupType::kStream, false, + std::make_unique<MockPostProcessingPipeline>()); AudioContentType type = AudioContentType::kCommunication; MockInputQueue tts_loud_input(type, kInstantaneousVolume + .001); filter_group_->AddActiveInput(&tts_loud_input);
diff --git a/chromecast/media/cma/backend/post_processing_pipeline.h b/chromecast/media/cma/backend/post_processing_pipeline.h index aeb8be47..bb54e6d 100644 --- a/chromecast/media/cma/backend/post_processing_pipeline.h +++ b/chromecast/media/cma/backend/post_processing_pipeline.h
@@ -29,6 +29,7 @@ virtual void SetPostProcessorConfig(const std::string& name, const std::string& config) = 0; virtual void SetContentType(AudioContentType content_type) = 0; + virtual void UpdatePlayoutChannel(int channel) = 0; }; class PostProcessingPipelineFactory {
diff --git a/chromecast/media/cma/backend/post_processing_pipeline_impl.cc b/chromecast/media/cma/backend/post_processing_pipeline_impl.cc index 12e1787f..2f29d6a0e 100644 --- a/chromecast/media/cma/backend/post_processing_pipeline_impl.cc +++ b/chromecast/media/cma/backend/post_processing_pipeline_impl.cc
@@ -154,8 +154,8 @@ [&name](PostProcessorInfo& p) { return p.name == name; }); if (it != processors_.end()) { it->ptr->UpdateParameters(config); - LOG(INFO) << "Config string:\n" - << config << "\nwas delivered to postprocessor " << name; + LOG(INFO) << "Config string: " << config + << " was delivered to postprocessor " << name; } } @@ -166,5 +166,11 @@ } } +void PostProcessingPipelineImpl::UpdatePlayoutChannel(int channel) { + for (auto& processor : processors_) { + processor.ptr->SetPlayoutChannel(channel); + } +} + } // namespace media } // namespace chromecast
diff --git a/chromecast/media/cma/backend/post_processing_pipeline_impl.h b/chromecast/media/cma/backend/post_processing_pipeline_impl.h index 4bf4961..ea2c7a0 100644 --- a/chromecast/media/cma/backend/post_processing_pipeline_impl.h +++ b/chromecast/media/cma/backend/post_processing_pipeline_impl.h
@@ -44,6 +44,7 @@ void SetPostProcessorConfig(const std::string& name, const std::string& config) override; void SetContentType(AudioContentType content_type) override; + void UpdatePlayoutChannel(int channel) override; private: // Note: typedef is used to silence chromium-style mandatory constructor in
diff --git a/chromecast/media/cma/backend/stream_mixer.cc b/chromecast/media/cma/backend/stream_mixer.cc index 187b75c..7215d29 100644 --- a/chromecast/media/cma/backend/stream_mixer.cc +++ b/chromecast/media/cma/backend/stream_mixer.cc
@@ -79,6 +79,22 @@ device == kTtsAudioDeviceId; } +std::unique_ptr<FilterGroup> CreateFilterGroup( + FilterGroup::GroupType type, + bool mix_to_mono, + const std::string& name, + const base::ListValue* filter_list, + const std::unordered_set<std::string>& device_ids, + const std::vector<FilterGroup*>& mixed_inputs, + std::unique_ptr<PostProcessingPipelineFactory>& ppp_factory) { + DCHECK(ppp_factory); + auto pipeline = + ppp_factory->CreatePipeline(name, filter_list, kNumInputChannels); + return std::make_unique<FilterGroup>(kNumInputChannels, type, mix_to_mono, + name, std::move(pipeline), device_ids, + mixed_inputs); +} + class StreamMixerInstance : public StreamMixer { public: StreamMixerInstance() {} @@ -157,19 +173,6 @@ default_close_timeout); } -std::unique_ptr<FilterGroup> StreamMixer::CreateFilterGroup( - bool mix_to_mono, - const std::string& name, - const base::ListValue* filter_list, - const std::unordered_set<std::string>& device_ids, - const std::vector<FilterGroup*>& mixed_inputs) { - auto pipeline = post_processing_pipeline_factory_->CreatePipeline( - name, filter_list, kNumInputChannels); - return std::make_unique<FilterGroup>(kNumInputChannels, mix_to_mono, name, - std::move(pipeline), device_ids, - mixed_inputs); -} - void StreamMixer::CreatePostProcessors( PostProcessingPipelineParser* pipeline_parser) { std::unordered_set<std::string> used_streams; @@ -185,9 +188,10 @@ << kCastAudioJsonFilePath << "."; } filter_groups_.push_back(CreateFilterGroup( - false /* mono_mixer */, *device_ids.begin() /* name */, - stream_pipeline.pipeline, device_ids, - std::vector<FilterGroup*>() /* mixed_inputs */)); + FilterGroup::GroupType::kStream, false /* mono_mixer */, + *device_ids.begin() /* name */, stream_pipeline.pipeline, device_ids, + std::vector<FilterGroup*>() /* mixed_inputs */, + post_processing_pipeline_factory_)); if (device_ids.find(::media::AudioDeviceDescription::kDefaultDeviceId) != device_ids.end()) { default_filter_ = filter_groups_.back().get(); @@ -199,9 +203,11 @@ std::string kDefaultDeviceId = ::media::AudioDeviceDescription::kDefaultDeviceId; filter_groups_.push_back(CreateFilterGroup( - false /* mono_mixer */, kDefaultDeviceId /* name */, nullptr, + FilterGroup::GroupType::kStream, false /* mono_mixer */, + kDefaultDeviceId /* name */, nullptr, std::unordered_set<std::string>({kDefaultDeviceId}), - std::vector<FilterGroup*>() /* mixed_inputs */)); + std::vector<FilterGroup*>() /* mixed_inputs */, + post_processing_pipeline_factory_)); default_filter_ = filter_groups_.back().get(); } @@ -212,16 +218,20 @@ // Enable Mono mixer in |mix_filter_| if necessary. bool enabled_mono_mixer = (num_output_channels_ == 1); - filter_groups_.push_back(CreateFilterGroup( - enabled_mono_mixer, "mix", pipeline_parser->GetMixPipeline(), - std::unordered_set<std::string>() /* device_ids */, filter_group_ptrs)); + filter_groups_.push_back( + CreateFilterGroup(FilterGroup::GroupType::kFinalMix, enabled_mono_mixer, + "mix", pipeline_parser->GetMixPipeline(), + std::unordered_set<std::string>() /* device_ids */, + filter_group_ptrs, post_processing_pipeline_factory_)); + mix_filter_ = filter_groups_.back().get(); - filter_groups_.push_back( - CreateFilterGroup(false /* mono_mixer */, "linearize", - pipeline_parser->GetLinearizePipeline(), - std::unordered_set<std::string>() /* device_ids */, - std::vector<FilterGroup*>({mix_filter_}))); + filter_groups_.push_back(CreateFilterGroup( + FilterGroup::GroupType::kLinearize, false /* mono_mixer */, "linearize", + pipeline_parser->GetLinearizePipeline(), + std::unordered_set<std::string>() /* device_ids */, + std::vector<FilterGroup*>({mix_filter_}), + post_processing_pipeline_factory_)); linearize_filter_ = filter_groups_.back().get(); } @@ -728,7 +738,9 @@ mix_filter_->SetMixToMono(num_output_channels_ == 1 && playout_channel == kChannelAll); - linearize_filter_->UpdatePlayoutChannel(playout_channel); + for (auto& filter_group : filter_groups_) { + filter_group->UpdatePlayoutChannel(playout_channel); + } } void StreamMixer::SetFilterFrameAlignmentForTest(int filter_frame_alignment) {
diff --git a/chromecast/media/cma/backend/stream_mixer.h b/chromecast/media/cma/backend/stream_mixer.h index fdaa3b5..7b8a4bb 100644 --- a/chromecast/media/cma/backend/stream_mixer.h +++ b/chromecast/media/cma/backend/stream_mixer.h
@@ -21,10 +21,6 @@ #include "chromecast/public/media/media_pipeline_backend.h" #include "chromecast/public/volume_control.h" -namespace base { -class ListValue; -} // namespace base - namespace media { class AudioBus; } // namespace media @@ -32,8 +28,8 @@ namespace chromecast { namespace media { -class MixerOutputStream; class FilterGroup; +class MixerOutputStream; class PostProcessingPipelineParser; class PostProcessingPipelineFactory; @@ -243,12 +239,6 @@ void FinishFinalize(); void CreatePostProcessors(PostProcessingPipelineParser* pipeline_parser); - std::unique_ptr<FilterGroup> CreateFilterGroup( - bool mix_to_mono, - const std::string& name, - const base::ListValue* filter_list, - const std::unordered_set<std::string>& device_ids, - const std::vector<FilterGroup*>& mixed_inputs); bool Start(); void Stop();
diff --git a/chromecast/public/media/audio_post_processor_shlib.h b/chromecast/public/media/audio_post_processor_shlib.h index 09e7ffc3..1c0fb0b 100644 --- a/chromecast/public/media/audio_post_processor_shlib.h +++ b/chromecast/public/media/audio_post_processor_shlib.h
@@ -82,6 +82,11 @@ // settings accordingly. virtual void SetContentType(AudioContentType content_type) {} + // Called when device is playing as part of a stereo pair. + // |channel| is the playout channel on this device (0 for left, 1 for right). + // or -1 if the device is not part of a stereo pair. + virtual void SetPlayoutChannel(int channel) {} + virtual ~AudioPostProcessor() = default; };
diff --git a/components/translate/content/renderer/BUILD.gn b/components/translate/content/renderer/BUILD.gn index 773039fa0..d642daec 100644 --- a/components/translate/content/renderer/BUILD.gn +++ b/components/translate/content/renderer/BUILD.gn
@@ -19,7 +19,6 @@ "//content/public/renderer", "//services/service_manager/public/cpp", "//third_party/WebKit/public:blink", - "//third_party/cld", "//url", "//v8", ]
diff --git a/components/translate/content/renderer/DEPS b/components/translate/content/renderer/DEPS index 536db3e..d0e88841 100644 --- a/components/translate/content/renderer/DEPS +++ b/components/translate/content/renderer/DEPS
@@ -1,7 +1,6 @@ include_rules = [ "+content/public/renderer", "+services/service_manager/public", - "+third_party/cld_2", "+third_party/WebKit/public/web", "+v8", ]
diff --git a/components/translate/core/language_detection/BUILD.gn b/components/translate/core/language_detection/BUILD.gn index eb3fd05..5653eb1 100644 --- a/components/translate/core/language_detection/BUILD.gn +++ b/components/translate/core/language_detection/BUILD.gn
@@ -26,7 +26,7 @@ ":chinese_script_classifier", "//base", "//components/translate/core/common", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", "//third_party/icu", "//url", ]
diff --git a/components/translate/core/language_detection/DEPS b/components/translate/core/language_detection/DEPS index 3cb41688..2a94aa39 100644 --- a/components/translate/core/language_detection/DEPS +++ b/components/translate/core/language_detection/DEPS
@@ -1,6 +1,4 @@ include_rules = [ # CLD library. - "+third_party/cld", - "+third_party/cld_2", "+third_party/cld_3", ]
diff --git a/components/translate/core/language_detection/language_detection_util.cc b/components/translate/core/language_detection/language_detection_util.cc index 179c329..619db24 100644 --- a/components/translate/core/language_detection/language_detection_util.cc +++ b/components/translate/core/language_detection/language_detection_util.cc
@@ -20,16 +20,7 @@ #include "components/translate/core/common/translate_metrics.h" #include "components/translate/core/common/translate_util.h" #include "components/translate/core/language_detection/chinese_script_classifier.h" -#include "third_party/cld/cld_version.h" - -#if BUILDFLAG(CLD_VERSION) == 2 -#include "third_party/cld_2/src/public/compact_lang_det.h" -#include "third_party/cld_2/src/public/encodings.h" -#elif BUILDFLAG(CLD_VERSION) == 3 #include "third_party/cld_3/src/src/nnet_language_identifier.h" -#else -# error "CLD_VERSION must be 2 or 3" -#endif namespace { @@ -88,94 +79,6 @@ std::string language = translate::kUnknownLanguageCode; const std::string utf8_text(base::UTF16ToUTF8(text)); -#if BUILDFLAG(CLD_VERSION) == 2 - int num_bytes_evaluated = 0; - bool is_reliable = false; - const bool is_plain_text = true; - - // Language or CLD2::Language - int cld_language = 0; - bool is_valid_language = false; - - const int num_utf8_bytes = static_cast<int>(utf8_text.size()); - const char* raw_utf8_bytes = utf8_text.c_str(); - - CLD2::Language language3[3] = { - CLD2::UNKNOWN_LANGUAGE, CLD2::UNKNOWN_LANGUAGE, CLD2::UNKNOWN_LANGUAGE}; - int percent3[3] = {0, 0, 0}; - int flags = 0; // No flags, see compact_lang_det.h for details. - int text_bytes; // Amount of non-tag/letters-only text (assumed 0). - double normalized_score3[3] = {0.0, 0.0, 0.0}; - - const char* tld_hint = ""; - int encoding_hint = CLD2::UNKNOWN_ENCODING; - CLD2::Language language_hint = CLD2::GetLanguageFromName(html_lang.c_str()); - CLD2::CLDHints cldhints = {code.c_str(), tld_hint, encoding_hint, - language_hint}; - - CLD2::ExtDetectLanguageSummaryCheckUTF8( - raw_utf8_bytes, num_utf8_bytes, is_plain_text, &cldhints, flags, - language3, percent3, normalized_score3, - nullptr /* No ResultChunkVector used */, &text_bytes, &is_reliable, - &num_bytes_evaluated); - - if (num_bytes_evaluated < num_utf8_bytes && - language3[0] == CLD2::UNKNOWN_LANGUAGE) { - // Invalid UTF8 encountered, see bug http://crbug.com/444258. - // Retry using only the valid characters. This time the check for valid - // UTF8 can be skipped since the precise number of valid bytes is known. - CLD2::ExtDetectLanguageSummary( - raw_utf8_bytes, num_bytes_evaluated, is_plain_text, &cldhints, flags, - language3, percent3, normalized_score3, - nullptr /* No ResultChunkVector used */, &text_bytes, &is_reliable); - } - // Choose top language. - cld_language = language3[0]; - - is_valid_language = cld_language != CLD2::NUM_LANGUAGES && - cld_language != CLD2::UNKNOWN_LANGUAGE && - cld_language != CLD2::TG_UNKNOWN_LANGUAGE; - - UMA_HISTOGRAM_ENUMERATION("Translate.CLD2.LanguageDetected", - cld_language, CLD2::NUM_LANGUAGES); - if (is_valid_language) - UMA_HISTOGRAM_PERCENTAGE("Translate.CLD2.LanguageAccuracy", percent3[0]); - - if (is_cld_reliable != NULL) - *is_cld_reliable = is_reliable; - - // We don't trust the result if the CLD reports that the detection is not - // reliable, or if the actual text used to detect the language was less than - // 100 bytes (short texts can often lead to wrong results). - // TODO(toyoshim): CLD provides |is_reliable| flag. But, it just says that - // the determined language code is correct with 50% confidence. Chrome should - // handle the real confidence value to judge. - if (is_reliable && num_bytes_evaluated >= 100 && is_valid_language) { - // We should not use LanguageCode_ISO_639_1 because it does not cover all - // the languages CLD can detect. As a result, it'll return the invalid - // language code for traditional Chinese among others. - // |LanguageCodeWithDialect| will go through ISO 639-1, ISO-639-2 and - // 'other' tables to do the 'right' thing. In addition, it'll return zh-CN - // for Simplified Chinese. - // - // (1) CLD2's LanguageCode returns general Chinese 'zh' for - // CLD2::CHINESE, but Translate server doesn't accept it. This is - // converted to 'zh-CN' in the same way as CLD1's - // LanguageCodeWithDialects. - // - // (2) CLD2's LanguageCode returns zh-Hant instead of zh-TW for - // CLD2::CHINESE_T. This is technically more precise for the language - // code of traditional Chinese, while Translate server hasn't accepted - // zh-Hant yet. - if (cld_language == CLD2::CHINESE) - language = "zh-CN"; - else if (cld_language == CLD2::CHINESE_T) - language = "zh-TW"; - else - language = CLD2::LanguageCode(static_cast<CLD2::Language>(cld_language)); - } - -#elif BUILDFLAG(CLD_VERSION) == 3 // Make a prediction. chrome_lang_id::NNetLanguageIdentifier lang_id; const chrome_lang_id::NNetLanguageIdentifier::Result lang_id_result = @@ -227,9 +130,6 @@ } } } -#else -# error "CLD_VERSION must be 2 or 3" -#endif VLOG(1) << "Detected language: " << language; return language;
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc index 1aef941..4dfd4f6 100644 --- a/content/renderer/child_frame_compositing_helper.cc +++ b/content/renderer/child_frame_compositing_helper.cc
@@ -263,6 +263,9 @@ void ChildFrameCompositingHelper::SetPrimarySurfaceInfo( const viz::SurfaceInfo& surface_info) { + if (last_primary_surface_id_ == surface_info.id()) + return; + last_primary_surface_id_ = surface_info.id(); float scale_factor = surface_info.device_scale_factor(); // TODO(oshima): This is a stopgap fix so that the compositor does not @@ -298,6 +301,9 @@ void ChildFrameCompositingHelper::SetFallbackSurfaceInfo( const viz::SurfaceInfo& surface_info, const viz::SurfaceSequence& sequence) { + if (fallback_surface_id_ == surface_info.id()) + return; + fallback_surface_id_ = surface_info.id(); // The RWHV creates a destruction dependency on the surface that needs to be // satisfied. The reference factory will satisfy it when a new reference has
diff --git a/extensions/BUILD.gn b/extensions/BUILD.gn index b0424b49..ce26439 100644 --- a/extensions/BUILD.gn +++ b/extensions/BUILD.gn
@@ -146,7 +146,7 @@ "//net:test_support", "//testing/gmock", "//testing/gtest", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", ] public_deps = [
diff --git a/extensions/renderer/BUILD.gn b/extensions/renderer/BUILD.gn index 9bb856d..6d7ac971 100644 --- a/extensions/renderer/BUILD.gn +++ b/extensions/renderer/BUILD.gn
@@ -284,7 +284,7 @@ "//mojo/public/js", "//skia", "//third_party/WebKit/public:blink", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", ] if (proprietary_codecs && enable_wifi_display) {
diff --git a/extensions/renderer/DEPS b/extensions/renderer/DEPS index 5633eba..7188b2c6 100644 --- a/extensions/renderer/DEPS +++ b/extensions/renderer/DEPS
@@ -7,8 +7,6 @@ "+mojo/edk/js", "+third_party/skia/include/core", - "+third_party/cld", - "+third_party/cld_2", "+third_party/cld_3", "+third_party/WebKit/public/platform",
diff --git a/extensions/renderer/i18n_custom_bindings.cc b/extensions/renderer/i18n_custom_bindings.cc index 95cdb268..7569f04 100644 --- a/extensions/renderer/i18n_custom_bindings.cc +++ b/extensions/renderer/i18n_custom_bindings.cc
@@ -21,16 +21,7 @@ #include "extensions/common/message_bundle.h" #include "extensions/renderer/script_context.h" #include "extensions/renderer/v8_helpers.h" -#include "third_party/cld/cld_version.h" - -#if BUILDFLAG(CLD_VERSION) == 2 -#include "third_party/cld_2/src/public/compact_lang_det.h" -#include "third_party/cld_2/src/public/encodings.h" -#elif BUILDFLAG(CLD_VERSION) == 3 #include "third_party/cld_3/src/src/nnet_language_identifier.h" -#else -# error "CLD_VERSION must be 2 or 3" -#endif namespace extensions { @@ -109,30 +100,6 @@ return handle_scope.Escape(result); } -#if BUILDFLAG(CLD_VERSION) == 2 -void InitDetectedLanguages( - CLD2::Language* languages, - int* percents, - std::vector<std::unique_ptr<DetectedLanguage>>* detected_languages) { - for (int i = 0; i < kCldNumLangs; i++) { - std::string language_code; - // Convert LanguageCode 'zh' to 'zh-CN' and 'zh-Hant' to 'zh-TW' for - // Translate server usage. see DetermineTextLanguage in - // components/translate/core/language_detection/language_detection_util.cc - if (languages[i] == CLD2::UNKNOWN_LANGUAGE) { - // Break from the loop since there is no need to save - // unknown languages - break; - } else { - language_code = - CLD2::LanguageCode(static_cast<CLD2::Language>(languages[i])); - } - detected_languages->push_back( - std::make_unique<DetectedLanguage>(language_code, percents[i])); - } -} - -#elif BUILDFLAG(CLD_VERSION) == 3 void InitDetectedLanguages( const std::vector<chrome_lang_id::NNetLanguageIdentifier::Result>& lang_results, @@ -177,9 +144,6 @@ *is_reliable = false; } } -#else -# error "CLD_VERSION must be 2 or 3" -#endif } // namespace @@ -272,45 +236,6 @@ CHECK(args[0]->IsString()); std::string text = *v8::String::Utf8Value(args[0]); -#if BUILDFLAG(CLD_VERSION) == 2 - CLD2::CLDHints cldhints = {nullptr, "", CLD2::UNKNOWN_ENCODING, - CLD2::UNKNOWN_LANGUAGE}; - - bool is_plain_text = true; // assume the text is a plain text - int flags = 0; // no flags, see compact_lang_det.h for details - int text_bytes; // amount of non-tag/letters-only text (assumed 0) - int valid_prefix_bytes; // amount of valid UTF8 character in the string - double normalized_score[kCldNumLangs]; - - CLD2::Language languages[kCldNumLangs]; - int percents[kCldNumLangs]; - bool is_reliable = false; - - // populating languages and percents - int cld_language = CLD2::ExtDetectLanguageSummaryCheckUTF8( - text.c_str(), static_cast<int>(text.size()), is_plain_text, &cldhints, - flags, languages, percents, normalized_score, - nullptr, // assumed no ResultChunkVector is used - &text_bytes, &is_reliable, &valid_prefix_bytes); - - // Check if non-UTF8 character is encountered - // See bug http://crbug.com/444258. - if (valid_prefix_bytes < static_cast<int>(text.size()) && - cld_language == CLD2::UNKNOWN_LANGUAGE) { - // Detect Language upto before the first non-UTF8 character - CLD2::ExtDetectLanguageSummary( - text.c_str(), valid_prefix_bytes, is_plain_text, &cldhints, flags, - languages, percents, normalized_score, - nullptr, // assumed no ResultChunkVector is used - &text_bytes, &is_reliable); - } - - LanguageDetectionResult result(is_reliable); - // populate LanguageDetectionResult with languages and percents - InitDetectedLanguages(languages, percents, &result.languages); - args.GetReturnValue().Set(result.ToValue(context())); - -#elif BUILDFLAG(CLD_VERSION) == 3 chrome_lang_id::NNetLanguageIdentifier nnet_lang_id(/*min_num_bytes=*/0, /*max_num_bytes=*/512); std::vector<chrome_lang_id::NNetLanguageIdentifier::Result> lang_results = @@ -330,9 +255,6 @@ // and the corresponding percentages. InitDetectedLanguages(lang_results, &result); args.GetReturnValue().Set(result.ToValue(context())); -#else -# error "CLD_VERSION must be 2 or 3" -#endif } } // namespace extensions
diff --git a/extensions/shell/BUILD.gn b/extensions/shell/BUILD.gn index b7bc6f5..5b05300 100644 --- a/extensions/shell/BUILD.gn +++ b/extensions/shell/BUILD.gn
@@ -66,7 +66,7 @@ "//extensions/utility", "//skia", "//third_party/WebKit/public:blink", - "//third_party/cld", + "//third_party/cld_3/src/src:cld_3", "//ui/base", "//ui/base/ime", "//v8",
diff --git a/ios/build/bots/chromium.fyi/EarlGreyiOS.json b/ios/build/bots/chromium.fyi/EarlGreyiOS.json index 0f54ed4f..42b7322 100644 --- a/ios/build/bots/chromium.fyi/EarlGreyiOS.json +++ b/ios/build/bots/chromium.fyi/EarlGreyiOS.json
@@ -34,6 +34,56 @@ "os": "10.0", "xcode version": "9.0", "xctest": true + }, + { + "app": "ios_chrome_integration_egtests", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0", + "xctest": true + }, + { + "app": "ios_chrome_smoke_egtests", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0", + "xctest": true + }, + { + "app": "ios_chrome_web_egtests", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0", + "xctest": true + }, + { + "app": "ios_web_shell_egtests", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0", + "xctest": true + }, + { + "app": "ios_chrome_ui_egtests", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0", + "xctest": true } ] }
diff --git a/ios/build/bots/chromium.fyi/ios-simulator.json b/ios/build/bots/chromium.fyi/ios-simulator.json index 9187a85..4491f35d 100644 --- a/ios/build/bots/chromium.fyi/ios-simulator.json +++ b/ios/build/bots/chromium.fyi/ios-simulator.json
@@ -15,5 +15,14 @@ "configuration": "Debug", "sdk": "iphonesimulator11.0", "tests": [ + { + "include": "common_tests.json", + "test args": [ + "--enable-features=SlimNavigationManager" + ], + "device type": "iPhone 6s", + "os": "11.0", + "xcode version": "9.0" + } ] }
diff --git a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json index 5560aec3..89ed84e 100644 --- a/ios/build/bots/chromium.mac/ios-simulator-full-configs.json +++ b/ios/build/bots/chromium.mac/ios-simulator-full-configs.json
@@ -22,7 +22,7 @@ { "include": "eg_tests.json", "device type": "iPhone 6s Plus", - "os": "11.0", + "os": "10.0", "xcode version": "9.0" }, {
diff --git a/ios/chrome/browser/ui/alert_coordinator/BUILD.gn b/ios/chrome/browser/ui/alert_coordinator/BUILD.gn index b1582c7..babb25e2 100644 --- a/ios/chrome/browser/ui/alert_coordinator/BUILD.gn +++ b/ios/chrome/browser/ui/alert_coordinator/BUILD.gn
@@ -77,6 +77,7 @@ ":alert_coordinator", "//base", "//components/strings", + "//ios/chrome/browser/ui/util", "//ios/chrome/test/earl_grey:test_support", "//ios/testing/earl_grey:earl_grey_support", "//ios/third_party/earl_grey:earl_grey+link",
diff --git a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_egtest.mm b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_egtest.mm index 178ded9..892f941 100644 --- a/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_egtest.mm +++ b/ios/chrome/browser/ui/alert_coordinator/alert_coordinator_egtest.mm
@@ -8,6 +8,7 @@ #include "components/strings/grit/components_strings.h" #import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h" +#import "ios/chrome/browser/ui/util/top_view_controller.h" #import "ios/chrome/test/earl_grey/chrome_matchers.h" #import "ios/chrome/test/earl_grey/chrome_test_case.h" @@ -31,8 +32,9 @@ // Tests that if the alert coordinator is destroyed, the alert is dismissed. - (void)testDismissOnDestroy { + // TODO(crbug.com/754642): Remove TopPresentedViewControllerFrom(). UIViewController* topViewController = - [[[UIApplication sharedApplication] keyWindow] rootViewController]; + top_view_controller::TopPresentedViewController(); AlertCoordinator* alertCoordinator = [[AlertCoordinator alloc] initWithBaseViewController:topViewController @@ -49,8 +51,9 @@ } - (void)testNoInteractionActionAfterTap { + // TODO(crbug.com/754642): Remove TopPresentedViewControllerFrom(). UIViewController* topViewController = - [[[UIApplication sharedApplication] keyWindow] rootViewController]; + top_view_controller::TopPresentedViewController(); AlertCoordinator* alertCoordinator = [[AlertCoordinator alloc] initWithBaseViewController:topViewController
diff --git a/remoting/client/BUILD.gn b/remoting/client/BUILD.gn index 26afdbce..9dca80f 100644 --- a/remoting/client/BUILD.gn +++ b/remoting/client/BUILD.gn
@@ -55,6 +55,8 @@ "dual_buffer_frame_consumer.h", "gesture_interpreter.cc", "gesture_interpreter.h", + "oauth_token_getter_proxy.cc", + "oauth_token_getter_proxy.h", ] deps += [ "//remoting/client/display", @@ -75,6 +77,7 @@ "client_telemetry_logger_unittest.cc", "dual_buffer_frame_consumer_unittest.cc", "empty_cursor_filter_unittest.cc", + "oauth_token_getter_proxy_unittest.cc", "queued_task_poster_unittest.cc", "software_video_renderer_unittest.cc", ]
diff --git a/remoting/client/chromoting_client_runtime.cc b/remoting/client/chromoting_client_runtime.cc index 28221c2..d9933a0 100644 --- a/remoting/client/chromoting_client_runtime.cc +++ b/remoting/client/chromoting_client_runtime.cc
@@ -114,5 +114,8 @@ return log_writer_.get(); } +OAuthTokenGetter* ChromotingClientRuntime::token_getter() { + return delegate_->token_getter(); +} } // namespace remoting
diff --git a/remoting/client/chromoting_client_runtime.h b/remoting/client/chromoting_client_runtime.h index fd62dcc..722afa9 100644 --- a/remoting/client/chromoting_client_runtime.h +++ b/remoting/client/chromoting_client_runtime.h
@@ -11,6 +11,7 @@ #include "base/memory/ref_counted.h" #include "net/url_request/url_request_context_getter.h" #include "remoting/base/auto_thread.h" +#include "remoting/base/oauth_token_getter.h" #include "remoting/base/telemetry_log_writer.h" namespace base { @@ -39,11 +40,16 @@ // have been stopped. virtual void RuntimeDidShutdown() = 0; + // TODO(yuweih): Remove this once logger is using OAuthTokenGetter. // RequestAuthTokenForLogger is called when the logger is requesting // and auth token and the delegate is set. It is expected that the // delegate will give the logger and auth token on the network thread like: // (network thread): runtime->log_writer()->SetAuthToken(token) virtual void RequestAuthTokenForLogger() = 0; + + // For fetching auth token. The implementation must allow being called from + // multiple threads. Use OAuthTokenGetterProxy when necessary. + virtual OAuthTokenGetter* token_getter() = 0; }; static ChromotingClientRuntime* GetInstance(); @@ -77,6 +83,8 @@ // Must call and use log_writer on the network thread. ChromotingEventLogWriter* log_writer(); + OAuthTokenGetter* token_getter(); + private: ChromotingClientRuntime(); virtual ~ChromotingClientRuntime();
diff --git a/remoting/client/chromoting_session.cc b/remoting/client/chromoting_session.cc index 277d295..5a6db6e 100644 --- a/remoting/client/chromoting_session.cc +++ b/remoting/client/chromoting_session.cc
@@ -17,6 +17,7 @@ #include "net/socket/client_socket_factory.h" #include "remoting/base/chromium_url_request.h" #include "remoting/base/chromoting_event.h" +#include "remoting/base/service_urls.h" #include "remoting/client/audio/audio_player.h" #include "remoting/client/chromoting_client_runtime.h" #include "remoting/client/client_telemetry_logger.h" @@ -429,6 +430,8 @@ protocol::NetworkSettings( protocol::NetworkSettings::NAT_TRAVERSAL_FULL), protocol::TransportRole::CLIENT); + transport_context->set_ice_config_url( + ServiceUrls::GetInstance()->ice_config_url(), runtime_->token_getter()); #if defined(ENABLE_WEBRTC_REMOTING_CLIENT) if (connection_info_.flags.find("useWebrtc") != std::string::npos) {
diff --git a/remoting/client/jni/jni_runtime_delegate.cc b/remoting/client/jni/jni_runtime_delegate.cc index c877697..8dedf57b 100644 --- a/remoting/client/jni/jni_runtime_delegate.cc +++ b/remoting/client/jni/jni_runtime_delegate.cc
@@ -106,6 +106,13 @@ Java_JniInterface_fetchAuthToken(env); } +OAuthTokenGetter* JniRuntimeDelegate::token_getter() { + // TODO(yuweih): Implement this. This is currently only used if the client + // uses WebRTC. + NOTIMPLEMENTED(); + return nullptr; +} + void JniRuntimeDelegate::DetachFromVmAndSignal(base::WaitableEvent* waiter) { base::android::DetachFromVM(); waiter->Signal();
diff --git a/remoting/client/jni/jni_runtime_delegate.h b/remoting/client/jni/jni_runtime_delegate.h index 804b4a0..4fbe26a 100644 --- a/remoting/client/jni/jni_runtime_delegate.h +++ b/remoting/client/jni/jni_runtime_delegate.h
@@ -42,6 +42,7 @@ void RuntimeWillShutdown() override; void RuntimeDidShutdown() override; void RequestAuthTokenForLogger() override; + OAuthTokenGetter* token_getter() override; private: JniRuntimeDelegate();
diff --git a/remoting/client/oauth_token_getter_proxy.cc b/remoting/client/oauth_token_getter_proxy.cc new file mode 100644 index 0000000..100eea3 --- /dev/null +++ b/remoting/client/oauth_token_getter_proxy.cc
@@ -0,0 +1,129 @@ +// 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 "remoting/client/oauth_token_getter_proxy.h" + +#include "base/threading/thread_checker.h" +#include "base/threading/thread_task_runner_handle.h" + +namespace remoting { + +// Runs entriely on the |task_runner| thread. +class OAuthTokenGetterProxy::Core { + public: + explicit Core(std::unique_ptr<OAuthTokenGetter> token_getter); + ~Core(); + + void RequestToken( + const TokenCallback& on_access_token, + scoped_refptr<base::SingleThreadTaskRunner> original_task_runner); + + void ResolveCallback( + const TokenCallback& on_access_token, + scoped_refptr<base::SingleThreadTaskRunner> original_task_runner, + Status status, + const std::string& user_email, + const std::string& access_token); + + void InvalidateCache(); + + base::WeakPtr<Core> GetWeakPtr(); + + private: + THREAD_CHECKER(thread_checker_); + + std::unique_ptr<OAuthTokenGetter> token_getter_; + + base::WeakPtr<Core> weak_ptr_; + base::WeakPtrFactory<Core> weak_factory_; + + DISALLOW_COPY_AND_ASSIGN(Core); +}; + +OAuthTokenGetterProxy::Core::Core( + std::unique_ptr<OAuthTokenGetter> token_getter) + : token_getter_(std::move(token_getter)), weak_factory_(this) { + DETACH_FROM_THREAD(thread_checker_); + weak_ptr_ = weak_factory_.GetWeakPtr(); +} + +OAuthTokenGetterProxy::Core::~Core() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); +} + +void OAuthTokenGetterProxy::Core::RequestToken( + const TokenCallback& on_access_token, + scoped_refptr<base::SingleThreadTaskRunner> original_task_runner) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + token_getter_->CallWithToken( + base::Bind(&OAuthTokenGetterProxy::Core::ResolveCallback, weak_ptr_, + on_access_token, original_task_runner)); +} + +void OAuthTokenGetterProxy::Core::ResolveCallback( + const TokenCallback& on_access_token, + scoped_refptr<base::SingleThreadTaskRunner> original_task_runner, + Status status, + const std::string& user_email, + const std::string& access_token) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + if (original_task_runner->BelongsToCurrentThread()) { + on_access_token.Run(status, user_email, access_token); + return; + } + + original_task_runner->PostTask( + FROM_HERE, base::Bind(on_access_token, status, user_email, access_token)); +} + +void OAuthTokenGetterProxy::Core::InvalidateCache() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + token_getter_->InvalidateCache(); +} + +base::WeakPtr<OAuthTokenGetterProxy::Core> +OAuthTokenGetterProxy::Core::GetWeakPtr() { + return weak_ptr_; +} + +// OAuthTokenGetterProxy + +OAuthTokenGetterProxy::OAuthTokenGetterProxy( + std::unique_ptr<OAuthTokenGetter> token_getter, + scoped_refptr<base::SingleThreadTaskRunner> task_runner) + : core_(new Core(std::move(token_getter))), task_runner_(task_runner) {} + +OAuthTokenGetterProxy::~OAuthTokenGetterProxy() { + if (!task_runner_->BelongsToCurrentThread()) { + task_runner_->DeleteSoon(FROM_HERE, core_.release()); + } +} + +void OAuthTokenGetterProxy::CallWithToken( + const OAuthTokenGetter::TokenCallback& on_access_token) { + scoped_refptr<base::SingleThreadTaskRunner> task_runner_to_reply = + base::ThreadTaskRunnerHandle::Get(); + + if (task_runner_->BelongsToCurrentThread()) { + core_->RequestToken(on_access_token, task_runner_to_reply); + return; + } + + task_runner_->PostTask( + FROM_HERE, + base::Bind(&OAuthTokenGetterProxy::Core::RequestToken, + core_->GetWeakPtr(), on_access_token, task_runner_to_reply)); +} + +void OAuthTokenGetterProxy::InvalidateCache() { + if (task_runner_->BelongsToCurrentThread()) { + core_->InvalidateCache(); + return; + } + task_runner_->PostTask( + FROM_HERE, base::Bind(&OAuthTokenGetterProxy::Core::InvalidateCache, + core_->GetWeakPtr())); +} + +} // namespace remoting
diff --git a/remoting/client/oauth_token_getter_proxy.h b/remoting/client/oauth_token_getter_proxy.h new file mode 100644 index 0000000..aeb8d24 --- /dev/null +++ b/remoting/client/oauth_token_getter_proxy.h
@@ -0,0 +1,46 @@ +// 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 REMOTING_CLIENT_OAUTH_TOKEN_GETTER_PROXY_H_ +#define REMOTING_CLIENT_OAUTH_TOKEN_GETTER_PROXY_H_ + +#include <memory> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/memory/weak_ptr.h" +#include "remoting/base/oauth_token_getter.h" + +namespace base { +class SingleThreadTaskRunner; +} // namespace base + +namespace remoting { + +// Takes an instance of |OAuthTokenGetter| and runs (and deletes) it on the +// |task_runner| thread. The proxy can be called from any thread. +class OAuthTokenGetterProxy : public OAuthTokenGetter { + public: + OAuthTokenGetterProxy( + std::unique_ptr<OAuthTokenGetter> token_getter, + scoped_refptr<base::SingleThreadTaskRunner> task_runner); + ~OAuthTokenGetterProxy() override; + + // OAuthTokenGetter overrides. + void CallWithToken(const TokenCallback& on_access_token) override; + void InvalidateCache() override; + + private: + class Core; + + std::unique_ptr<Core> core_; + scoped_refptr<base::SingleThreadTaskRunner> task_runner_; + + DISALLOW_COPY_AND_ASSIGN(OAuthTokenGetterProxy); +}; + +} // namespace remoting + +#endif // REMOTING_CLIENT_OAUTH_TOKEN_GETTER_PROXY_H_
diff --git a/remoting/client/oauth_token_getter_proxy_unittest.cc b/remoting/client/oauth_token_getter_proxy_unittest.cc new file mode 100644 index 0000000..52cd863 --- /dev/null +++ b/remoting/client/oauth_token_getter_proxy_unittest.cc
@@ -0,0 +1,244 @@ +// 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 "remoting/client/oauth_token_getter_proxy.h" + +#include "base/callback.h" +#include "base/macros.h" +#include "base/message_loop/message_loop.h" +#include "base/threading/thread.h" +#include "base/threading/thread_checker.h" +#include "base/threading/thread_task_runner_handle.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace remoting { + +namespace { + +class FakeOAuthTokenGetter : public OAuthTokenGetter { + public: + FakeOAuthTokenGetter(base::OnceClosure on_destroyed); + ~FakeOAuthTokenGetter() override; + + void ResolveCallback(Status status, + const std::string& user_email, + const std::string& access_token); + + void ExpectInvalidateCache(); + + // OAuthTokenGetter overrides. + void CallWithToken(const TokenCallback& on_access_token) override; + void InvalidateCache() override; + + private: + TokenCallback on_access_token_; + bool invalidate_cache_expected_ = false; + base::OnceClosure on_destroyed_; + + THREAD_CHECKER(thread_checker_); + + DISALLOW_COPY_AND_ASSIGN(FakeOAuthTokenGetter); +}; + +FakeOAuthTokenGetter::FakeOAuthTokenGetter(base::OnceClosure on_destroyed) + : on_destroyed_(std::move(on_destroyed)) { + DETACH_FROM_THREAD(thread_checker_); +} + +FakeOAuthTokenGetter::~FakeOAuthTokenGetter() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + DCHECK(!invalidate_cache_expected_); + std::move(on_destroyed_).Run(); +} + +void FakeOAuthTokenGetter::ResolveCallback(Status status, + const std::string& user_email, + const std::string& access_token) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + DCHECK(!on_access_token_.is_null()); + on_access_token_.Run(status, user_email, access_token); + on_access_token_.Reset(); +} + +void FakeOAuthTokenGetter::ExpectInvalidateCache() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + ASSERT_FALSE(invalidate_cache_expected_); + invalidate_cache_expected_ = true; +} + +void FakeOAuthTokenGetter::CallWithToken(const TokenCallback& on_access_token) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + on_access_token_ = on_access_token; +} + +void FakeOAuthTokenGetter::InvalidateCache() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + ASSERT_TRUE(invalidate_cache_expected_); + invalidate_cache_expected_ = false; +} + +} // namespace + +class OAuthTokenGetterProxyTest : public testing::Test { + public: + OAuthTokenGetterProxyTest() {} + ~OAuthTokenGetterProxyTest() override {} + + // testing::Test overrides. + void SetUp() override; + void TearDown() override; + + protected: + void TestCallWithTokenOnRunnerThread(OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token); + + void TestCallWithTokenOnMainThread(OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token); + + void ExpectInvalidateCache(); + + base::Thread runner_thread_{"runner_thread"}; + FakeOAuthTokenGetter* token_getter_; + std::unique_ptr<OAuthTokenGetterProxy> proxy_; + + private: + void TestCallWithTokenImpl(OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token); + + void OnTokenReceived(OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token); + + struct TokenCallbackResult { + OAuthTokenGetter::Status status; + std::string user_email; + std::string access_token; + }; + + std::unique_ptr<TokenCallbackResult> expected_callback_result_; + + void OnTokenGetterDestroyed(); + + base::MessageLoop main_loop_; + + DISALLOW_COPY_AND_ASSIGN(OAuthTokenGetterProxyTest); +}; + +void OAuthTokenGetterProxyTest::SetUp() { + std::unique_ptr<FakeOAuthTokenGetter> owned_token_getter = + std::make_unique<FakeOAuthTokenGetter>( + base::BindOnce(&OAuthTokenGetterProxyTest::OnTokenGetterDestroyed, + base::Unretained(this))); + token_getter_ = owned_token_getter.get(); + runner_thread_.Start(); + proxy_ = std::make_unique<OAuthTokenGetterProxy>( + std::move(owned_token_getter), runner_thread_.task_runner()); +} + +void OAuthTokenGetterProxyTest::TearDown() { + proxy_.reset(); + runner_thread_.FlushForTesting(); + ASSERT_FALSE(token_getter_); + ASSERT_FALSE(expected_callback_result_); +} + +void OAuthTokenGetterProxyTest::TestCallWithTokenOnRunnerThread( + OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token) { + runner_thread_.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&OAuthTokenGetterProxyTest::TestCallWithTokenImpl, + base::Unretained(this), + OAuthTokenGetter::Status::AUTH_ERROR, "email3", "token3")); + runner_thread_.FlushForTesting(); +} + +void OAuthTokenGetterProxyTest::TestCallWithTokenOnMainThread( + OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token) { + TestCallWithTokenImpl(status, user_email, access_token); + runner_thread_.FlushForTesting(); + base::RunLoop().RunUntilIdle(); +} + +void OAuthTokenGetterProxyTest::ExpectInvalidateCache() { + runner_thread_.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&FakeOAuthTokenGetter::ExpectInvalidateCache, + base::Unretained(token_getter_))); +} + +void OAuthTokenGetterProxyTest::TestCallWithTokenImpl( + OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token) { + ASSERT_FALSE(expected_callback_result_); + expected_callback_result_ = std::make_unique<TokenCallbackResult>(); + expected_callback_result_->status = status; + expected_callback_result_->user_email = user_email; + expected_callback_result_->access_token = access_token; + proxy_->CallWithToken(base::Bind(&OAuthTokenGetterProxyTest::OnTokenReceived, + base::Unretained(this))); + runner_thread_.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&FakeOAuthTokenGetter::ResolveCallback, + base::Unretained(token_getter_), status, + user_email, access_token)); +} + +void OAuthTokenGetterProxyTest::OnTokenReceived( + OAuthTokenGetter::Status status, + const std::string& user_email, + const std::string& access_token) { + ASSERT_TRUE(expected_callback_result_); + EXPECT_EQ(expected_callback_result_->status, status); + EXPECT_EQ(expected_callback_result_->user_email, user_email); + EXPECT_EQ(expected_callback_result_->access_token, access_token); + expected_callback_result_.reset(); +} + +void OAuthTokenGetterProxyTest::OnTokenGetterDestroyed() { + token_getter_ = nullptr; +} + +TEST_F(OAuthTokenGetterProxyTest, ProxyDeletedOnMainThread) { + // Default behavior verified in TearDown(). +} + +TEST_F(OAuthTokenGetterProxyTest, ProxyDeletedOnRunnerThread) { + runner_thread_.task_runner()->DeleteSoon(FROM_HERE, proxy_.release()); +} + +TEST_F(OAuthTokenGetterProxyTest, CallWithTokenOnMainThread) { + TestCallWithTokenOnMainThread(OAuthTokenGetter::Status::SUCCESS, "email1", + "token1"); + TestCallWithTokenOnMainThread(OAuthTokenGetter::Status::NETWORK_ERROR, + "email2", "token2"); +} + +TEST_F(OAuthTokenGetterProxyTest, CallWithTokenOnRunnerThread) { + TestCallWithTokenOnRunnerThread(OAuthTokenGetter::Status::AUTH_ERROR, + "email3", "token3"); + TestCallWithTokenOnRunnerThread(OAuthTokenGetter::Status::SUCCESS, "email4", + "token4"); +} + +TEST_F(OAuthTokenGetterProxyTest, InvalidateCacheOnMainThread) { + ExpectInvalidateCache(); + proxy_->InvalidateCache(); + runner_thread_.FlushForTesting(); +} + +TEST_F(OAuthTokenGetterProxyTest, InvalidateCacheOnRunnerThread) { + ExpectInvalidateCache(); + runner_thread_.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&OAuthTokenGetterProxy::InvalidateCache, + base::Unretained(proxy_.get()))); + runner_thread_.FlushForTesting(); +} + +} // namespace remoting
diff --git a/remoting/ios/facade/BUILD.gn b/remoting/ios/facade/BUILD.gn index c2f6623..c0b83150 100644 --- a/remoting/ios/facade/BUILD.gn +++ b/remoting/ios/facade/BUILD.gn
@@ -14,6 +14,8 @@ "host_list_fetcher.h", "ios_client_runtime_delegate.h", "ios_client_runtime_delegate.mm", + "ios_oauth_token_getter.h", + "ios_oauth_token_getter.mm", "remoting_authentication.h", "remoting_oauth_authentication.h", "remoting_oauth_authentication.mm",
diff --git a/remoting/ios/facade/ios_client_runtime_delegate.h b/remoting/ios/facade/ios_client_runtime_delegate.h index 4c9a142d..f5f535c 100644 --- a/remoting/ios/facade/ios_client_runtime_delegate.h +++ b/remoting/ios/facade/ios_client_runtime_delegate.h
@@ -5,6 +5,8 @@ #ifndef REMOTING_IOS_FACADE_IOS_CLIENT_RUNTIME_DELEGATE_H_ #define REMOTING_IOS_FACADE_IOS_CLIENT_RUNTIME_DELEGATE_H_ +#include <memory> + #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "remoting/client/chromoting_client_runtime.h" @@ -20,6 +22,7 @@ void RuntimeWillShutdown() override; void RuntimeDidShutdown() override; void RequestAuthTokenForLogger() override; + OAuthTokenGetter* token_getter() override; // Sets the access token. Should be called when the user switches accounts. void SetAuthToken(const std::string& access_token); @@ -27,6 +30,7 @@ base::WeakPtr<IosClientRuntimeDelegate> GetWeakPtr(); private: + std::unique_ptr<OAuthTokenGetter> token_getter_; ChromotingClientRuntime* runtime_; base::WeakPtrFactory<IosClientRuntimeDelegate> weak_factory_;
diff --git a/remoting/ios/facade/ios_client_runtime_delegate.mm b/remoting/ios/facade/ios_client_runtime_delegate.mm index e15d531b..653d403 100644 --- a/remoting/ios/facade/ios_client_runtime_delegate.mm +++ b/remoting/ios/facade/ios_client_runtime_delegate.mm
@@ -18,11 +18,15 @@ #include "base/memory/ptr_util.h" #include "base/memory/weak_ptr.h" #include "base/strings/sys_string_conversions.h" +#include "remoting/client/oauth_token_getter_proxy.h" +#include "remoting/ios/facade/ios_oauth_token_getter.h" namespace remoting { IosClientRuntimeDelegate::IosClientRuntimeDelegate() : weak_factory_(this) { runtime_ = ChromotingClientRuntime::GetInstance(); + token_getter_ = std::make_unique<OAuthTokenGetterProxy>( + std::make_unique<IosOauthTokenGetter>(), runtime_->ui_task_runner()); } IosClientRuntimeDelegate::~IosClientRuntimeDelegate() {} @@ -62,6 +66,10 @@ } } +OAuthTokenGetter* IosClientRuntimeDelegate::token_getter() { + return token_getter_.get(); +} + void IosClientRuntimeDelegate::SetAuthToken(const std::string& access_token) { if (runtime_->network_task_runner()->BelongsToCurrentThread()) { runtime_->log_writer()->SetAuthToken(access_token);
diff --git a/remoting/ios/facade/ios_oauth_token_getter.h b/remoting/ios/facade/ios_oauth_token_getter.h new file mode 100644 index 0000000..7ac9e1a6 --- /dev/null +++ b/remoting/ios/facade/ios_oauth_token_getter.h
@@ -0,0 +1,31 @@ +// 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 REMOTING_IOS_FACADE_IOS_OAUTH_TOKEN_GETTER_H_ +#define REMOTING_IOS_FACADE_IOS_OAUTH_TOKEN_GETTER_H_ + +#include "base/macros.h" +#include "remoting/base/oauth_token_getter.h" + +namespace remoting { + +// The OAuthTokenGetter implementation on iOS client that uses +// RemotingService.instance.authentication to authenticate. Depending on the +// RemotingAuthentication implementation, this class may be single-threaded. +class IosOauthTokenGetter : public OAuthTokenGetter { + public: + IosOauthTokenGetter(); + ~IosOauthTokenGetter() override; + + // OAuthTokenGetter overrides. + void CallWithToken(const TokenCallback& on_access_token) override; + void InvalidateCache() override; + + private: + DISALLOW_COPY_AND_ASSIGN(IosOauthTokenGetter); +}; + +} // namespace remoting + +#endif // REMOTING_IOS_FACADE_IOS_OAUTH_TOKEN_GETTER_H_
diff --git a/remoting/ios/facade/ios_oauth_token_getter.mm b/remoting/ios/facade/ios_oauth_token_getter.mm new file mode 100644 index 0000000..b6dfc63 --- /dev/null +++ b/remoting/ios/facade/ios_oauth_token_getter.mm
@@ -0,0 +1,53 @@ +// 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. + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +#include "remoting/ios/facade/ios_oauth_token_getter.h" + +#include "base/strings/sys_string_conversions.h" +#include "remoting/ios/facade/remoting_authentication.h" +#include "remoting/ios/facade/remoting_service.h" + +namespace remoting { + +IosOauthTokenGetter::IosOauthTokenGetter() {} + +IosOauthTokenGetter::~IosOauthTokenGetter() {} + +void IosOauthTokenGetter::CallWithToken(const TokenCallback& on_access_token) { + // This forces the block to copy the callback instead of just the reference. + TokenCallback on_access_token_copied = on_access_token; + [RemotingService.instance.authentication + callbackWithAccessToken:^(RemotingAuthenticationStatus status, + NSString* userEmail, NSString* accessToken) { + Status oauth_status; + switch (status) { + case RemotingAuthenticationStatusSuccess: + oauth_status = Status::SUCCESS; + break; + case RemotingAuthenticationStatusAuthError: + oauth_status = Status::AUTH_ERROR; + break; + case RemotingAuthenticationStatusNetworkError: + oauth_status = Status::NETWORK_ERROR; + break; + default: + NOTREACHED(); + } + on_access_token_copied.Run(oauth_status, + base::SysNSStringToUTF8(userEmail), + base::SysNSStringToUTF8(accessToken)); + }]; +} + +void IosOauthTokenGetter::InvalidateCache() { + // TODO(crbug.com/782071): Implement this once we make the caller invalidate + // the cache. + NOTIMPLEMENTED(); +} + +} // namespace remoting
diff --git a/testing/buildbot/filters/mash.browser_tests.filter b/testing/buildbot/filters/mash.browser_tests.filter index 41a6277..596957b 100644 --- a/testing/buildbot/filters/mash.browser_tests.filter +++ b/testing/buildbot/filters/mash.browser_tests.filter
@@ -37,6 +37,8 @@ AcceleratorCommandsFullscreenBrowserTest.* AcceleratorCommandsPlatformAppFullscreenBrowserTest.* ArcAppLauncherBrowserTest.* +ShelfBrowserTest.* +ShelfGuestSessionBrowserTest.* SoundsManagerTestImpl.* SystemTrayClientClockTest.* SystemTrayClientEnterpriseTest.*
diff --git a/third_party/WebKit/LayoutTests/css3/flexbox/bug750553.html b/third_party/WebKit/LayoutTests/css3/flexbox/bug750553.html new file mode 100644 index 0000000..2e78a27 --- /dev/null +++ b/third_party/WebKit/LayoutTests/css3/flexbox/bug750553.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<script src="../../resources/check-layout-th.js"></script> +<style> +html, body { + margin: 0; +} + +body { + display: flex; + flex-direction: column; +} + +.content { + align-self: center; +} + +.content > div { + width: 400px; + display: inline-block; +} +</style> + +<body onload="checkLayout('.content')"> +<div class="content" data-offset-x="0"> + <div data-offset-x="0">X</div> + <div>X</div> + <div>X</div> + <div>X</div> + <div>X</div> +</div>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-serviceworker.https-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-serviceworker.https-expected.txt index 34f2d61..9ea3153 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-serviceworker.https-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-serviceworker.https-expected.txt
@@ -9,9 +9,9 @@ FAIL TypeError from request constructor takes priority - RequestInit's method is invalid promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's method is forbidden promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +FAIL TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - Bad referrerPolicy init parameter value promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" PASS TypeError from request constructor takes priority - Bad mode init parameter value PASS TypeError from request constructor takes priority - Bad credentials init parameter value
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-sharedworker-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-sharedworker-expected.txt index 34f2d61..9ea3153 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-sharedworker-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general-sharedworker-expected.txt
@@ -9,9 +9,9 @@ FAIL TypeError from request constructor takes priority - RequestInit's method is invalid promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's method is forbidden promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +FAIL TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - Bad referrerPolicy init parameter value promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" PASS TypeError from request constructor takes priority - Bad mode init parameter value PASS TypeError from request constructor takes priority - Bad credentials init parameter value
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any-expected.txt index 34f2d61..9ea3153 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any-expected.txt
@@ -9,9 +9,9 @@ FAIL TypeError from request constructor takes priority - RequestInit's method is invalid promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's method is forbidden promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +FAIL TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - Bad referrerPolicy init parameter value promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" PASS TypeError from request constructor takes priority - Bad mode init parameter value PASS TypeError from request constructor takes priority - Bad credentials init parameter value
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any.worker-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any.worker-expected.txt index 34f2d61..9ea3153 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any.worker-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/abort/general.any.worker-expected.txt
@@ -9,9 +9,9 @@ FAIL TypeError from request constructor takes priority - RequestInit's method is invalid promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's method is forbidden promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - RequestInit's mode is no-cors and method is not simple promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" -PASS TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors -PASS TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors +FAIL TypeError from request constructor takes priority - RequestInit's cache mode is only-if-cached and mode is not same-origin promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" +FAIL TypeError from request constructor takes priority - Request with cache mode: only-if-cached and fetch mode no-cors promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" FAIL TypeError from request constructor takes priority - Bad referrerPolicy init parameter value promise_test: Unhandled rejection with value: object "ReferenceError: AbortController is not defined" PASS TypeError from request constructor takes priority - Bad mode init parameter value PASS TypeError from request constructor takes priority - Bad credentials init parameter value
diff --git a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-error-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-error-expected.txt index c9ca346..8a87ebe 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-error-expected.txt +++ b/third_party/WebKit/LayoutTests/external/wpt/fetch/api/request/request-error-expected.txt
@@ -7,9 +7,9 @@ PASS RequestInit's method is invalid PASS RequestInit's method is forbidden PASS RequestInit's mode is no-cors and method is not simple -FAIL RequestInit's cache mode is only-if-cached and mode is not same-origin assert_throws: Expect TypeError exception function "() => new Request(...args)" did not throw -FAIL Request with cache mode: only-if-cached and fetch mode cors assert_throws: Expect TypeError exception function "() => new Request(...args)" did not throw -FAIL Request with cache mode: only-if-cached and fetch mode no-cors assert_throws: Expect TypeError exception function "() => new Request(...args)" did not throw +PASS RequestInit's cache mode is only-if-cached and mode is not same-origin +PASS Request with cache mode: only-if-cached and fetch mode cors +PASS Request with cache mode: only-if-cached and fetch mode no-cors PASS Bad referrerPolicy init parameter value FAIL Bad mode init parameter value assert_throws: Expect TypeError exception function "() => new Request(...args)" did not throw FAIL Bad credentials init parameter value assert_throws: Expect TypeError exception function "() => new Request(...args)" did not throw
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/sandboxed-iframe-fetch-event-iframe.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html similarity index 100% rename from third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/sandboxed-iframe-fetch-event-iframe.html rename to third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-iframe.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/sandboxed-iframe-fetch-event-worker.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js similarity index 100% rename from third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/resources/sandboxed-iframe-fetch-event-worker.js rename to third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/sandboxed-iframe-fetch-event-worker.js
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js index 1df4363..1f6bbaa 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/resources/test-helpers.sub.js
@@ -255,3 +255,13 @@ }) .then(() => navigator.serviceWorker.getRegistration(scope)); } + +function with_sandboxed_iframe(url, sandbox) { + return new Promise(function(resolve) { + var frame = document.createElement('iframe'); + frame.sandbox = sandbox; + frame.src = url; + frame.onload = function() { resolve(frame); }; + document.body.appendChild(frame); + }); +}
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html new file mode 100644 index 0000000..8b361bd2 --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/service-worker/sandboxed-iframe-fetch-event.https.html
@@ -0,0 +1,216 @@ +<!DOCTYPE html> +<title>ServiceWorker FetchEvent for sandboxed iframe.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<body> +<script> +var lastCallbackId = 0; +var callbacks = {}; +function postMessageAndWaitResult(frame) { + return new Promise(function(resolve) { + var id = ++lastCallbackId; + callbacks[id] = resolve; + frame.contentWindow.postMessage({id:id}, '*'); + }); +} + +window.onmessage = function (e) { + message = e.data; + var id = message['id']; + var calback = callbacks[id]; + delete callbacks[id]; + calback(message['result']); +}; + +promise_test(function(t) { + var SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.html'; + var SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js'; + var frames = []; + var worker; + return service_worker_unregister_and_register(t, SCRIPT, SCOPE) + .then(function(registration) { + worker = registration.installing; + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(function() { + return with_iframe(SCOPE + '?iframe'); + }) + .then(function(frame) { + frames.push(frame); + return postMessageAndWaitResult(frame); + }) + .then(function(result) { + assert_equals(result, 'done'); + return with_sandboxed_iframe(SCOPE + '?script', 'allow-scripts'); + }) + .then(function(frame) { + frames.push(frame); + return postMessageAndWaitResult(frame); + }) + .then(function(result) { + assert_equals(result, 'done'); + return with_sandboxed_iframe(SCOPE + '?script-origin', + 'allow-scripts allow-same-origin'); + }) + .then(function(frame) { + frames.push(frame); + return postMessageAndWaitResult(frame); + }) + .then(function(result) { + assert_equals(result, 'done'); + return new Promise(function(resolve) { + var channel = new MessageChannel(); + channel.port1.onmessage = function(msg) { + resolve(msg); + }; + worker.postMessage({port: channel.port2}, [channel.port2]); + }); + }) + .then(function(msg) { + for (var frame of frames) { + frame.remove(); + } + var expected_base_url = new URL(SCOPE, location.href).href; + var request_set = {}; + for (var request of msg.data.requests) { + request_set[request] = true; + } + assert_true( + expected_base_url + '?iframe' in request_set, + 'The request for normal iframe should be handled by SW.'); + assert_true( + expected_base_url + '?iframe_fetch' in request_set, + 'The fetch request from normal iframe should be handled by SW.'); + assert_true( + expected_base_url + '?iframe_workerfetch' in request_set, + 'The fetch request from worker in normal iframe should be ' + + 'handled by SW.'); + assert_true( + expected_base_url + '?iframe_iframe' in request_set, + 'The request for normal iframe inside normal iframe should be ' + + 'handled by SW.'); + assert_false( + expected_base_url + '?iframe_script' in request_set, + 'The request for sandboxed iframe with allow-scripts flag ' + + 'inside normal iframe should not be handled by SW.'); + assert_true( + expected_base_url + '?iframe_script-origin' in request_set, + 'The request for sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag inside normal iframe should be handled ' + + 'by SW.'); + assert_false( + expected_base_url + '?script' in request_set, + 'The request for sandboxed iframe with allow-scripts flag ' + + 'should not be handled by SW.'); + assert_false( + expected_base_url + '?script_fetch' in request_set, + 'The fetch request from sandboxed iframe with allow-scripts ' + + 'flag should not be handled by SW.'); + assert_false( + expected_base_url + '?script_workerfetch' in request_set, + 'The fetch request from worker from sandboxed iframe with ' + + 'allow-scripts flag should not be handled by SW.'); + assert_false( + expected_base_url + '?script_iframe' in request_set, + 'The request for normal iframe inside sandboxed iframe with ' + + 'allow-scripts flag should not be handled by SW.'); + assert_false( + expected_base_url + '?script_script' in request_set, + 'The request for sandboxed iframe with allow-scripts flag ' + + 'inside sandboxed iframe with allow-scripts flag should not be ' + + 'handled by SW.'); + assert_false( + expected_base_url + '?script_script-origin' in request_set, + 'The request for sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag inside sandboxed iframe with ' + + 'allow-scripts flag should not be handled by SW.'); + assert_true( + expected_base_url + '?script-origin' in request_set, + 'The request for sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag should be handled by SW.'); + assert_true( + expected_base_url + '?script-origin_fetch' in request_set, + 'The fetch request from sandboxed iframe with allow-scripts ' + + 'and allow-same-origin flag should be handled by SW.'); + assert_true( + expected_base_url + '?script-origin_workerfetch' in request_set, + 'The fetch request from worker in sandboxed iframe with ' + + 'allow-scripts and allow-same-origin flag should be handled ' + + 'by SW.'); + assert_true( + expected_base_url + '?script-origin_iframe' in request_set, + 'The request for normal iframe inside sandboxed iframe with ' + + 'allow-scripts and allow-same-origin flag should be handled by' + + 'SW.'); + assert_false( + expected_base_url + '?script-origin_script' in request_set, + 'The request for sandboxed iframe with allow-scripts flag ' + + 'inside sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag should be handled by SW.'); + assert_true( + expected_base_url + '?script-origin_script-origin' in request_set, + 'The request for sandboxed iframe with allow-scripts and' + + 'allow-same-origin flag inside sandboxed iframe with ' + + 'allow-scripts and allow-same-origin flag should be handled by' + + 'SW.'); + + var client_set = {}; + for (var client of msg.data.clients) { + client_set[client] = true; + } + assert_true( + expected_base_url + '?iframe' in client_set, + 'The normal iframe should be controlled by SW.'); + assert_true( + expected_base_url + '?iframe_iframe' in client_set, + 'The normal iframe inside normal iframe should be controlled ' + + 'by SW.'); + assert_false( + expected_base_url + '?iframe_script' in client_set, + 'The sandboxed iframe with allow-scripts flag inside normal ' + + 'iframe should not be controlled by SW.'); + assert_true( + expected_base_url + '?iframe_script-origin' in client_set, + 'The sandboxed iframe with allow-scripts and allow-same-origin' + + 'flag inside normal iframe should be controlled by SW.'); + assert_false( + expected_base_url + '?script' in client_set, + 'The sandboxed iframe with allow-scripts flag should not be ' + + 'controlled by SW.'); + assert_false( + expected_base_url + '?script_iframe' in client_set, + 'The normal iframe inside sandboxed iframe with allow-scripts' + + 'flag should not be controlled by SW.'); + assert_false( + expected_base_url + '?script_script' in client_set, + 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + + 'iframe with allow-scripts flag should not be controlled by SW.'); + assert_false( + expected_base_url + '?script_script-origin' in client_set, + 'The sandboxed iframe with allow-scripts and allow-same-origin ' + + 'flag inside sandboxed iframe with allow-scripts flag should ' + + 'not be controlled by SW.'); + assert_true( + expected_base_url + '?script-origin' in client_set, + 'The sandboxed iframe with allow-scripts and allow-same-origin ' + + 'flag should be controlled by SW.'); + assert_true( + expected_base_url + '?script-origin_iframe' in client_set, + 'The normal iframe inside sandboxed iframe with allow-scripts ' + + 'and allow-same-origin flag should be controlled by SW.'); + assert_false( + expected_base_url + '?script-origin_script' in client_set, + 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + + 'iframe with allow-scripts and allow-same-origin flag should ' + + 'be controlled by SW.'); + assert_true( + expected_base_url + '?script-origin_script-origin' in client_set, + 'The sandboxed iframe with allow-scripts and allow-same-origin ' + + 'flag inside sandboxed iframe with allow-scripts and ' + + 'allow-same-origin flag should be controlled by SW.'); + return service_worker_unregister_and_done(t, SCOPE); + }); + }, 'ServiceWorker FetchEvent for sandboxed iframe.'); +</script> +</body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/sandboxed-iframe-fetch-event.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/sandboxed-iframe-fetch-event.html deleted file mode 100644 index cd495c6..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/chromium/sandboxed-iframe-fetch-event.html +++ /dev/null
@@ -1,220 +0,0 @@ -<!DOCTYPE html> -<title>ServiceWorker FetchEvent for sandboxed iframe.</title> -<script src="../../resources/testharness.js"></script> -<script src="../../resources/testharnessreport.js"></script> -<script src="../resources/test-helpers.js"></script> -<body> -<script> -if (window.location.hostname == "127.0.0.1") { - window.location.href = "https://example.test:8443" + window.location.pathname; -} else { - var lastCallbackId = 0; - var callbacks = {}; - function postMassageAndWaitResult(frame) { - return new Promise(function(resolve) { - var id = ++lastCallbackId; - callbacks[id] = resolve; - frame.contentWindow.postMessage({id:id}, '*'); - }); - } - - window.onmessage = function (e) { - message = e.data; - var id = message['id']; - var calback = callbacks[id]; - delete callbacks[id]; - calback(message['result']); - }; - - promise_test(function(t) { - var SCOPE = 'resources/sandboxed-iframe-fetch-event-iframe.html'; - var SCRIPT = 'resources/sandboxed-iframe-fetch-event-worker.js'; - var frames = []; - var worker; - return service_worker_unregister_and_register(t, SCRIPT, SCOPE) - .then(function(registration) { - worker = registration.installing; - return wait_for_state(t, registration.installing, 'activated'); - }) - .then(function() { - return with_iframe(SCOPE + '?iframe'); - }) - .then(function(frame) { - frames.push(frame); - return postMassageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return with_sandboxed_iframe(SCOPE + '?script', 'allow-scripts'); - }) - .then(function(frame) { - frames.push(frame); - return postMassageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return with_sandboxed_iframe(SCOPE + '?script-origin', - 'allow-scripts allow-same-origin'); - }) - .then(function(frame) { - frames.push(frame); - return postMassageAndWaitResult(frame); - }) - .then(function(result) { - assert_equals(result, 'done'); - return new Promise(function(resolve) { - var channel = new MessageChannel(); - channel.port1.onmessage = function(msg) { - resolve(msg); - }; - worker.postMessage({port: channel.port2}, [channel.port2]); - }); - }) - .then(function(msg) { - for (var frame of frames) { - frame.remove(); - } - var expected_base_url = new URL(SCOPE, location.href).href; - var request_set = {}; - for (var request of msg.data.requests) { - request_set[request] = true; - } - assert_true( - expected_base_url + '?iframe' in request_set, - 'The request for normal iframe should be handled by SW.'); - assert_true( - expected_base_url + '?iframe_fetch' in request_set, - 'The fetch request from normal iframe should be handled by SW.'); - assert_true( - expected_base_url + '?iframe_workerfetch' in request_set, - 'The fetch request from worker in normal iframe should be ' + - 'handled by SW.'); - assert_true( - expected_base_url + '?iframe_iframe' in request_set, - 'The request for normal iframe inside normal iframe should be ' + - 'handled by SW.'); - assert_false( - expected_base_url + '?iframe_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside normal iframe should not be handled by SW.'); - assert_true( - expected_base_url + '?iframe_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag inside normal iframe should be handled ' + - 'by SW.'); - assert_false( - expected_base_url + '?script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'should not be handled by SW.'); - assert_false( - expected_base_url + '?script_fetch' in request_set, - 'The fetch request from sandboxed iframe with allow-scripts ' + - 'flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_workerfetch' in request_set, - 'The fetch request from worker from sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_iframe' in request_set, - 'The request for normal iframe inside sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_false( - expected_base_url + '?script_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside sandboxed iframe with allow-scripts flag should not be ' + - 'handled by SW.'); - assert_false( - expected_base_url + '?script_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag inside sandboxed iframe with ' + - 'allow-scripts flag should not be handled by SW.'); - assert_true( - expected_base_url + '?script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_fetch' in request_set, - 'The fetch request from sandboxed iframe with allow-scripts ' + - 'and allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_workerfetch' in request_set, - 'The fetch request from worker in sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled ' + - 'by SW.'); - assert_true( - expected_base_url + '?script-origin_iframe' in request_set, - 'The request for normal iframe inside sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled by' + - 'SW.'); - assert_false( - expected_base_url + '?script-origin_script' in request_set, - 'The request for sandboxed iframe with allow-scripts flag ' + - 'inside sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be handled by SW.'); - assert_true( - expected_base_url + '?script-origin_script-origin' in request_set, - 'The request for sandboxed iframe with allow-scripts and' + - 'allow-same-origin flag inside sandboxed iframe with ' + - 'allow-scripts and allow-same-origin flag should be handled by' + - 'SW.'); - - var client_set = {}; - for (var client of msg.data.clients) { - client_set[client] = true; - } - assert_true( - expected_base_url + '?iframe' in client_set, - 'The normal iframe should be controlled by SW.'); - assert_true( - expected_base_url + '?iframe_iframe' in client_set, - 'The normal iframe inside normal iframe should be controlled ' + - 'by SW.'); - assert_false( - expected_base_url + '?iframe_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside normal ' + - 'iframe should not be controlled by SW.'); - assert_true( - expected_base_url + '?iframe_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin' + - 'flag inside normal iframe should be controlled by SW.'); - assert_false( - expected_base_url + '?script' in client_set, - 'The sandboxed iframe with allow-scripts flag should not be ' + - 'controlled by SW.'); - assert_false( - expected_base_url + '?script_iframe' in client_set, - 'The normal iframe inside sandboxed iframe with allow-scripts' + - 'flag should not be controlled by SW.'); - assert_false( - expected_base_url + '?script_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + - 'iframe with allow-scripts flag should not be controlled by SW.'); - assert_false( - expected_base_url + '?script_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag inside sandboxed iframe with allow-scripts flag should ' + - 'not be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag should be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin_iframe' in client_set, - 'The normal iframe inside sandboxed iframe with allow-scripts ' + - 'and allow-same-origin flag should be controlled by SW.'); - assert_false( - expected_base_url + '?script-origin_script' in client_set, - 'The sandboxed iframe with allow-scripts flag inside sandboxed ' + - 'iframe with allow-scripts and allow-same-origin flag should ' + - 'be controlled by SW.'); - assert_true( - expected_base_url + '?script-origin_script-origin' in client_set, - 'The sandboxed iframe with allow-scripts and allow-same-origin ' + - 'flag inside sandboxed iframe with allow-scripts and ' + - 'allow-same-origin flag should be controlled by SW.'); - return service_worker_unregister_and_done(t, SCOPE); - }); - }, 'ServiceWorker FetchEvent for sandboxed iframe.'); -} -</script> -</body>
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/inspectorViewTabbedPane.css b/third_party/WebKit/Source/devtools/front_end/ui/inspectorViewTabbedPane.css index 7608368..2fa4b1f 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/inspectorViewTabbedPane.css +++ b/third_party/WebKit/Source/devtools/front_end/ui/inspectorViewTabbedPane.css
@@ -8,12 +8,15 @@ .tabbed-pane-header-tab.selected { height: 26px; margin: 0; - background: #f3f3f3; border: none; border-left: 2px solid transparent; border-right: 2px solid transparent; } +.tabbed-pane-header-tab:not(.dragging):not(:hover) { + background: #f3f3f3; +} + .tabbed-pane-header-tab.selected { border-width: 0 2px 0 2px; }
diff --git a/third_party/WebKit/Source/modules/fetch/Request.cpp b/third_party/WebKit/Source/modules/fetch/Request.cpp index 0ba3f32..81d0d450 100644 --- a/third_party/WebKit/Source/modules/fetch/Request.cpp +++ b/third_party/WebKit/Source/modules/fetch/Request.cpp
@@ -263,6 +263,15 @@ request->SetCacheMode(mojom::FetchCacheMode::kOnlyIfCached); } + // If |request|’s cache mode is "only-if-cached" and |request|’s mode is not + // "same-origin", then throw a TypeError. + if (request->CacheMode() == mojom::FetchCacheMode::kOnlyIfCached && + request->Mode() != network::mojom::FetchRequestMode::kSameOrigin) { + exception_state.ThrowTypeError( + "'only-if-cached' can be set only with 'same-origin' mode"); + return nullptr; + } + // "If |init|'s redirect member is present, set |request|'s redirect mode // to it." if (init.Redirect() == "follow") {
diff --git a/third_party/cld/BUILD.gn b/third_party/cld/BUILD.gn deleted file mode 100644 index 19dd230e..0000000 --- a/third_party/cld/BUILD.gn +++ /dev/null
@@ -1,26 +0,0 @@ -# Copyright 2016 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//build/buildflag_header.gni") - -# Specifies which language identification model to use: CLD2 or CLD3. -cld_version = 3 - -buildflag_header("cld_version") { - header = "cld_version.h" - flags = [ "CLD_VERSION=$cld_version" ] -} - -group("cld") { - public_deps = [ - ":cld_version", - ] - if (cld_version == 2) { - public_deps += [ "//third_party/cld_2" ] - } else if (cld_version == 3) { - public_deps += [ "//third_party/cld_3/src/src:cld_3" ] - } else { - assert(false, "CLD version should be 2 or 3") - } -}
diff --git a/third_party/cld/LICENSE b/third_party/cld/LICENSE deleted file mode 100644 index c5899b26..0000000 --- a/third_party/cld/LICENSE +++ /dev/null
@@ -1,203 +0,0 @@ -Copyright 2016 Google Inc. All rights reserved. - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2016, Google Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License.
diff --git a/third_party/cld/OWNERS b/third_party/cld/OWNERS deleted file mode 100644 index 99c5de0..0000000 --- a/third_party/cld/OWNERS +++ /dev/null
@@ -1,2 +0,0 @@ -andrewhayden@chromium.org -abakalov@chromium.org \ No newline at end of file
diff --git a/third_party/cld/README.chromium b/third_party/cld/README.chromium deleted file mode 100644 index 3d2e0e81..0000000 --- a/third_party/cld/README.chromium +++ /dev/null
@@ -1,17 +0,0 @@ -Name: Compact Language Detector -Short Name: cld -URL: NA -Version: 0 -License: Apache 2.0 -Security Critical: no - -Description: -The BUILD.gn file in this directory governs which language detector is used. -The options are: -- CLD2 implemented in //third_party/cld_2 -- CLD3 implemented in //third_party/cld_3 - -For more context, see https://bugs.chromium.org/p/webrtc/issues/detail?id=6200 - -Local Modifications: -None.
diff --git a/third_party/cld_2/BUILD.gn b/third_party/cld_2/BUILD.gn deleted file mode 100644 index 24a9e55..0000000 --- a/third_party/cld_2/BUILD.gn +++ /dev/null
@@ -1,124 +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/config/features.gni") - -declare_args() { - if (is_android || is_ios) { - cld2_table_size = 0 # Small, accurate tables - } else { - cld2_table_size = 2 # Larger, more accurate tables - } -} - -config("cld2_data_warnings") { - visibility = [ ":*" ] - if (is_clang) { - # The generated files don't have braces around subobject initializers. - cflags = [ "-Wno-missing-braces" ] - } -} - -static_library("cld2_data") { - sources = [ - "src/internal/cld2_generated_cjk_compatible.cc", - "src/internal/cld2_generated_deltaoctachrome.cc", - "src/internal/cld2_generated_distinctoctachrome.cc", - "src/internal/cld_generated_cjk_delta_bi_4.cc", - "src/internal/cld_generated_cjk_uni_prop_80.cc", - "src/internal/cld_generated_score_quad_octa_2.cc", - "src/internal/generated_distinct_bi_0.cc", - ] - - if (cld2_table_size == 0) { - sources += [ "src/internal/cld2_generated_quadchrome_16.cc" ] - } else if (cld2_table_size == 2) { - sources += [ "src/internal/cld2_generated_quadchrome_2.cc" ] - } - - include_dirs = [ - "src/internal", - "src/public", - ] - - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - - # Must be after no_chromium_code for warning flags to be ordered correctly. - ":cld2_data_warnings", - ] -} - -config("cld2_warnings") { - if (is_clang) { - cflags = [ - # cld_2 contains unused private fields. - # https://code.google.com/p/cld2/issues/detail?id=37 - "-Wno-unused-private-field", - - # offsetmap.cc uses a char as a subscript. - "-Wno-char-subscripts", - ] - } -} - -static_library("cld_2") { - sources = [ - "src/internal/cld2tablesummary.h", - "src/internal/cldutil.cc", - "src/internal/cldutil.h", - "src/internal/cldutil_shared.cc", - "src/internal/cldutil_shared.h", - "src/internal/compact_lang_det.cc", - "src/internal/compact_lang_det_hint_code.cc", - "src/internal/compact_lang_det_hint_code.h", - "src/internal/compact_lang_det_impl.cc", - "src/internal/compact_lang_det_impl.h", - "src/internal/debug.h", - "src/internal/debug_empty.cc", - "src/internal/fixunicodevalue.cc", - "src/internal/fixunicodevalue.h", - "src/internal/generated_entities.cc", - "src/internal/generated_language.cc", - "src/internal/generated_language.h", - "src/internal/generated_ulscript.cc", - "src/internal/generated_ulscript.h", - "src/internal/getonescriptspan.cc", - "src/internal/getonescriptspan.h", - "src/internal/integral_types.h", - "src/internal/lang_script.cc", - "src/internal/lang_script.h", - "src/internal/langspan.h", - "src/internal/offsetmap.cc", - "src/internal/offsetmap.h", - "src/internal/port.h", - "src/internal/scoreonescriptspan.cc", - "src/internal/scoreonescriptspan.h", - "src/internal/stringpiece.h", - "src/internal/tote.cc", - "src/internal/tote.h", - "src/internal/utf8prop_lettermarkscriptnum.h", - "src/internal/utf8repl_lettermarklower.h", - "src/internal/utf8scannot_lettermarkspecial.h", - "src/internal/utf8statetable.cc", - "src/internal/utf8statetable.h", - "src/public/compact_lang_det.h", - "src/public/encodings.h", - ] - - include_dirs = [ - "src/internal", - "src/public", - ] - - public_deps = [ - ":cld2_data", - ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ - "//build/config/compiler:no_chromium_code", - ":cld2_warnings", - ] -}
diff --git a/third_party/cld_2/LICENSE b/third_party/cld_2/LICENSE deleted file mode 100644 index d645695..0000000 --- a/third_party/cld_2/LICENSE +++ /dev/null
@@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License.
diff --git a/third_party/cld_2/OWNERS b/third_party/cld_2/OWNERS deleted file mode 100644 index 2a94ff7..0000000 --- a/third_party/cld_2/OWNERS +++ /dev/null
@@ -1,6 +0,0 @@ -# Primary point of contact for reviews -andrewhayden@chromium.org - -# Previous OWNERS, still willing to do one-off reviews -hajimehoshi@chromium.org -toyoshim@chromium.org
diff --git a/third_party/cld_2/README.chromium b/third_party/cld_2/README.chromium deleted file mode 100644 index 8974968..0000000 --- a/third_party/cld_2/README.chromium +++ /dev/null
@@ -1,65 +0,0 @@ -Name: Compact Language Detection 2 -Short Name: cld_2 -URL: https://github.com/CLD2Owners/cld2 -Version: 0 -License: Apache 2.0 -Security Critical: yes - -Description: -The CLD is used to determine the language of text. In Chromium, this is used -to determine if Chrome should offer Translate UX to the user. - - -Dynamic Mode -============ -Prior to CLD2's trunk@155, Chromium has always built CLD2 statically. The data -needed for CLD2 to perform its language detection has been compiled straight -into the binary. This contributes around 1.5 megabytes to the size of Chrome -and embeds one or more large rodata sections to the executable. - -Starting with CLD2's trunk@r155, there is a new option available: dynamic mode. -In dynamic mode, CLD2 is built without its data; only the code is compiled, and -the data must be supplied at runtime via a file or a pointer to a (presumably -mmap'ed) read-only region of memory. - -Tradeoffs to consider before enabling dynamic mode: - - Pros: - * Reduces the size of the Chromium binary by a bit over a megabyte. - * As the data file rarely changes, it can be updated independently. - * Depending upon the update process on your platform, this may also reduce - the size of Chromium updates. - * It is possible to run Chromium without CLD2 data at all (language - detection will always fail, but fails gracefully). - * Different types of CLD2 data files (larger and more accurate or smaller - and less accurate) can be dynamically downloaded or chosen depending - on runtime choices. - - Cons: - * Data files must be generated and checked into source control by hand. - * At runtime a data file must be opened and its headers parsed before CLD2 - can be used in any given process (this time should be negligible in most - circumstances). This will prevent language detection from working until - a data file has been loaded. - -To enable dynamic mode in CLD2 itself, you must define "CLD2_DYNAMIC_MODE". -In Chromium, this is controlled by the 'cld2_data_source' variable in -../../build/common.gypi. - - -Building a CLD2 Dynamic Mode Data File -====================================== -Note: The cld_2_dynamic_data_tool target is not currently supported on Android. - The binaries that it generates are platform-independent, but to build - the target itself you'll need a desktop environment. - -1. Configure your desired table size by setting the value of "cld2_table_size" - in ../../build/common.gypi. -2. Build the "cld_2_dynamic_data_tool" target. This will generate the tool: - ${BUILD_DIR}/cld_2_dynamic_data_tool -3. Run the tool with "--dump <file>" to generate a data file, e.g.: - ${BUILD_DIR}/cld_2_dynamic_data_tool --dump /tmp/cld2_data.bin -4. (Optional) Verify that the file was correctly written: - ${BUILD_DIR}/cld_2_dynamic_data_tool --verify /tmp/cld2_data.bin - -The data file is suitable for use on all platforms. \ No newline at end of file
diff --git a/third_party/cld_2/crx_gen/manifest.json b/third_party/cld_2/crx_gen/manifest.json deleted file mode 100644 index 4b3a098f..0000000 --- a/third_party/cld_2/crx_gen/manifest.json +++ /dev/null
@@ -1,12 +0,0 @@ -{ - "manifest_version": 2, - "name": "CLD2 Data", - "description": "Compact Language Detector 2 (CLD2) data for Chrome", - "minimum_chrome_version": "36", - "version": "160", - "platforms": [ - { - "sub_package_path": "_platform_specific/all/" - } - ] -} \ No newline at end of file
diff --git a/tools/checklicenses/checklicenses.py b/tools/checklicenses/checklicenses.py index 3c84c26..e4530ec 100755 --- a/tools/checklicenses/checklicenses.py +++ b/tools/checklicenses/checklicenses.py
@@ -657,6 +657,11 @@ 'build/linux/debian_jessie_arm-sysroot/', 'build/linux/debian_jessie_i386-sysroot/', 'build/linux/debian_jessie_mips-sysroot/', + 'build/linux/debian_stretch_arm64-sysroot/', + 'build/linux/debian_stretch_amd64-sysroot/', + 'build/linux/debian_stretch_arm-sysroot/', + 'build/linux/debian_stretch_i386-sysroot/', + 'build/linux/debian_stretch_mips-sysroot/', ]
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 974bf43..386be38 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -1099,19 +1099,19 @@ ], 'chromeos_with_codecs_debug_bot': [ - 'chromeos_with_codecs', 'debug_bot', + 'chromeos_with_codecs', 'debug_bot', 'use_vaapi', ], 'chromeos_with_codecs_debug_trybot': [ - 'chromeos_with_codecs', 'debug_trybot', + 'chromeos_with_codecs', 'debug_trybot', 'use_vaapi', ], 'chromeos_with_codecs_release_bot': [ - 'chromeos_with_codecs', 'release_bot', + 'chromeos_with_codecs', 'release_bot', 'use_vaapi', ], 'chromeos_with_codecs_release_trybot': [ - 'chromeos_with_codecs', 'release_trybot', + 'chromeos_with_codecs', 'release_trybot', 'use_vaapi', ], 'clang_debug_trybot_x86': [ @@ -2146,6 +2146,10 @@ 'gn_args': 'use_lld=true', }, + 'use_vaapi': { + 'gn_args': 'use_vaapi=true', + }, + 'v8_concurrent_marking': { 'gn_args': 'v8_enable_concurrent_marking=true', },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 709f8908..e02075e 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -4720,6 +4720,9 @@ </enum> <enum name="CLD2LanguageCode"> + <obsolete> + Deprecated as of 11/2017, since cld2 is deprecated. + </obsolete> <summary> See Language in third_party/cld_2/src/internal/generated_language.h. </summary>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index faca053..cf8dd9eb 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -87709,6 +87709,9 @@ </histogram> <histogram name="Translate.CLD2.LanguageAccuracy" units="%"> + <obsolete> + Deprecated as of 11/2017, since cld2 is deprecated. + </obsolete> <owner>rkaplow@google.com</owner> <summary> Accuracy of the language detected by CLD2. Only recorded if the detection @@ -87717,6 +87720,9 @@ </histogram> <histogram name="Translate.CLD2.LanguageDetected" enum="CLD2LanguageCode"> + <obsolete> + Deprecated as of 11/2017, since cld2 is deprecated. + </obsolete> <owner>rkaplow@google.com</owner> <summary>Language of page detected by CLD2.</summary> </histogram>
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn index 419bf470..b2798577 100644 --- a/ui/base/BUILD.gn +++ b/ui/base/BUILD.gn
@@ -700,6 +700,7 @@ "//skia", "//testing/gtest", "//ui/base:ui_data_pack", + "//ui/display:test_support", "//ui/events:events_base", "//ui/events:test_support", "//ui/gfx",
diff --git a/ui/base/test/ui_controls.h b/ui/base/test/ui_controls.h index 631d8041..462ffa5d 100644 --- a/ui/base/test/ui_controls.h +++ b/ui/base/test/ui_controls.h
@@ -64,6 +64,9 @@ // Simulate a mouse move. bool SendMouseMove(long screen_x, long screen_y); + +// Returns false on Windows if the desired position is not over a window +// belonging to the current process. bool SendMouseMoveNotifyWhenDone(long screen_x, long screen_y, const base::Closure& task);
diff --git a/ui/base/test/ui_controls_internal_win.cc b/ui/base/test/ui_controls_internal_win.cc index d3f2585..9a5cd2d 100644 --- a/ui/base/test/ui_controls_internal_win.cc +++ b/ui/base/test/ui_controls_internal_win.cc
@@ -12,57 +12,187 @@ #include "base/logging.h" #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/single_thread_task_runner.h" +#include "base/test/test_timeouts.h" +#include "base/threading/thread_checker.h" #include "base/threading/thread_task_runner_handle.h" +#include "ui/display/win/screen_win.h" #include "ui/events/keycodes/keyboard_code_conversion_win.h" #include "ui/events/keycodes/keyboard_codes.h" +#include "ui/gfx/geometry/point.h" namespace { // InputDispatcher ------------------------------------------------------------ -// InputDispatcher is used to listen for a mouse/keyboard event. When the -// appropriate event is received the task is notified. +// InputDispatcher is used to listen for a mouse/keyboard event. Only one +// instance may be alive at a time. The callback is run when the appropriate +// event is received. class InputDispatcher : public base::RefCounted<InputDispatcher> { public: - InputDispatcher(const base::Closure& task, WPARAM message_waiting_for); + // Constructs a dispatcher that will invoke |callback| when |message_type| is + // received. The returned instance does not hold a ref on itself to keep it + // alive while waiting for messages. The caller is responsible for adding one + // ref before returning to the message loop. The instance will release this + // reference when the message is received. + static scoped_refptr<InputDispatcher> CreateForMessage( + WPARAM message_type, + const base::Closure& callback); + + // Constructs a dispatcher that will invoke |callback| when a mouse move + // message has been received. Upon receipt, an error message is logged if the + // destination of the move is not |screen_point|. |callback| is run regardless + // after a sufficiently long delay. This generally happens when another + // process has a window over the test's window, or if |screen_point| is not + // over a window owned by the test. The returned instance does not hold a ref + // on itself to keep it alive while waiting for messages. The caller is + // responsible for adding one ref before returning to the message loop. The + // instance will release this reference when the message is received. + static scoped_refptr<InputDispatcher> CreateForMouseMove( + const gfx::Point& screen_point, + const base::Closure& callback); + + private: + template <typename T, typename... Args> + friend scoped_refptr<T> base::MakeRefCounted(Args&&... args); + friend class base::RefCounted<InputDispatcher>; + + InputDispatcher(WPARAM message_waiting_for, + const gfx::Point& screen_point, + const base::Closure& callback); + ~InputDispatcher(); + + // Installs the dispatcher as the current hook. + void InstallHook(); + + // Uninstalls the hook set in InstallHook. + void UninstallHook(); + + // Callback from hook when a mouse message is received. + static LRESULT CALLBACK MouseHook(int n_code, WPARAM w_param, LPARAM l_param); + + // Callback from hook when a key message is received. + static LRESULT CALLBACK KeyHook(int n_code, WPARAM w_param, LPARAM l_param); // Invoked from the hook. If mouse_message matches message_waiting_for_ // MatchingMessageFound is invoked. void DispatchedMessage(WPARAM mouse_message); // Invoked when a matching event is found. Uninstalls the hook and schedules - // an event that notifies the task. + // an event that runs the callback. void MatchingMessageFound(); - private: - friend class base::RefCounted<InputDispatcher>; + // Invoked when the hook for a mouse move is not called within a reasonable + // time. This likely means that a window from another process is over a test + // window, so the event does not reach this process. + void OnTimeout(); - ~InputDispatcher(); + // The current dispatcher if a hook is installed; otherwise, nullptr; + static InputDispatcher* current_dispatcher_; - // Notifies the task and release this (which should delete it). - void NotifyTask(); + // Return value from SetWindowsHookEx. + static HHOOK next_hook_; - // The task we notify. - base::Closure task_; + THREAD_CHECKER(thread_checker_); - // Message we're waiting for. Not used for keyboard events. + // The callback to run when the desired message is received. + base::Closure callback_; + + // The message on which the instance is waiting -- unsed for WM_KEYUP + // messages. const WPARAM message_waiting_for_; + // The desired mouse position for a mouse move event. + const gfx::Point expected_mouse_location_; + + base::WeakPtrFactory<InputDispatcher> weak_factory_; + DISALLOW_COPY_AND_ASSIGN(InputDispatcher); }; -// Have we installed the hook? -bool installed_hook_ = false; +// static +InputDispatcher* InputDispatcher::current_dispatcher_ = nullptr; -// Return value from SetWindowsHookEx. -HHOOK next_hook_ = NULL; +// static +HHOOK InputDispatcher::next_hook_ = nullptr; -// If a hook is installed, this is the dispatcher. -InputDispatcher* current_dispatcher_ = NULL; +// static +scoped_refptr<InputDispatcher> InputDispatcher::CreateForMessage( + WPARAM message_type, + const base::Closure& callback) { + DCHECK_NE(message_type, static_cast<WPARAM>(WM_MOUSEMOVE)); + return base::MakeRefCounted<InputDispatcher>(message_type, gfx::Point(0, 0), + callback); +} -// Callback from hook when a mouse message is received. -LRESULT CALLBACK MouseHook(int n_code, WPARAM w_param, LPARAM l_param) { +// static +scoped_refptr<InputDispatcher> InputDispatcher::CreateForMouseMove( + const gfx::Point& screen_point, + const base::Closure& callback) { + return base::MakeRefCounted<InputDispatcher>(WM_MOUSEMOVE, screen_point, + callback); +} + +InputDispatcher::InputDispatcher(WPARAM message_waiting_for, + const gfx::Point& screen_point, + const base::Closure& callback) + : callback_(callback), + message_waiting_for_(message_waiting_for), + expected_mouse_location_(screen_point), + weak_factory_(this) { + InstallHook(); +} + +InputDispatcher::~InputDispatcher() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + UninstallHook(); +} + +void InputDispatcher::InstallHook() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + DCHECK(!current_dispatcher_); + + current_dispatcher_ = this; + + int hook_type; + HOOKPROC hook_function; + switch (message_waiting_for_) { + case WM_KEYUP: + hook_type = WH_KEYBOARD; + hook_function = &KeyHook; + break; + default: + // WH_CALLWNDPROCRET does not generate mouse messages for some reason. + hook_type = WH_MOUSE; + hook_function = &MouseHook; + // Things don't go well with mouse events sometimes. Bail out if it takes + // too long. + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, + base::Bind(&InputDispatcher::OnTimeout, weak_factory_.GetWeakPtr()), + TestTimeouts::action_timeout()); + break; + } + next_hook_ = + SetWindowsHookEx(hook_type, hook_function, nullptr, GetCurrentThreadId()); + DCHECK(next_hook_); +} + +void InputDispatcher::UninstallHook() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + if (current_dispatcher_ == this) { + current_dispatcher_ = nullptr; + UnhookWindowsHookEx(next_hook_); + next_hook_ = nullptr; + weak_factory_.InvalidateWeakPtrs(); + } +} + +// static +LRESULT CALLBACK InputDispatcher::MouseHook(int n_code, + WPARAM w_param, + LPARAM l_param) { HHOOK next_hook = next_hook_; if (n_code == HC_ACTION) { DCHECK(current_dispatcher_); @@ -71,8 +201,10 @@ return CallNextHookEx(next_hook, n_code, w_param, l_param); } -// Callback from hook when a key message is received. -LRESULT CALLBACK KeyHook(int n_code, WPARAM w_param, LPARAM l_param) { +// static +LRESULT CALLBACK InputDispatcher::KeyHook(int n_code, + WPARAM w_param, + LPARAM l_param) { HHOOK next_hook = next_hook_; if (n_code == HC_ACTION) { DCHECK(current_dispatcher_); @@ -84,59 +216,38 @@ return CallNextHookEx(next_hook, n_code, w_param, l_param); } -// Installs dispatcher as the current hook. -void InstallHook(InputDispatcher* dispatcher, bool key_hook) { - DCHECK(!installed_hook_); - current_dispatcher_ = dispatcher; - installed_hook_ = true; - if (key_hook) { - next_hook_ = SetWindowsHookEx(WH_KEYBOARD, &KeyHook, NULL, - GetCurrentThreadId()); - } else { - // NOTE: I originally tried WH_CALLWNDPROCRET, but for some reason I - // didn't get a mouse message like I do with MouseHook. - next_hook_ = SetWindowsHookEx(WH_MOUSE, &MouseHook, NULL, - GetCurrentThreadId()); +void InputDispatcher::DispatchedMessage(WPARAM mouse_message) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + if (mouse_message == message_waiting_for_) { + if (mouse_message == WM_MOUSEMOVE) { + // Verify that the mouse ended up at the desired location. + POINT current_pos; + ::GetCursorPos(¤t_pos); + LOG_IF(ERROR, expected_mouse_location_ != gfx::Point(current_pos)) + << "Mouse moved to (" << current_pos.x << ", " << current_pos.y + << ") rather than (" << expected_mouse_location_.x() << ", " + << expected_mouse_location_.y() + << "); check the math in SendMouseMoveImpl."; + } } - DCHECK(next_hook_); -} - -// Uninstalls the hook set in InstallHook. -void UninstallHook(InputDispatcher* dispatcher) { - if (current_dispatcher_ == dispatcher) { - installed_hook_ = false; - current_dispatcher_ = NULL; - UnhookWindowsHookEx(next_hook_); - } -} - -InputDispatcher::InputDispatcher(const base::Closure& task, - WPARAM message_waiting_for) - : task_(task), message_waiting_for_(message_waiting_for) { - InstallHook(this, message_waiting_for == WM_KEYUP); -} - -InputDispatcher::~InputDispatcher() { - // Make sure the hook isn't installed. - UninstallHook(this); -} - -void InputDispatcher::DispatchedMessage(WPARAM message) { - if (message == message_waiting_for_) - MatchingMessageFound(); + MatchingMessageFound(); } void InputDispatcher::MatchingMessageFound() { - UninstallHook(this); - // At the time we're invoked the event has not actually been processed. - // Use PostTask to make sure the event has been processed before notifying. - base::ThreadTaskRunnerHandle::Get()->PostTask( - FROM_HERE, base::Bind(&InputDispatcher::NotifyTask, this)); + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + UninstallHook(); + // The hook proc is invoked before the message is process. Post a task to run + // the callback so that handling of this event completes first. + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, + std::move(callback_)); + Release(); } -void InputDispatcher::NotifyTask() { - task_.Run(); - Release(); +void InputDispatcher::OnTimeout() { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + LOG(ERROR) << "Timed out waiting for mouse move event. The test will now " + "continue, but may fail."; + MatchingMessageFound(); } // Private functions ---------------------------------------------------------- @@ -221,8 +332,9 @@ if (window && ::GetForegroundWindow() != target_window) return false; - scoped_refptr<InputDispatcher> dispatcher( - !task.is_null() ? new InputDispatcher(task, WM_KEYUP) : NULL); + scoped_refptr<InputDispatcher> dispatcher; + if (task) + dispatcher = InputDispatcher::CreateForMessage(WM_KEYUP, task); // If a pop-up menu is open, it won't receive events sent using SendInput. // Check for a pop-up menu using its window class (#32768) and if one @@ -234,7 +346,7 @@ ::SendMessage(popup_menu, WM_KEYDOWN, w_param, l_param); ::SendMessage(popup_menu, WM_KEYUP, w_param, l_param); - if (dispatcher.get()) + if (dispatcher) dispatcher->AddRef(); return true; } @@ -289,7 +401,7 @@ if (::SendInput(i, input, sizeof(INPUT)) != i) return false; - if (dispatcher.get()) + if (dispatcher) dispatcher->AddRef(); return true; @@ -298,19 +410,15 @@ bool SendMouseMoveImpl(long screen_x, long screen_y, const base::Closure& task) { - // First check if the mouse is already there. - POINT current_pos; - ::GetCursorPos(¤t_pos); - if (screen_x == current_pos.x && screen_y == current_pos.y) { - if (task) - base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); - return true; - } + gfx::Point screen_point = + display::win::ScreenWin::DIPToScreenPoint({screen_x, screen_y}); + screen_x = screen_point.x(); + screen_y = screen_point.y(); // Get the max screen coordinate for use in computing the normalized absolute // coordinates required by SendInput. - int max_x = ::GetSystemMetrics(SM_CXSCREEN) - 1; - int max_y = ::GetSystemMetrics(SM_CYSCREEN) - 1; + const int max_x = ::GetSystemMetrics(SM_CXSCREEN) - 1; + const int max_y = ::GetSystemMetrics(SM_CYSCREEN) - 1; // Clamp the inputs. if (screen_x < 0) @@ -322,6 +430,15 @@ else if (screen_y > max_y) screen_y = max_y; + // Check if the mouse is already there. + POINT current_pos; + ::GetCursorPos(¤t_pos); + if (screen_x == current_pos.x && screen_y == current_pos.y) { + if (task) + base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, task); + return true; + } + // Form the input data containing the normalized absolute coordinates. INPUT input = {INPUT_MOUSE}; input.mi.dx = static_cast<LONG>(std::ceil(screen_x * (65535.0 / max_x))); @@ -329,8 +446,10 @@ input.mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; scoped_refptr<InputDispatcher> dispatcher; - if (task) - dispatcher = base::MakeRefCounted<InputDispatcher>(task, WM_MOUSEMOVE); + if (task) { + dispatcher = + InputDispatcher::CreateForMouseMove({screen_x, screen_y}, task); + } if (!::SendInput(1, &input, sizeof(input))) return false; @@ -371,8 +490,9 @@ return false; } - scoped_refptr<InputDispatcher> dispatcher( - !task.is_null() ? new InputDispatcher(task, last_event) : NULL); + scoped_refptr<InputDispatcher> dispatcher; + if (task) + dispatcher = InputDispatcher::CreateForMessage(last_event, task); INPUT input = { 0 }; input.type = INPUT_MOUSE; @@ -384,7 +504,7 @@ if ((state & UP) && !::SendInput(1, &input, sizeof(INPUT))) return false; - if (dispatcher.get()) + if (dispatcher) dispatcher->AddRef(); return true;