diff --git a/AUTHORS b/AUTHORS index 0fff09e..712cbde 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -730,6 +730,7 @@ William Xie <william.xie@intel.com> Xiang Long <xiang.long@intel.com> Xiangze Zhang <xiangze.zhang@intel.com> +Xiaofeng Zhang <xiaofeng.zhang@intel.com> Xiaolei Yu <dreifachstein@gmail.com> Xiaoyin Liu <xiaoyin.l@outlook.com> Xinchao He <hexinchao@gmail.com>
diff --git a/DEPS b/DEPS index 922c0c7..73cbdfd 100644 --- a/DEPS +++ b/DEPS
@@ -64,7 +64,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': '29a9f87a8bcd1b6913bb070c5a1514af41fab3ef', + 'pdfium_revision': '44bc1f818dd791c2a5a81103be3853093fd934b3', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling openmax_dl # and whatever else without interference from each other. @@ -423,7 +423,7 @@ # Graphics buffer allocator for Chrome OS. 'src/third_party/minigbm/src': - Var('chromium_git') + '/chromiumos/platform/minigbm.git' + '@' + '71db2b551d3b189b0266052446aee35152a2eae3', + Var('chromium_git') + '/chromiumos/platform/minigbm.git' + '@' + '682d73bd00595a493bd446c5274bef08bd17c096', # Userspace interface to kernel DRM services. 'src/third_party/libdrm/src':
diff --git a/WATCHLISTS b/WATCHLISTS index efb84a2..d30c6c4 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -1993,7 +1993,8 @@ 'teravest+watch@chromium.org', 'tzik@chromium.org', 'yusukes+watch@chromium.org'], - 'permissions': ['mlamouri+watch-permissions@chromium.org'], + 'permissions': ['mlamouri+watch-permissions@chromium.org', + 'raymes+watch@chromium.org'], 'plugin': ['jam@chromium.org'], 'policy_definitions': ['tnagel+watch@chromium.org'], 'polymer': ['dbeam+watch-polymer@chromium.org',
diff --git a/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt b/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt index 7b8852a..d31b752b 100644 --- a/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt +++ b/android_webview/tools/system_webview_shell/test/data/webexposed/global-interface-listing-expected.txt
@@ -3167,7 +3167,6 @@ getter memory getter navigation getter onresourcetimingbufferfull - getter onwebkitresourcetimingbufferfull getter timing method clearMarks method clearMeasures @@ -3180,10 +3179,7 @@ method measure method now method setResourceTimingBufferSize - method webkitClearResourceTimings - method webkitSetResourceTimingBufferSize setter onresourcetimingbufferfull - setter onwebkitresourcetimingbufferfull interface PerformanceEntry getter duration getter entryType
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 06f3ffc..e09087a 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -42,8 +42,6 @@ "aura/pointer_watcher_adapter.h", "aura/wm_lookup_aura.cc", "aura/wm_lookup_aura.h", - "aura/wm_root_window_controller_aura.cc", - "aura/wm_root_window_controller_aura.h", "aura/wm_shell_aura.cc", "aura/wm_shell_aura.h", "aura/wm_window_aura.cc",
diff --git a/ash/ash_touch_exploration_manager_chromeos.cc b/ash/ash_touch_exploration_manager_chromeos.cc index 94df98ab..a6faf964 100644 --- a/ash/ash_touch_exploration_manager_chromeos.cc +++ b/ash/ash_touch_exploration_manager_chromeos.cc
@@ -4,9 +4,9 @@ #include "ash/ash_touch_exploration_manager_chromeos.h" -#include "ash/aura/wm_root_window_controller_aura.h" #include "ash/common/accessibility_delegate.h" #include "ash/common/system/tray/system_tray_notifier.h" +#include "ash/common/wm_root_window_controller.h" #include "ash/common/wm_shell.h" #include "ash/common/wm_window.h" #include "ash/root_window_controller.h"
diff --git a/ash/aura/wm_lookup_aura.cc b/ash/aura/wm_lookup_aura.cc index b068227..9277235 100644 --- a/ash/aura/wm_lookup_aura.cc +++ b/ash/aura/wm_lookup_aura.cc
@@ -4,11 +4,12 @@ #include "ash/aura/wm_lookup_aura.h" -#include "ash/aura/wm_root_window_controller_aura.h" #include "ash/aura/wm_window_aura.h" #include "ash/common/wm_layout_manager.h" #include "ash/display/window_tree_host_manager.h" +#include "ash/root_window_controller.h" #include "ash/shell.h" +#include "ui/views/widget/widget.h" namespace ash { @@ -22,9 +23,13 @@ WmRootWindowController* WmLookupAura::GetRootWindowControllerWithDisplayId( int64_t id) { - return WmRootWindowControllerAura::Get(Shell::GetInstance() - ->window_tree_host_manager() - ->GetRootWindowForDisplayId(id)); + aura::Window* root_window = Shell::GetInstance() + ->window_tree_host_manager() + ->GetRootWindowForDisplayId(id); + return root_window + ? RootWindowController::ForWindow(root_window) + ->wm_root_window_controller() + : nullptr; } WmWindow* WmLookupAura::GetWindowForWidget(views::Widget* widget) {
diff --git a/ash/aura/wm_root_window_controller_aura.cc b/ash/aura/wm_root_window_controller_aura.cc deleted file mode 100644 index 21964424..0000000 --- a/ash/aura/wm_root_window_controller_aura.cc +++ /dev/null
@@ -1,87 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/aura/wm_root_window_controller_aura.h" - -#include "ash/aura/wm_window_aura.h" -#include "ash/common/shelf/shelf_widget.h" -#include "ash/common/shelf/wm_shelf.h" -#include "ash/display/window_tree_host_manager.h" -#include "ash/root_window_controller.h" -#include "ash/shell.h" -#include "ui/aura/env.h" -#include "ui/aura/window.h" -#include "ui/aura/window_property.h" - -DECLARE_WINDOW_PROPERTY_TYPE(ash::WmRootWindowControllerAura*); - -namespace ash { - -// TODO(sky): it likely makes more sense to hang this off RootWindowSettings. -DEFINE_OWNED_WINDOW_PROPERTY_KEY(ash::WmRootWindowControllerAura, - kWmRootWindowControllerKey, - nullptr); - -WmRootWindowControllerAura::WmRootWindowControllerAura( - RootWindowController* root_window_controller) - : WmRootWindowController( - WmWindowAura::Get(root_window_controller->GetRootWindow())), - root_window_controller_(root_window_controller) { - root_window_controller_->GetRootWindow()->SetProperty( - kWmRootWindowControllerKey, this); -} - -WmRootWindowControllerAura::~WmRootWindowControllerAura() {} - -// static -const WmRootWindowControllerAura* WmRootWindowControllerAura::Get( - const aura::Window* window) { - if (!window) - return nullptr; - - RootWindowController* root_window_controller = - GetRootWindowController(window); - if (!root_window_controller) - return nullptr; - - WmRootWindowControllerAura* wm_root_window_controller = - root_window_controller->GetRootWindow()->GetProperty( - kWmRootWindowControllerKey); - if (wm_root_window_controller) - return wm_root_window_controller; - - DCHECK_EQ(aura::Env::Mode::LOCAL, aura::Env::GetInstance()->mode()); - // WmRootWindowControllerAura is owned by the RootWindowController's window. - return new WmRootWindowControllerAura(root_window_controller); -} - -bool WmRootWindowControllerAura::HasShelf() { - return root_window_controller_->wm_shelf()->shelf_widget() != nullptr; -} - -WmShelf* WmRootWindowControllerAura::GetShelf() { - return root_window_controller_->wm_shelf(); -} - -WmWindow* WmRootWindowControllerAura::GetWindow() { - return WmWindowAura::Get(root_window_controller_->GetRootWindow()); -} - -void WmRootWindowControllerAura::OnInitialWallpaperAnimationStarted() { - root_window_controller_->OnInitialWallpaperAnimationStarted(); - WmRootWindowController::OnInitialWallpaperAnimationStarted(); -} - -void WmRootWindowControllerAura::OnWallpaperAnimationFinished( - views::Widget* widget) { - root_window_controller_->OnWallpaperAnimationFinished(widget); - WmRootWindowController::OnWallpaperAnimationFinished(widget); -} - -bool WmRootWindowControllerAura::ShouldDestroyWindowInCloseChildWindows( - WmWindow* window) { - return WmWindowAura::GetAuraWindow(window)->owned_by_parent(); -} - -} // namespace ash
diff --git a/ash/aura/wm_root_window_controller_aura.h b/ash/aura/wm_root_window_controller_aura.h deleted file mode 100644 index cbeba00..0000000 --- a/ash/aura/wm_root_window_controller_aura.h +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_AURA_WM_ROOT_CONTROLLER_AURA_H_ -#define ASH_AURA_WM_ROOT_CONTROLLER_AURA_H_ - -#include "ash/ash_export.h" -#include "ash/common/wm_root_window_controller.h" -#include "base/macros.h" - -namespace aura { -class Window; -} - -namespace ash { - -class RootWindowController; - -class ASH_EXPORT WmRootWindowControllerAura : public WmRootWindowController { - public: - explicit WmRootWindowControllerAura( - RootWindowController* root_window_controller); - ~WmRootWindowControllerAura() override; - - static WmRootWindowControllerAura* Get(aura::Window* window) { - return const_cast<WmRootWindowControllerAura*>( - Get(const_cast<const aura::Window*>(window))); - } - static const WmRootWindowControllerAura* Get(const aura::Window* window); - - // WmRootWindowController: - bool HasShelf() override; - WmShelf* GetShelf() override; - WmWindow* GetWindow() override; - void OnInitialWallpaperAnimationStarted() override; - void OnWallpaperAnimationFinished(views::Widget* widget) override; - - protected: - // WmRootWindowController: - bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window) override; - - private: - friend class RootWindowController; - - RootWindowController* root_window_controller_; - - DISALLOW_COPY_AND_ASSIGN(WmRootWindowControllerAura); -}; - -} // namespace ash - -#endif // ASH_AURA_WM_ROOT_CONTROLLER_AURA_H_
diff --git a/ash/aura/wm_window_aura.cc b/ash/aura/wm_window_aura.cc index 371b048..0179758 100644 --- a/ash/aura/wm_window_aura.cc +++ b/ash/aura/wm_window_aura.cc
@@ -5,7 +5,6 @@ #include "ash/aura/wm_window_aura.h" #include "ash/aura/aura_layout_manager_adapter.h" -#include "ash/aura/wm_root_window_controller_aura.h" #include "ash/aura/wm_shell_aura.h" #include "ash/common/ash_constants.h" #include "ash/common/shelf/shelf_item_types.h" @@ -15,6 +14,7 @@ #include "ash/common/wm_window_observer.h" #include "ash/common/wm_window_property.h" #include "ash/public/cpp/shell_window_ids.h" +#include "ash/root_window_controller.h" #include "ash/screen_util.h" #include "ash/shell.h" #include "ash/wm/resize_handle_window_targeter.h" @@ -152,7 +152,11 @@ WmRootWindowController* WmWindowAura::GetRootWindowController() { aura::Window* root = window_->GetRootWindow(); - return root ? WmRootWindowControllerAura::Get(root) : nullptr; + if (!root) + return nullptr; + + RootWindowController* rwc = RootWindowController::ForWindow(root); + return rwc ? rwc->wm_root_window_controller() : nullptr; } WmShell* WmWindowAura::GetShell() const {
diff --git a/ash/common/system/tray/tray_popup_utils.cc b/ash/common/system/tray/tray_popup_utils.cc index 20e0db8..2abe1f6 100644 --- a/ash/common/system/tray/tray_popup_utils.cc +++ b/ash/common/system/tray/tray_popup_utils.cc
@@ -270,8 +270,6 @@ (kTrayToggleButtonWidth - toggle_size.width()) / 2; toggle->SetBorder(views::CreateEmptyBorder( gfx::Insets(vertical_padding, horizontal_padding))); - // TODO(varkha): remove this and implement toggle-button specific focus. See - // crbug.com/669124 toggle->SetFocusPainter(CreateFocusPainter()); toggle->SetAccessibleName(l10n_util::GetStringUTF16(accessible_name_id)); return toggle;
diff --git a/ash/common/wm_root_window_controller.cc b/ash/common/wm_root_window_controller.cc index 9063e95..c236c16 100644 --- a/ash/common/wm_root_window_controller.cc +++ b/ash/common/wm_root_window_controller.cc
@@ -27,7 +27,12 @@ #include "ash/common/wm_shell.h" #include "ash/common/wm_window.h" #include "ash/public/cpp/shell_window_ids.h" +#include "ash/root_window_controller.h" +#include "ash/shell.h" #include "base/memory/ptr_util.h" +#include "ui/aura/env.h" +#include "ui/aura/mus/window_mus.h" +#include "ui/aura/mus/window_tree_client.h" #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tree_host.h" @@ -151,7 +156,13 @@ } // namespace -WmRootWindowController::WmRootWindowController(WmWindow* root) : root_(root) {} +WmRootWindowController::WmRootWindowController( + RootWindowController* root_window_controller, + WmWindow* root) + : root_window_controller_(root_window_controller), root_(root) { + DCHECK(root_window_controller_); + DCHECK(root_); +} WmRootWindowController::~WmRootWindowController() { if (animating_wallpaper_widget_controller_.get()) @@ -199,6 +210,14 @@ : nullptr; } +bool WmRootWindowController::HasShelf() { + return GetShelf()->shelf_widget() != nullptr; +} + +WmShelf* WmRootWindowController::GetShelf() { + return root_window_controller_->wm_shelf(); +} + void WmRootWindowController::CreateShelf() { WmShelf* shelf = GetShelf(); if (shelf->IsShelfInitialized()) @@ -237,6 +256,10 @@ return shelf_widget->status_area_widget()->system_tray(); } +WmWindow* WmRootWindowController::GetWindow() { + return root_; +} + WmWindow* WmRootWindowController::GetContainer(int container_id) { return root_->GetChildByShellWindowId(container_id); } @@ -301,10 +324,13 @@ views::MENU_ANCHOR_TOPLEFT, source_type)); } -void WmRootWindowController::OnInitialWallpaperAnimationStarted() {} +void WmRootWindowController::OnInitialWallpaperAnimationStarted() { + root_window_controller_->OnInitialWallpaperAnimationStarted(); +} void WmRootWindowController::OnWallpaperAnimationFinished( views::Widget* widget) { + root_window_controller_->OnWallpaperAnimationFinished(widget); WmShell::Get()->wallpaper_delegate()->OnWallpaperAnimationFinished(); // Only removes old component when wallpaper animation finished. If we // remove the old one before the new wallpaper is done fading in there will @@ -626,6 +652,20 @@ shelf->ShutdownShelf(); } +bool WmRootWindowController::ShouldDestroyWindowInCloseChildWindows( + WmWindow* window) { + if (!WmWindowAura::GetAuraWindow(window)->owned_by_parent()) + return false; + + if (aura::Env::GetInstance()->mode() == aura::Env::Mode::LOCAL) + return true; + + aura::WindowMus* window_mus = + aura::WindowMus::Get(WmWindowAura::GetAuraWindow(window)); + return Shell::window_tree_client()->WasCreatedByThisClient(window_mus) || + Shell::window_tree_client()->IsRoot(window_mus); +} + void WmRootWindowController::OnMenuClosed() { menu_runner_.reset(); menu_model_adapter_.reset();
diff --git a/ash/common/wm_root_window_controller.h b/ash/common/wm_root_window_controller.h index 6ac288a..15e811c 100644 --- a/ash/common/wm_root_window_controller.h +++ b/ash/common/wm_root_window_controller.h
@@ -30,6 +30,7 @@ class AnimatingWallpaperWidgetController; class DockedWindowLayoutManager; class PanelLayoutManager; +class RootWindowController; class SystemModalContainerLayoutManager; class SystemTray; class WallpaperWidgetController; @@ -46,8 +47,9 @@ // Provides state associated with a root of a window hierarchy. class ASH_EXPORT WmRootWindowController { public: - explicit WmRootWindowController(WmWindow* window); - virtual ~WmRootWindowController(); + WmRootWindowController(RootWindowController* root_window_controller, + WmWindow* window); + ~WmRootWindowController(); DockedWindowLayoutManager* docked_window_layout_manager() { return docked_window_layout_manager_; @@ -90,9 +92,9 @@ SystemModalContainerLayoutManager* GetSystemModalLayoutManager( WmWindow* window); - virtual bool HasShelf() = 0; + bool HasShelf(); - virtual WmShelf* GetShelf() = 0; + WmShelf* GetShelf(); // Creates the shelf for this root window and notifies observers. void CreateShelf(); @@ -105,7 +107,7 @@ SystemTray* GetSystemTray(); // Returns the window associated with this WmRootWindowController. - virtual WmWindow* GetWindow() = 0; + WmWindow* GetWindow(); // Gets the WmWindow whose shell window id is |container_id|. WmWindow* GetContainer(int container_id); @@ -135,8 +137,8 @@ // Called when the wallpaper animation has started or finished. // TODO: port remaining classic ash wallpaper functionality here. - virtual void OnInitialWallpaperAnimationStarted(); - virtual void OnWallpaperAnimationFinished(views::Widget* widget); + void OnInitialWallpaperAnimationStarted(); + void OnWallpaperAnimationFinished(views::Widget* widget); // Called when the login status changes after login (such as lock/unlock). // TODO(oshima): Investigate if we can merge this and |OnLoginStateChanged|. @@ -160,14 +162,19 @@ // Called during shutdown to destroy state such as windows and LayoutManagers. void CloseChildWindows(); + private: + friend class RootWindowController; + // Called from CloseChildWindows() to determine if the specified window should // be destroyed. - virtual bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window) = 0; + bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window); - private: // Callback for MenuModelAdapter. void OnMenuClosed(); + // TODO(sky): remove this, needed until merge two classes. + RootWindowController* root_window_controller_; + WmWindow* root_; // LayoutManagers are owned by the window they are installed on.
diff --git a/ash/mus/BUILD.gn b/ash/mus/BUILD.gn index f40d004c..bde44a8 100644 --- a/ash/mus/BUILD.gn +++ b/ash/mus/BUILD.gn
@@ -24,8 +24,6 @@ "bridge/immersive_handler_factory_mus.h", "bridge/wm_lookup_mus.cc", "bridge/wm_lookup_mus.h", - "bridge/wm_root_window_controller_mus.cc", - "bridge/wm_root_window_controller_mus.h", "bridge/wm_shell_mus.cc", "bridge/wm_shell_mus.h", "bridge/wm_window_mus.cc",
diff --git a/ash/mus/bridge/wm_lookup_mus.cc b/ash/mus/bridge/wm_lookup_mus.cc index 4f18f12..8f96d88 100644 --- a/ash/mus/bridge/wm_lookup_mus.cc +++ b/ash/mus/bridge/wm_lookup_mus.cc
@@ -4,9 +4,9 @@ #include "ash/mus/bridge/wm_lookup_mus.h" -#include "ash/mus/bridge/wm_root_window_controller_mus.h" #include "ash/mus/bridge/wm_shell_mus.h" #include "ash/mus/bridge/wm_window_mus.h" +#include "ash/mus/root_window_controller.h" #include "ui/views/widget/widget.h" namespace ash { @@ -23,7 +23,10 @@ WmRootWindowController* WmLookupMus::GetRootWindowControllerWithDisplayId( int64_t id) { - return WmShellMus::Get()->GetRootWindowControllerWithDisplayId(id); + return WmShellMus::Get() + ->GetRootWindowControllerWithDisplayId(id) + ->ash_root_window_controller() + ->wm_root_window_controller(); } WmWindow* WmLookupMus::GetWindowForWidget(views::Widget* widget) {
diff --git a/ash/mus/bridge/wm_root_window_controller_mus.cc b/ash/mus/bridge/wm_root_window_controller_mus.cc deleted file mode 100644 index a5a3279a..0000000 --- a/ash/mus/bridge/wm_root_window_controller_mus.cc +++ /dev/null
@@ -1,95 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/mus/bridge/wm_root_window_controller_mus.h" - -#include "ash/common/shelf/wm_shelf.h" -#include "ash/mus/bridge/wm_shell_mus.h" -#include "ash/mus/bridge/wm_window_mus.h" -#include "ash/mus/root_window_controller.h" -#include "ash/mus/window_manager.h" -#include "ui/aura/mus/window_mus.h" -#include "ui/aura/mus/window_tree_client.h" -#include "ui/aura/window.h" -#include "ui/aura/window_property.h" -#include "ui/display/display.h" - -DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::WmRootWindowControllerMus*); - -namespace { - -DEFINE_LOCAL_WINDOW_PROPERTY_KEY(ash::mus::WmRootWindowControllerMus*, - kWmRootWindowControllerKey, - nullptr); - -} // namespace - -namespace ash { -namespace mus { - -WmRootWindowControllerMus::WmRootWindowControllerMus( - WmShellMus* shell, - RootWindowController* root_window_controller) - : WmRootWindowController(WmWindowMus::Get(root_window_controller->root())), - shell_(shell), - root_window_controller_(root_window_controller) { - shell_->AddRootWindowController(this); - root_window_controller_->root()->SetProperty(kWmRootWindowControllerKey, - this); -} - -WmRootWindowControllerMus::~WmRootWindowControllerMus() { - shell_->RemoveRootWindowController(this); -} - -// static -const WmRootWindowControllerMus* WmRootWindowControllerMus::Get( - const aura::Window* window) { - if (!window) - return nullptr; - - return window->GetRootWindow()->GetProperty(kWmRootWindowControllerKey); -} - -gfx::Point WmRootWindowControllerMus::ConvertPointToScreen( - const WmWindowMus* source, - const gfx::Point& point) const { - gfx::Point point_in_root = - source->ConvertPointToTarget(source->GetRootWindow(), point); - point_in_root += GetDisplay().bounds().OffsetFromOrigin(); - return point_in_root; -} - -const display::Display& WmRootWindowControllerMus::GetDisplay() const { - return root_window_controller_->display(); -} - -void WmRootWindowControllerMus::MoveWindowsTo(WmWindow* dest) { - WmRootWindowController::MoveWindowsTo(dest); -} - -bool WmRootWindowControllerMus::HasShelf() { - return GetShelf() != nullptr; -} - -WmShelf* WmRootWindowControllerMus::GetShelf() { - return root_window_controller_->wm_shelf(); -} - -WmWindow* WmRootWindowControllerMus::GetWindow() { - return WmWindowMus::Get(root_window_controller_->root()); -} - -bool WmRootWindowControllerMus::ShouldDestroyWindowInCloseChildWindows( - WmWindow* window) { - aura::WindowTreeClient* window_tree_client = - root_window_controller_->window_manager()->window_tree_client(); - aura::Window* aura_window = WmWindowMus::GetAuraWindow(window); - aura::WindowMus* window_mus = aura::WindowMus::Get(aura_window); - return window_tree_client->WasCreatedByThisClient(window_mus) || - window_tree_client->IsRoot(window_mus); -} - -} // namespace mus -} // namespace ash
diff --git a/ash/mus/bridge/wm_root_window_controller_mus.h b/ash/mus/bridge/wm_root_window_controller_mus.h deleted file mode 100644 index 8d0b64ee..0000000 --- a/ash/mus/bridge/wm_root_window_controller_mus.h +++ /dev/null
@@ -1,72 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_MUS_BRIDGE_WM_ROOT_WINDOW_CONTROLLER_MUS_H_ -#define ASH_MUS_BRIDGE_WM_ROOT_WINDOW_CONTROLLER_MUS_H_ - -#include "ash/common/wm_root_window_controller.h" -#include "base/macros.h" - -namespace aura { -class Window; -} - -namespace display { -class Display; -} - -namespace ash { -namespace mus { - -class RootWindowController; -class WmShellMus; -class WmWindowMus; - -// WmRootWindowController implementations for mus. -class WmRootWindowControllerMus : public WmRootWindowController { - public: - WmRootWindowControllerMus(WmShellMus* shell, - RootWindowController* root_window_controller); - ~WmRootWindowControllerMus() override; - - static WmRootWindowControllerMus* Get(aura::Window* window) { - return const_cast<WmRootWindowControllerMus*>( - Get(const_cast<const aura::Window*>(window))); - } - static const WmRootWindowControllerMus* Get(const aura::Window* window); - - RootWindowController* root_window_controller() { - return root_window_controller_; - } - - // Screen conversion functions. - gfx::Point ConvertPointToScreen(const WmWindowMus* source, - const gfx::Point& point) const; - - const display::Display& GetDisplay() const; - - // Exposed as public so WindowManager can call it. - void MoveWindowsTo(WmWindow* dest); - - // WmRootWindowController: - bool HasShelf() override; - WmShelf* GetShelf() override; - WmWindow* GetWindow() override; - - private: - friend class RootWindowController; - - // WmRootWindowController: - bool ShouldDestroyWindowInCloseChildWindows(WmWindow* window) override; - - WmShellMus* shell_; - RootWindowController* root_window_controller_; - - DISALLOW_COPY_AND_ASSIGN(WmRootWindowControllerMus); -}; - -} // namespace mus -} // namespace ash - -#endif // ASH_MUS_BRIDGE_WM_ROOT_WINDOW_CONTROLLER_MUS_H_
diff --git a/ash/mus/bridge/wm_shell_mus.cc b/ash/mus/bridge/wm_shell_mus.cc index 52f7b6b..a839b12 100644 --- a/ash/mus/bridge/wm_shell_mus.cc +++ b/ash/mus/bridge/wm_shell_mus.cc
@@ -22,7 +22,6 @@ #include "ash/mus/accelerators/accelerator_controller_delegate_mus.h" #include "ash/mus/accelerators/accelerator_controller_registrar.h" #include "ash/mus/bridge/immersive_handler_factory_mus.h" -#include "ash/mus/bridge/wm_root_window_controller_mus.h" #include "ash/mus/bridge/wm_window_mus.h" #include "ash/mus/bridge/workspace_event_handler_mus.h" #include "ash/mus/drag_window_resizer.h" @@ -165,27 +164,25 @@ return static_cast<WmShellMus*>(WmShell::Get()); } -void WmShellMus::AddRootWindowController( - WmRootWindowControllerMus* controller) { +void WmShellMus::AddRootWindowController(RootWindowController* controller) { root_window_controllers_.push_back(controller); // The first root window will be the initial root for new windows. if (!GetRootWindowForNewWindows()) - set_root_window_for_new_windows(controller->GetWindow()); + set_root_window_for_new_windows(WmWindowMus::Get(controller->root())); } -void WmShellMus::RemoveRootWindowController( - WmRootWindowControllerMus* controller) { +void WmShellMus::RemoveRootWindowController(RootWindowController* controller) { auto iter = std::find(root_window_controllers_.begin(), root_window_controllers_.end(), controller); DCHECK(iter != root_window_controllers_.end()); root_window_controllers_.erase(iter); } -WmRootWindowControllerMus* WmShellMus::GetRootWindowControllerWithDisplayId( +RootWindowController* WmShellMus::GetRootWindowControllerWithDisplayId( int64_t id) { - for (WmRootWindowControllerMus* root_window_controller : + for (RootWindowController* root_window_controller : root_window_controllers_) { - if (root_window_controller->GetDisplay().id() == id) + if (root_window_controller->display().id() == id) return root_window_controller; } NOTREACHED(); @@ -228,11 +225,12 @@ } WmWindow* WmShellMus::GetPrimaryRootWindow() { - return root_window_controllers_[0]->GetWindow(); + return WmWindowMus::Get(root_window_controllers_[0]->root()); } WmWindow* WmShellMus::GetRootWindowForDisplayId(int64_t display_id) { - return GetRootWindowControllerWithDisplayId(display_id)->GetWindow(); + return WmWindowMus::Get( + GetRootWindowControllerWithDisplayId(display_id)->root()); } const display::ManagedDisplayInfo& WmShellMus::GetDisplayInfo( @@ -274,10 +272,10 @@ void WmShellMus::SetDisplayWorkAreaInsets(WmWindow* window, const gfx::Insets& insets) { - WmRootWindowControllerMus* root_window_controller_mus = - static_cast<WmWindowMus*>(window)->GetRootWindowControllerMus(); - root_window_controller_mus->root_window_controller()->SetWorkAreaInests( - insets); + RootWindowController* root_window_controller = + RootWindowController::ForWindow( + static_cast<WmWindowMus*>(window)->aura_window()); + root_window_controller->SetWorkAreaInests(insets); } bool WmShellMus::IsPinned() { @@ -308,7 +306,7 @@ std::vector<WmWindow*> WmShellMus::GetAllRootWindows() { std::vector<WmWindow*> wm_windows(root_window_controllers_.size()); for (size_t i = 0; i < root_window_controllers_.size(); ++i) - wm_windows[i] = root_window_controllers_[i]->GetWindow(); + wm_windows[i] = WmWindowMus::Get(root_window_controllers_[i]->root()); return wm_windows; }
diff --git a/ash/mus/bridge/wm_shell_mus.h b/ash/mus/bridge/wm_shell_mus.h index d7e3cac..4b13ba4 100644 --- a/ash/mus/bridge/wm_shell_mus.h +++ b/ash/mus/bridge/wm_shell_mus.h
@@ -29,8 +29,8 @@ class AcceleratorControllerDelegateMus; class AcceleratorControllerRegistrar; class ImmersiveHandlerFactoryMus; +class RootWindowController; class WindowManager; -class WmRootWindowControllerMus; class WmShellMusTestApi; // WmShell implementation for mus. @@ -44,10 +44,10 @@ static WmShellMus* Get(); - void AddRootWindowController(WmRootWindowControllerMus* controller); - void RemoveRootWindowController(WmRootWindowControllerMus* controller); + void AddRootWindowController(RootWindowController* controller); + void RemoveRootWindowController(RootWindowController* controller); - WmRootWindowControllerMus* GetRootWindowControllerWithDisplayId(int64_t id); + RootWindowController* GetRootWindowControllerWithDisplayId(int64_t id); AcceleratorControllerDelegateMus* accelerator_controller_delegate() { return accelerator_controller_delegate_.get(); @@ -125,7 +125,7 @@ views::PointerWatcherEventRouter* pointer_watcher_event_router_; - std::vector<WmRootWindowControllerMus*> root_window_controllers_; + std::vector<RootWindowController*> root_window_controllers_; std::unique_ptr<AcceleratorControllerDelegateMus> accelerator_controller_delegate_;
diff --git a/ash/mus/bridge/wm_window_mus.cc b/ash/mus/bridge/wm_window_mus.cc index 3e58848..289ed40 100644 --- a/ash/mus/bridge/wm_window_mus.cc +++ b/ash/mus/bridge/wm_window_mus.cc
@@ -13,9 +13,9 @@ #include "ash/common/wm_transient_window_observer.h" #include "ash/common/wm_window_observer.h" #include "ash/common/wm_window_property.h" -#include "ash/mus/bridge/wm_root_window_controller_mus.h" #include "ash/mus/bridge/wm_shell_mus.h" #include "ash/mus/property_util.h" +#include "ash/mus/root_window_controller.h" #include "ash/mus/window_manager.h" #include "ash/public/cpp/shell_window_ids.h" #include "ash/wm/window_properties.h" @@ -57,19 +57,10 @@ return WmWindowMus::Get(widget->GetNativeView()); } -const WmRootWindowControllerMus* WmWindowMus::GetRootWindowControllerMus() - const { - return WmRootWindowControllerMus::Get(aura_window()->GetRootWindow()); -} - bool WmWindowMus::IsContainer() const { return GetShellWindowId() != kShellWindowId_Invalid; } -WmRootWindowController* WmWindowMus::GetRootWindowController() { - return GetRootWindowControllerMus(); -} - WmShell* WmWindowMus::GetShell() const { return WmShellMus::Get(); }
diff --git a/ash/mus/bridge/wm_window_mus.h b/ash/mus/bridge/wm_window_mus.h index f4c8fcd..5483094 100644 --- a/ash/mus/bridge/wm_window_mus.h +++ b/ash/mus/bridge/wm_window_mus.h
@@ -21,8 +21,6 @@ namespace ash { namespace mus { -class WmRootWindowControllerMus; - // WmWindow implementation for mus. // // WmWindowMus is tied to the life of the underlying aura::Window (it is stored @@ -43,12 +41,6 @@ static WmWindowMus* Get(views::Widget* widget); - WmRootWindowControllerMus* GetRootWindowControllerMus() { - return const_cast<WmRootWindowControllerMus*>( - const_cast<const WmWindowMus*>(this)->GetRootWindowControllerMus()); - } - const WmRootWindowControllerMus* GetRootWindowControllerMus() const; - static WmWindowMus* AsWmWindowMus(WmWindow* window) { return static_cast<WmWindowMus*>(window); } @@ -60,7 +52,6 @@ bool IsContainer() const; // WmWindow: - WmRootWindowController* GetRootWindowController() override; WmShell* GetShell() const override; void CloseWidget() override; void AddLimitedPreTargetHandler(ui::EventHandler* handler) override;
diff --git a/ash/mus/root_window_controller.cc b/ash/mus/root_window_controller.cc index 337cf849..438e0cd 100644 --- a/ash/mus/root_window_controller.cc +++ b/ash/mus/root_window_controller.cc
@@ -19,7 +19,6 @@ #include "ash/common/wm/dock/docked_window_layout_manager.h" #include "ash/common/wm/panels/panel_layout_manager.h" #include "ash/common/wm/root_window_layout_manager.h" -#include "ash/mus/bridge/wm_root_window_controller_mus.h" #include "ash/mus/bridge/wm_shell_mus.h" #include "ash/mus/bridge/wm_window_mus.h" #include "ash/mus/non_client_frame_controller.h" @@ -27,7 +26,7 @@ #include "ash/mus/screen_mus.h" #include "ash/mus/window_manager.h" #include "ash/public/cpp/shell_window_ids.h" -#include "ash/wm/stacking_controller.h" +#include "ash/root_window_settings.h" #include "base/bind.h" #include "base/command_line.h" #include "base/memory/ptr_util.h" @@ -41,13 +40,20 @@ #include "ui/aura/mus/window_tree_client.h" #include "ui/aura/mus/window_tree_host_mus.h" #include "ui/aura/window.h" +#include "ui/aura/window_property.h" #include "ui/base/ui_base_types.h" #include "ui/display/display_list.h" +DECLARE_WINDOW_PROPERTY_TYPE(ash::mus::RootWindowController*); + namespace ash { namespace mus { namespace { +DEFINE_LOCAL_WINDOW_PROPERTY_KEY(ash::mus::RootWindowController*, + kRootWindowControllerKey, + nullptr); + bool IsFullscreen(aura::PropertyConverter* property_converter, const std::vector<uint8_t>& transport_data) { using ui::mojom::WindowManager; @@ -63,26 +69,21 @@ RootWindowController::RootWindowController( WindowManager* window_manager, std::unique_ptr<aura::WindowTreeHostMus> window_tree_host, - const display::Display& display) + const display::Display& display, + ash::RootWindowController::RootWindowType root_window_type) : window_manager_(window_manager), - window_tree_host_(std::move(window_tree_host)), + window_tree_host_(window_tree_host.get()), window_count_(0), - display_(display), - wm_shelf_(base::MakeUnique<WmShelf>()) { - wm_root_window_controller_ = base::MakeUnique<WmRootWindowControllerMus>( - window_manager_->shell(), this); - wm_root_window_controller_->CreateContainers(); - wm_root_window_controller_->CreateLayoutManagers(); - - parenting_client_ = base::MakeUnique<StackingController>(); - aura::client::SetWindowParentingClient(root(), parenting_client_.get()); + display_(display) { + ash::InitRootWindowSettings(window_tree_host->window()); + window_tree_host->window()->SetProperty(kRootWindowControllerKey, this); + WmShellMus::Get()->AddRootWindowController(this); + ash_root_window_controller_ = base::WrapUnique( + new ash::RootWindowController(nullptr, window_tree_host.release())); + ash_root_window_controller_->Init(root_window_type); disconnected_app_handler_.reset(new DisconnectedAppHandler(root())); - // Force a layout of the root, and its children, RootWindowLayout handles - // both. - wm_root_window_controller_->root_window_layout_manager()->OnWindowResized(); - for (size_t i = 0; i < kNumActivatableShellWindowIds; ++i) { window_manager_->window_manager_client()->AddActivationParent( GetWindowByShellWindowId(kActivatableShellWindowIds[i])->aura_window()); @@ -91,16 +92,18 @@ RootWindowController::~RootWindowController() { Shutdown(); - // Destroy WindowTreeHost last as it owns the root Window. - wm_shelf_.reset(); - wm_root_window_controller_.reset(); - window_tree_host_.reset(); + ash_root_window_controller_.reset(); + WmShellMus::Get()->RemoveRootWindowController(this); +} + +// static +RootWindowController* RootWindowController::ForWindow(aura::Window* window) { + return window->GetRootWindow()->GetProperty(kRootWindowControllerKey); } void RootWindowController::Shutdown() { // NOTE: Shutdown() may be called multiple times. - wm_root_window_controller_->ResetRootForNewWindowsIfNecessary(); - wm_root_window_controller_->CloseChildWindows(); + ash_root_window_controller_->Shutdown(); } service_manager::Connector* RootWindowController::GetConnector() { @@ -160,7 +163,8 @@ } else { WmWindowMus* root = WmWindowMus::Get(this->root()); gfx::Point origin = - wm_root_window_controller_->ConvertPointToScreen(root, gfx::Point()); + root->ConvertPointToTarget(root->GetRootWindow(), gfx::Point()); + origin += display_.bounds().OffsetFromOrigin(); gfx::Rect bounds_in_screen(origin, bounds.size()); static_cast<WmWindowMus*>( ash::wm::GetDefaultParent(WmWindowMus::Get(context), @@ -187,9 +191,10 @@ // Push new display insets to service:ui if we have a connection. auto* display_controller = window_manager_->GetDisplayController(); - if (display_controller) + if (display_controller) { display_controller->SetDisplayWorkArea(display_.id(), display_.bounds().size(), insets); + } } void RootWindowController::SetDisplay(const display::Display& display) {
diff --git a/ash/mus/root_window_controller.h b/ash/mus/root_window_controller.h index d4c5532..206b0dc 100644 --- a/ash/mus/root_window_controller.h +++ b/ash/mus/root_window_controller.h
@@ -8,14 +8,12 @@ #include <memory> #include "ash/mus/disconnected_app_handler.h" +#include "ash/root_window_controller.h" #include "services/ui/public/interfaces/window_manager_constants.mojom.h" #include "ui/display/display.h" namespace aura { class WindowTreeHostMus; -namespace client { -class WindowParentingClient; -} } namespace gfx { @@ -27,13 +25,9 @@ } namespace ash { - -class WmShelf; - namespace mus { class WindowManager; -class WmRootWindowControllerMus; class WmTestBase; class WmTestHelper; class WmWindowMus; @@ -41,23 +35,26 @@ // RootWindowController manages the windows and state for a single display. // RootWindowController takes ownership of the WindowTreeHostMus that it passed // to it. +// TODO(sky): rename this (or possibly just remove entirely). +// http://crbug.com/671246 class RootWindowController { public: RootWindowController( WindowManager* window_manager, std::unique_ptr<aura::WindowTreeHostMus> window_tree_host, - const display::Display& display); + const display::Display& display, + ash::RootWindowController::RootWindowType root_window_type); ~RootWindowController(); + // Returns the RootWindowController for |window|'s root. + static RootWindowController* ForWindow(aura::Window* window); + void Shutdown(); service_manager::Connector* GetConnector(); aura::Window* root(); const aura::Window* root() const; - WmRootWindowControllerMus* wm_root_window_controller() { - return wm_root_window_controller_.get(); - } aura::Window* NewTopLevelWindow( ui::mojom::WindowType window_type, @@ -70,13 +67,13 @@ WindowManager* window_manager() { return window_manager_; } - aura::WindowTreeHostMus* window_tree_host() { - return window_tree_host_.get(); - } + aura::WindowTreeHostMus* window_tree_host() { return window_tree_host_; } const display::Display& display() const { return display_; } - WmShelf* wm_shelf() { return wm_shelf_.get(); } + ash::RootWindowController* ash_root_window_controller() { + return ash_root_window_controller_.get(); + } private: friend class WmTestBase; @@ -88,16 +85,13 @@ gfx::Rect GetMaximizedWindowBounds() const; WindowManager* window_manager_; - std::unique_ptr<aura::WindowTreeHostMus> window_tree_host_; + std::unique_ptr<ash::RootWindowController> ash_root_window_controller_; + // Owned by |ash_root_window_controller_|. + aura::WindowTreeHostMus* window_tree_host_; int window_count_ = 0; display::Display display_; - std::unique_ptr<WmRootWindowControllerMus> wm_root_window_controller_; - std::unique_ptr<WmShelf> wm_shelf_; - - std::unique_ptr<aura::client::WindowParentingClient> parenting_client_; - std::unique_ptr<DisconnectedAppHandler> disconnected_app_handler_; DISALLOW_COPY_AND_ASSIGN(RootWindowController);
diff --git a/ash/mus/window_manager.cc b/ash/mus/window_manager.cc index 59464880..ac91f77 100644 --- a/ash/mus/window_manager.cc +++ b/ash/mus/window_manager.cc
@@ -10,11 +10,11 @@ #include "ash/common/wm/container_finder.h" #include "ash/common/wm/window_state.h" +#include "ash/common/wm_root_window_controller.h" #include "ash/display/screen_position_controller.h" #include "ash/mus/accelerators/accelerator_handler.h" #include "ash/mus/accelerators/accelerator_ids.h" #include "ash/mus/bridge/wm_lookup_mus.h" -#include "ash/mus/bridge/wm_root_window_controller_mus.h" #include "ash/mus/bridge/wm_shell_mus.h" #include "ash/mus/bridge/wm_window_mus.h" #include "ash/mus/move_event_handler.h" @@ -27,6 +27,7 @@ #include "ash/mus/window_manager_observer.h" #include "ash/mus/window_properties.h" #include "ash/public/cpp/shell_window_ids.h" +#include "ash/shell.h" #include "ash/wm/ash_focus_rules.h" #include "ash/wm/event_client_impl.h" #include "ash/wm/window_properties.h" @@ -95,6 +96,7 @@ WindowManager::~WindowManager() { Shutdown(); aura::Env::GetInstance()->RemoveObserver(this); + ash::Shell::set_window_tree_client(nullptr); } void WindowManager::Init( @@ -104,6 +106,9 @@ DCHECK(!window_tree_client_); window_tree_client_ = std::move(window_tree_client); + DCHECK_EQ(nullptr, ash::Shell::window_tree_client()); + ash::Shell::set_window_tree_client(window_tree_client_.get()); + aura::Env::GetInstance()->AddObserver(this); // |connector_| will be null in some tests. @@ -204,10 +209,10 @@ RootWindowController* WindowManager::CreateRootWindowController( std::unique_ptr<aura::WindowTreeHostMus> window_tree_host, - const display::Display& display) { - // TODO(sky): this is temporary, should use RootWindowController directly. - aura::client::SetCaptureClient(window_tree_host->window(), - wm_state_->capture_controller()); + const display::Display& display, + ash::RootWindowController::RootWindowType root_window_type) { + // TODO(sky): all of these calls to SetFooClient() are done in + // Shell::InitRootWindow(). When Shell is used these can be removed. aura::client::SetFocusClient(window_tree_host->window(), focus_controller_.get()); aura::client::SetActivationClient(window_tree_host->window(), @@ -217,13 +222,16 @@ screen_position_controller_.get()); std::unique_ptr<RootWindowController> root_window_controller_ptr( - new RootWindowController(this, std::move(window_tree_host), display)); + new RootWindowController(this, std::move(window_tree_host), display, + root_window_type)); RootWindowController* root_window_controller = root_window_controller_ptr.get(); root_window_controllers_.insert(std::move(root_window_controller_ptr)); // TODO: this should be called when logged in. See http://crbug.com/654606. - root_window_controller->wm_root_window_controller()->CreateShelf(); + root_window_controller->ash_root_window_controller() + ->wm_root_window_controller() + ->CreateShelf(); for (auto& observer : observers_) observer.OnRootWindowControllerAdded(root_window_controller); @@ -238,8 +246,8 @@ RootWindowController* root_window_controller) { if (root_window_controllers_.size() > 1) { DCHECK_NE(root_window_controller, GetPrimaryRootWindowController()); - root_window_controller->wm_root_window_controller()->MoveWindowsTo( - WmWindowMus::Get(GetPrimaryRootWindowController()->root())); + root_window_controller->ash_root_window_controller()->MoveWindowsTo( + GetPrimaryRootWindowController()->root()); } root_window_controller->Shutdown(); @@ -303,9 +311,10 @@ } RootWindowController* WindowManager::GetPrimaryRootWindowController() { - return static_cast<WmRootWindowControllerMus*>( - WmShell::Get()->GetPrimaryRootWindowController()) - ->root_window_controller(); + return RootWindowController::ForWindow( + static_cast<WmWindowMus*>( + WmShell::Get()->GetPrimaryRootWindowController()->GetWindow()) + ->aura_window()); } RootWindowController* @@ -318,11 +327,9 @@ return root_window_controller_ptr.get(); } - return static_cast<WmRootWindowControllerMus*>( - WmShellMus::Get() - ->GetRootWindowForNewWindows() - ->GetRootWindowController()) - ->root_window_controller(); + return RootWindowController::ForWindow( + static_cast<WmWindowMus*>(WmShellMus::Get()->GetRootWindowForNewWindows()) + ->aura_window()); } void WindowManager::OnEmbed( @@ -427,7 +434,12 @@ void WindowManager::OnWmNewDisplay( std::unique_ptr<aura::WindowTreeHostMus> window_tree_host, const display::Display& display) { - CreateRootWindowController(std::move(window_tree_host), display); + ash::RootWindowController::RootWindowType root_window_type = + screen_->display_list().displays().size() == 1 + ? ash::RootWindowController::RootWindowType::PRIMARY + : ash::RootWindowController::RootWindowType::SECONDARY; + CreateRootWindowController(std::move(window_tree_host), display, + root_window_type); } void WindowManager::OnWmDisplayRemoved(
diff --git a/ash/mus/window_manager.h b/ash/mus/window_manager.h index 60422783..6523a33 100644 --- a/ash/mus/window_manager.h +++ b/ash/mus/window_manager.h
@@ -10,6 +10,7 @@ #include <memory> #include <set> +#include "ash/root_window_controller.h" #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/observer_list.h" @@ -127,7 +128,8 @@ RootWindowController* CreateRootWindowController( std::unique_ptr<aura::WindowTreeHostMus> window_tree_host, - const display::Display& display); + const display::Display& display, + ash::RootWindowController::RootWindowType root_window_type); // Deletes the specified RootWindowController. Called when a display is // removed.
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc index d31636cd..b8e46a33 100644 --- a/ash/root_window_controller.cc +++ b/ash/root_window_controller.cc
@@ -9,7 +9,6 @@ #include "ash/ash_touch_exploration_manager_chromeos.h" #include "ash/aura/aura_layout_manager_adapter.h" -#include "ash/aura/wm_root_window_controller_aura.h" #include "ash/aura/wm_window_aura.h" #include "ash/common/ash_constants.h" #include "ash/common/ash_switches.h" @@ -37,6 +36,7 @@ #include "ash/common/wm/window_state.h" #include "ash/common/wm/workspace/workspace_layout_manager.h" #include "ash/common/wm/workspace_controller.h" +#include "ash/common/wm_root_window_controller.h" #include "ash/common/wm_shell.h" #include "ash/common/wm_window.h" #include "ash/high_contrast/high_contrast_controller.h" @@ -139,20 +139,31 @@ } // namespace +RootWindowController::~RootWindowController() { + Shutdown(); + ash_host_.reset(); + mus_window_tree_host_.reset(); + // The CaptureClient needs to be around for as long as the RootWindow is + // valid. + capture_client_.reset(); +} + void RootWindowController::CreateForPrimaryDisplay(AshWindowTreeHost* host) { - RootWindowController* controller = new RootWindowController(host); - controller->Init(RootWindowController::PRIMARY); + RootWindowController* controller = new RootWindowController(host, nullptr); + controller->Init(RootWindowType::PRIMARY); } void RootWindowController::CreateForSecondaryDisplay(AshWindowTreeHost* host) { - RootWindowController* controller = new RootWindowController(host); - controller->Init(RootWindowController::SECONDARY); + RootWindowController* controller = new RootWindowController(host, nullptr); + controller->Init(RootWindowType::SECONDARY); } // static RootWindowController* RootWindowController::ForWindow( const aura::Window* window) { - CHECK(Shell::HasInstance()); + DCHECK(window); + CHECK(WmShell::HasInstance() && + (WmShell::Get()->IsRunningInMash() || Shell::HasInstance())); return GetRootWindowController(window->GetRootWindow()); } @@ -162,20 +173,12 @@ return GetRootWindowController(Shell::GetTargetRootWindow()); } -RootWindowController::~RootWindowController() { - Shutdown(); - ash_host_.reset(); - // The CaptureClient needs to be around for as long as the RootWindow is - // valid. - capture_client_.reset(); -} - aura::WindowTreeHost* RootWindowController::GetHost() { - return ash_host_->AsWindowTreeHost(); + return window_tree_host_; } const aura::WindowTreeHost* RootWindowController::GetHost() const { - return ash_host_->AsWindowTreeHost(); + return window_tree_host_; } aura::Window* RootWindowController::GetRootWindow() { @@ -203,7 +206,8 @@ // Forget with the display ID so that display lookup // ends up with invalid display. GetRootWindowSettings(root_window)->display_id = display::kInvalidDisplayId; - ash_host_->PrepareForShutdown(); + if (ash_host_) + ash_host_->PrepareForShutdown(); system_wallpaper_.reset(); aura::client::SetScreenPositionClient(root_window, NULL); @@ -259,7 +263,7 @@ } const aura::Window* RootWindowController::GetContainer(int container_id) const { - return ash_host_->AsWindowTreeHost()->window()->GetChildById(container_id); + return window_tree_host_->window()->GetChildById(container_id); } void RootWindowController::OnInitialWallpaperAnimationStarted() { @@ -389,16 +393,23 @@ //////////////////////////////////////////////////////////////////////////////// // RootWindowController, private: -RootWindowController::RootWindowController(AshWindowTreeHost* ash_host) +RootWindowController::RootWindowController( + AshWindowTreeHost* ash_host, + aura::WindowTreeHost* window_tree_host) : ash_host_(ash_host), + mus_window_tree_host_(window_tree_host), + window_tree_host_(ash_host ? ash_host->AsWindowTreeHost() + : window_tree_host), wm_shelf_(base::MakeUnique<WmShelf>()), touch_hud_debug_(NULL), touch_hud_projection_(NULL) { + DCHECK((ash_host && !window_tree_host) || (!ash_host && window_tree_host)); aura::Window* root_window = GetRootWindow(); GetRootWindowSettings(root_window)->controller = this; // Has to happen after this is set as |controller| of RootWindowSettings. - wm_root_window_controller_ = WmRootWindowControllerAura::Get(root_window); + wm_root_window_controller_ = base::MakeUnique<WmRootWindowController>( + this, WmWindowAura::Get(root_window)); stacking_controller_.reset(new StackingController); aura::client::SetWindowParentingClient(root_window, @@ -408,8 +419,12 @@ void RootWindowController::Init(RootWindowType root_window_type) { aura::Window* root_window = GetRootWindow(); - Shell* shell = Shell::GetInstance(); - shell->InitRootWindow(root_window); + WmShell* wm_shell = WmShell::Get(); + Shell* shell = nullptr; + if (!wm_shell->IsRunningInMash()) { + shell = Shell::GetInstance(); + shell->InitRootWindow(root_window); + } wm_root_window_controller_->CreateContainers(); @@ -418,32 +433,36 @@ InitLayoutManagers(); InitTouchHuds(); - if (WmShell::Get() - ->GetPrimaryRootWindowController() + if (wm_shell->GetPrimaryRootWindowController() ->GetSystemModalLayoutManager(nullptr) ->has_window_dimmer()) { wm_root_window_controller_->GetSystemModalLayoutManager(nullptr) ->CreateModalBackground(); } - WmShell::Get()->AddShellObserver(this); + wm_shell->AddShellObserver(this); wm_root_window_controller_->root_window_layout_manager()->OnWindowResized(); - if (root_window_type == PRIMARY) { - shell->InitKeyboard(); + if (root_window_type == RootWindowType::PRIMARY) { + if (!wm_shell->IsRunningInMash()) + shell->InitKeyboard(); } else { - ash_host_->AsWindowTreeHost()->Show(); + window_tree_host_->Show(); // Create a shelf if a user is already logged in. - if (WmShell::Get()->GetSessionStateDelegate()->NumberOfLoggedInUsers()) + if (wm_shell->GetSessionStateDelegate()->NumberOfLoggedInUsers()) wm_root_window_controller_->CreateShelf(); // Notify shell observers about new root window. - shell->OnRootWindowAdded(WmWindowAura::Get(root_window)); + if (!wm_shell->IsRunningInMash()) + shell->OnRootWindowAdded(WmWindowAura::Get(root_window)); } + // TODO: AshTouchExplorationManager doesn't work with mus. + // http://crbug.com/679782 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kAshDisableTouchExplorationMode)) { + switches::kAshDisableTouchExplorationMode) && + !wm_shell->IsRunningInMash()) { touch_exploration_manager_.reset(new AshTouchExplorationManager(this)); } } @@ -483,6 +502,9 @@ } void RootWindowController::InitTouchHuds() { + if (WmShell::Get()->IsRunningInMash()) + return; + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kAshTouchHud)) set_touch_hud_debug(new TouchHudDebug(GetRootWindow())); @@ -497,7 +519,7 @@ // secondary monitor (either connected at boot or connected later) or if the // browser restarted for a second login then don't use the boot color. const bool is_boot_splash_screen = - root_window_type == PRIMARY && + root_window_type == RootWindowType::PRIMARY && base::CommandLine::ForCurrentProcess()->HasSwitch( chromeos::switches::kFirstExecAfterBoot); if (is_boot_splash_screen)
diff --git a/ash/root_window_controller.h b/ash/root_window_controller.h index 1fe197d..eb59b134 100644 --- a/ash/root_window_controller.h +++ b/ash/root_window_controller.h
@@ -29,6 +29,7 @@ namespace ui { class EventHandler; +class WindowTreeHost; } namespace views { @@ -53,10 +54,14 @@ class SystemWallpaperController; class TouchHudDebug; class TouchHudProjection; -class WmRootWindowControllerAura; +class WmRootWindowController; class WmShelf; class WorkspaceController; +namespace mus { +class RootWindowController; +} + // This class maintains the per root window state for ash. This class // owns the root window and other dependent objects that should be // deleted upon the deletion of the root window. This object is @@ -64,12 +69,15 @@ // The RootWindowController for particular root window is stored in // its property (RootWindowSettings) and can be obtained using // |GetRootWindowController(aura::WindowEventDispatcher*)| function. -// -// NOTE: In classic ash there is one RootWindow per display, so every RootWindow -// has a RootWindowController. In mus/mash there is one RootWindow per top-level -// Widget, so not all RootWindows have a RootWindowController. class ASH_EXPORT RootWindowController : public ShellObserver { public: + // Enumerates the type of display. If there is only a single display then + // it is primary. In a multi-display environment one monitor is deemed the + // PRIMARY and all others SECONDARY. + enum class RootWindowType { PRIMARY, SECONDARY }; + + ~RootWindowController() override; + // Creates and Initialize the RootWindowController for primary display. static void CreateForPrimaryDisplay(AshWindowTreeHost* host); @@ -82,8 +90,8 @@ // Returns the RootWindowController of the target root window. static RootWindowController* ForTargetRootWindow(); - ~RootWindowController() override; - + // TODO(sky): move these to a separate class or use AshWindowTreeHost in + // mash. http://crbug.com/671246. AshWindowTreeHost* ash_host() { return ash_host_.get(); } const AshWindowTreeHost* ash_host() const { return ash_host_.get(); } @@ -96,8 +104,8 @@ WmShelf* wm_shelf() const { return wm_shelf_.get(); } - WmRootWindowControllerAura* wm_root_window_controller() { - return wm_root_window_controller_; + WmRootWindowController* wm_root_window_controller() { + return wm_root_window_controller_.get(); } // Get touch HUDs associated with this root window controller. @@ -180,8 +188,16 @@ void SetTouchAccessibilityAnchorPoint(const gfx::Point& anchor_point); private: - explicit RootWindowController(AshWindowTreeHost* host); - enum RootWindowType { PRIMARY, SECONDARY }; + // TODO(sky): remove this. Temporary during ash-mus unification. + // http://crbug.com/671246. + friend class mus::RootWindowController; + + // Creates a new RootWindowController with the specified host. Only one of + // |ash_host| or |window_tree_host| should be specified. This takes ownership + // of the supplied arguments. + // TODO(sky): mash should create AshWindowTreeHost, http://crbug.com/671246. + RootWindowController(AshWindowTreeHost* ash_host, + aura::WindowTreeHost* window_tree_host); // Initializes the RootWindowController based on |root_window_type|. void Init(RootWindowType root_window_type); @@ -207,9 +223,11 @@ void OnTouchHudProjectionToggled(bool enabled) override; std::unique_ptr<AshWindowTreeHost> ash_host_; + std::unique_ptr<aura::WindowTreeHost> mus_window_tree_host_; + // This comes from |ash_host_| or |mus_window_tree_host_|. + aura::WindowTreeHost* window_tree_host_; - // Owned by the root window. - WmRootWindowControllerAura* wm_root_window_controller_ = nullptr; + std::unique_ptr<WmRootWindowController> wm_root_window_controller_; std::unique_ptr<StackingController> stacking_controller_;
diff --git a/ash/shell.cc b/ash/shell.cc index 4c3106f4..6b60772 100644 --- a/ash/shell.cc +++ b/ash/shell.cc
@@ -173,6 +173,8 @@ // static Shell* Shell::instance_ = nullptr; // static +aura::WindowTreeClient* Shell::window_tree_client_ = nullptr; +// static bool Shell::initially_hide_cursor_ = false; ////////////////////////////////////////////////////////////////////////////////
diff --git a/ash/shell.h b/ash/shell.h index 86d2677f..723d969 100644 --- a/ash/shell.h +++ b/ash/shell.h
@@ -26,6 +26,7 @@ namespace aura { class RootWindow; class Window; +class WindowTreeClient; namespace client { class ActivationClient; class FocusClient; @@ -184,6 +185,15 @@ static const aura::Window* GetContainer(const aura::Window* root_window, int container_id); + // TODO(sky): better isolate this. + static void set_window_tree_client(aura::WindowTreeClient* client) { + window_tree_client_ = client; + } + + static aura::WindowTreeClient* window_tree_client() { + return window_tree_client_; + } + // Creates a default views::NonClientFrameView for use by windows in the // Ash environment. views::NonClientFrameView* CreateDefaultNonClientFrameView( @@ -414,6 +424,9 @@ static Shell* instance_; + // Only valid in mash, for classic ash this is null. + static aura::WindowTreeClient* window_tree_client_; + // If set before the Shell is initialized, the mouse cursor will be hidden // when the screen is initially created. static bool initially_hide_cursor_;
diff --git a/ash/wm/always_on_top_controller_unittest.cc b/ash/wm/always_on_top_controller_unittest.cc index 85d9e31..58cdcaa2 100644 --- a/ash/wm/always_on_top_controller_unittest.cc +++ b/ash/wm/always_on_top_controller_unittest.cc
@@ -4,9 +4,9 @@ #include "ash/common/wm/always_on_top_controller.h" -#include "ash/aura/wm_root_window_controller_aura.h" #include "ash/aura/wm_window_aura.h" #include "ash/common/wm/workspace/workspace_layout_manager.h" +#include "ash/common/wm_root_window_controller.h" #include "ash/public/cpp/shell_window_ids.h" #include "ash/root_window_controller.h" #include "ash/shell.h"
diff --git a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java index 5286a07..3d8ef6f 100644 --- a/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java +++ b/base/android/java/src/org/chromium/base/ApiCompatibilityUtils.java
@@ -44,14 +44,19 @@ } /** - * @see Long#compare(long, long) + * Compares two long values numerically. The value returned is identical to what would be + * returned by {@link Long#compare(long, long)} which is available since API level 19. */ public static int compareLong(long lhs, long rhs) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - return Long.compare(lhs, rhs); - } else { - return lhs < rhs ? -1 : (lhs == rhs ? 0 : 1); - } + return lhs < rhs ? -1 : (lhs == rhs ? 0 : 1); + } + + /** + * Compares two boolean values. The value returned is identical to what would be returned by + * {@link Boolean#compare(boolean, boolean)} which is available since API level 19. + */ + public static int compareBoolean(boolean lhs, boolean rhs) { + return lhs == rhs ? 0 : lhs ? 1 : -1; } /**
diff --git a/base/android/java/src/org/chromium/base/BuildInfo.java b/base/android/java/src/org/chromium/base/BuildInfo.java index d6063fe3..54c12c5 100644 --- a/base/android/java/src/org/chromium/base/BuildInfo.java +++ b/base/android/java/src/org/chromium/base/BuildInfo.java
@@ -71,7 +71,7 @@ PackageInfo packageInfo = packageManager.getPackageInfo("com.google.android.gms", 0); msg = Integer.toString(packageInfo.versionCode); } catch (NameNotFoundException e) { - Log.d(TAG, "GMS package is not found: %s", e); + Log.d(TAG, "GMS package is not found.", e); } return msg; }
diff --git a/chrome/VERSION b/chrome/VERSION index 6237332f..9500d63 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=57 MINOR=0 -BUILD=2978 +BUILD=2979 PATCH=0
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java index 9408598c..7267932e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/CardEditor.java
@@ -196,7 +196,7 @@ AutofillAddress.checkAddressCompletionStatus(a) == AutofillAddress.COMPLETE; boolean isBComplete = AutofillAddress.checkAddressCompletionStatus(b) == AutofillAddress.COMPLETE; - return (isBComplete ? 1 : 0) - (isAComplete ? 1 : 0); + return ApiCompatibilityUtils.compareBoolean(isBComplete, isAComplete); } });
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 56e55e4..8e77a11 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -603,6 +603,8 @@ "metrics/metrics_memory_details.h", "metrics/metrics_reporting_state.cc", "metrics/metrics_reporting_state.h", + "metrics/network_quality_estimator_provider_impl.cc", + "metrics/network_quality_estimator_provider_impl.h", "metrics/perf/perf_provider_chromeos.cc", "metrics/perf/perf_provider_chromeos.h", "metrics/sampling_metrics_provider.cc", @@ -826,6 +828,8 @@ "permissions/chooser_context_base.h", "permissions/delegation_tracker.cc", "permissions/delegation_tracker.h", + "permissions/permission_blacklist_client.cc", + "permissions/permission_blacklist_client.h", "permissions/permission_context_base.cc", "permissions/permission_context_base.h", "permissions/permission_decision_auto_blocker.cc",
diff --git a/chrome/browser/chromeos/arc/arc_session_manager.cc b/chrome/browser/chromeos/arc/arc_session_manager.cc index 4c0c753..876e24b 100644 --- a/chrome/browser/chromeos/arc/arc_session_manager.cc +++ b/chrome/browser/chromeos/arc/arc_session_manager.cc
@@ -733,13 +733,15 @@ return; } - // In case |state_| is ACTIVE, UI page can be ARC_LOADING (which means normal - // ARC booting) or ERROR (in case ARC can not be started). If ARC is booting - // normally don't stop it on progress close. + // If ARC failed to boot normally, stop ARC. Similarly, if the current page is + // LSO, closing the window should stop ARC since the user activity chooses to + // not sign in. In any other case, ARC is booting normally and the instance + // should not be stopped. if ((state_ != State::SHOWING_TERMS_OF_SERVICE && state_ != State::CHECKING_ANDROID_MANAGEMENT) && (!support_host_ || - support_host_->ui_page() != ArcSupportHost::UIPage::ERROR)) { + (support_host_->ui_page() != ArcSupportHost::UIPage::ERROR && + support_host_->ui_page() != ArcSupportHost::UIPage::LSO))) { return; }
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc index f736507..1c82b2bc 100644 --- a/chrome/browser/metrics/chrome_metrics_service_client.cc +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -32,6 +32,7 @@ #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" #include "chrome/browser/metrics/https_engagement_metrics_provider.h" #include "chrome/browser/metrics/metrics_reporting_state.h" +#include "chrome/browser/metrics/network_quality_estimator_provider_impl.h" #include "chrome/browser/metrics/sampling_metrics_provider.h" #include "chrome/browser/metrics/subprocess_metrics_provider.h" #include "chrome/browser/metrics/time_ticks_experiment_win.h" @@ -571,10 +572,12 @@ std::unique_ptr<metrics::MetricsProvider>( new ExtensionsMetricsProvider(metrics_state_manager_))); #endif + metrics_service_->RegisterMetricsProvider( - std::unique_ptr<metrics::MetricsProvider>( - new metrics::NetworkMetricsProvider( - content::BrowserThread::GetBlockingPool()))); + base::MakeUnique<metrics::NetworkMetricsProvider>( + base::MakeUnique<metrics::NetworkQualityEstimatorProviderImpl>( + g_browser_process->io_thread()), + content::BrowserThread::GetBlockingPool())); // Currently, we configure OmniboxMetricsProvider to not log events to UMA // if there is a single incognito session visible. In the future, it may
diff --git a/chrome/browser/metrics/network_quality_estimator_provider_impl.cc b/chrome/browser/metrics/network_quality_estimator_provider_impl.cc new file mode 100644 index 0000000..144fa60 --- /dev/null +++ b/chrome/browser/metrics/network_quality_estimator_provider_impl.cc
@@ -0,0 +1,42 @@ +// 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/metrics/network_quality_estimator_provider_impl.h" + +#include "chrome/browser/io_thread.h" +#include "content/public/browser/browser_thread.h" + +namespace net { +class NetworkQualityEstimator; +} + +namespace metrics { + +NetworkQualityEstimatorProviderImpl::NetworkQualityEstimatorProviderImpl( + IOThread* io_thread) + : io_thread_(io_thread) { + DCHECK(io_thread_); +} + +NetworkQualityEstimatorProviderImpl::~NetworkQualityEstimatorProviderImpl() { + DCHECK(thread_checker_.CalledOnValidThread()); +} + +scoped_refptr<base::SequencedTaskRunner> +NetworkQualityEstimatorProviderImpl::GetTaskRunner() { + DCHECK(thread_checker_.CalledOnValidThread()); + // |this| is constructed on UI thread, but must be used on the IO thread. + thread_checker_.DetachFromThread(); + return content::BrowserThread::GetTaskRunnerForThread( + content::BrowserThread::IO); +} + +net::NetworkQualityEstimator* +NetworkQualityEstimatorProviderImpl::GetNetworkQualityEstimator() { + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); + return io_thread_->globals()->network_quality_estimator.get(); +} + +} // namespace metrics
diff --git a/chrome/browser/metrics/network_quality_estimator_provider_impl.h b/chrome/browser/metrics/network_quality_estimator_provider_impl.h new file mode 100644 index 0000000..9495d8d --- /dev/null +++ b/chrome/browser/metrics/network_quality_estimator_provider_impl.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 CHROME_BROWSER_METRICS_NETWORK_QUALITY_ESTIMATOR_PROVIDER_IMPL_H_ +#define CHROME_BROWSER_METRICS_NETWORK_QUALITY_ESTIMATOR_PROVIDER_IMPL_H_ + +#include "base/macros.h" +#include "base/threading/thread_checker.h" +#include "components/metrics/net/network_metrics_provider.h" + +class IOThread; + +namespace metrics { + +// Implements NetworkMetricsProvider::NetworkQualityEstimatorProvider. Provides +// NetworkQualityEstimator by querying the IOThread. +class NetworkQualityEstimatorProviderImpl + : public NetworkMetricsProvider::NetworkQualityEstimatorProvider { + public: + explicit NetworkQualityEstimatorProviderImpl(IOThread* io_thread); + ~NetworkQualityEstimatorProviderImpl() override; + + private: + // NetworkMetricsProvider::NetworkQualityEstimatorProvider: + scoped_refptr<base::SequencedTaskRunner> GetTaskRunner() override; + net::NetworkQualityEstimator* GetNetworkQualityEstimator() override; + + IOThread* io_thread_; + + base::ThreadChecker thread_checker_; + + DISALLOW_COPY_AND_ASSIGN(NetworkQualityEstimatorProviderImpl); +}; + +} // namespace metrics + +#endif // CHROME_BROWSER_METRICS_NETWORK_QUALITY_ESTIMATOR_PROVIDER_IMPL_H_
diff --git a/chrome/browser/permissions/permission_blacklist_client.cc b/chrome/browser/permissions/permission_blacklist_client.cc new file mode 100644 index 0000000..18f57460 --- /dev/null +++ b/chrome/browser/permissions/permission_blacklist_client.cc
@@ -0,0 +1,102 @@ +// 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/permissions/permission_blacklist_client.h" + +#include <set> +#include <string> + +#include "base/logging.h" +#include "base/memory/ptr_util.h" +#include "base/timer/timer.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/web_contents.h" +#include "url/gurl.h" + +// static +void PermissionBlacklistClient::CheckSafeBrowsingBlacklist( + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, + content::PermissionType permission_type, + const GURL& request_origin, + content::WebContents* web_contents, + int timeout, + base::Callback<void(bool)> callback) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + new PermissionBlacklistClient(db_manager, permission_type, request_origin, + web_contents, timeout, callback); +} + +PermissionBlacklistClient::PermissionBlacklistClient( + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, + content::PermissionType permission_type, + const GURL& request_origin, + content::WebContents* web_contents, + int timeout, + base::Callback<void(bool)> callback) + : content::WebContentsObserver(web_contents), + db_manager_(db_manager), + permission_type_(permission_type), + callback_(callback), + timeout_(timeout), + is_active_(true) { + // Balanced by a call to Release() in OnCheckApiBlacklistUrlResult(). + AddRef(); + content::BrowserThread::PostTask( + content::BrowserThread::IO, FROM_HERE, + base::Bind(&PermissionBlacklistClient::StartCheck, this, request_origin)); +} + +PermissionBlacklistClient::~PermissionBlacklistClient() {} + +void PermissionBlacklistClient::StartCheck(const GURL& request_origin) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + // Start the timer to interrupt into the client callback method with an + // empty response if Safe Browsing times out. + safe_browsing::ThreatMetadata empty_metadata; + timer_ = base::MakeUnique<base::OneShotTimer>(); + timer_->Start( + FROM_HERE, base::TimeDelta::FromMilliseconds(timeout_), + base::Bind(&PermissionBlacklistClient::OnCheckApiBlacklistUrlResult, this, + request_origin, empty_metadata)); + db_manager_->CheckApiBlacklistUrl(request_origin, this); +} + +void PermissionBlacklistClient::OnCheckApiBlacklistUrlResult( + const GURL& url, + const safe_browsing::ThreatMetadata& metadata) { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); + + if (timer_->IsRunning()) + timer_->Stop(); + else + db_manager_->CancelApiCheck(this); + timer_.reset(nullptr); + + // TODO(meredithl): Convert the strings returned from Safe Browsing to the + // ones used by PermissionUtil for comparison. + bool permission_blocked = + metadata.api_permissions.find(PermissionUtil::GetPermissionString( + permission_type_)) != metadata.api_permissions.end(); + + content::BrowserThread::PostTask( + content::BrowserThread::UI, FROM_HERE, + base::Bind(&PermissionBlacklistClient::EvaluateBlacklistResultOnUiThread, + this, permission_blocked)); +} + +void PermissionBlacklistClient::EvaluateBlacklistResultOnUiThread( + bool permission_blocked) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + + if (is_active_) + callback_.Run(permission_blocked); + Release(); +} + +void PermissionBlacklistClient::WebContentsDestroyed() { + is_active_ = false; + Observe(nullptr); +}
diff --git a/chrome/browser/permissions/permission_blacklist_client.h b/chrome/browser/permissions/permission_blacklist_client.h new file mode 100644 index 0000000..2d1666e0 --- /dev/null +++ b/chrome/browser/permissions/permission_blacklist_client.h
@@ -0,0 +1,87 @@ +// 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 CHROME_BROWSER_PERMISSIONS_PERMISSION_BLACKLIST_CLIENT_H_ +#define CHROME_BROWSER_PERMISSIONS_PERMISSION_BLACKLIST_CLIENT_H_ + +#include "base/callback.h" +#include "base/memory/ref_counted.h" +#include "chrome/browser/permissions/permission_util.h" +#include "components/safe_browsing_db/database_manager.h" +#include "content/public/browser/permission_type.h" +#include "content/public/browser/web_contents_observer.h" + +class GURL; + +namespace content { +class WebContents; +} + +namespace base { +class OneShotTimer; +} + +// The client used when checking whether a permission has been blacklisted by +// Safe Browsing. The check is done asynchronously as no state can be stored in +// PermissionContextBase (since additional permission requests may be made). +// This class must be created and destroyed on the UI thread. +class PermissionBlacklistClient + : public safe_browsing::SafeBrowsingDatabaseManager::Client, + public base::RefCountedThreadSafe<PermissionBlacklistClient>, + public content::WebContentsObserver { + public: + static void CheckSafeBrowsingBlacklist( + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, + content::PermissionType permission_type, + const GURL& request_origin, + content::WebContents* web_contents, + int timeout, + base::Callback<void(bool)> callback); + + private: + friend class base::RefCountedThreadSafe<PermissionBlacklistClient>; + + PermissionBlacklistClient( + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, + content::PermissionType permission_type, + const GURL& request_origin, + content::WebContents* web_contents, + int timeout, + base::Callback<void(bool)> callback); + + ~PermissionBlacklistClient() override; + + void StartCheck(const GURL& request_origin); + + // SafeBrowsingDatabaseManager::Client implementation. + void OnCheckApiBlacklistUrlResult( + const GURL& url, + const safe_browsing::ThreatMetadata& metadata) override; + + void EvaluateBlacklistResultOnUiThread(bool permission_blocked); + + // WebContentsObserver implementation. Sets a flag so that when the database + // manager returns with a result, it won't attempt to run the callback with a + // deleted WebContents. + void WebContentsDestroyed() override; + + scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager_; + content::PermissionType permission_type_; + + // PermissionContextBase callback to run on the UI thread. + base::Callback<void(bool)> callback_; + + // Timer to abort the Safe Browsing check if it takes too long. Created and + // used on the IO Thread. + std::unique_ptr<base::OneShotTimer> timer_; + int timeout_; + + // True if |callback_| should be invoked, if web_contents() is destroyed, this + // is set to false. + bool is_active_; + + DISALLOW_COPY_AND_ASSIGN(PermissionBlacklistClient); +}; + +#endif // CHROME_BROWSER_PERMISSIONS_PERMISSION_BLACKLIST_CLIENT_H_
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc index 8911b967..753134c3 100644 --- a/chrome/browser/permissions/permission_context_base.cc +++ b/chrome/browser/permissions/permission_context_base.cc
@@ -6,7 +6,6 @@ #include <stddef.h> -#include <set> #include <string> #include <utility> @@ -14,10 +13,10 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/strings/stringprintf.h" -#include "base/timer/timer.h" #include "build/build_config.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" +#include "chrome/browser/permissions/permission_blacklist_client.h" #include "chrome/browser/permissions/permission_decision_auto_blocker.h" #include "chrome/browser/permissions/permission_request.h" #include "chrome/browser/permissions/permission_request_id.h" @@ -32,12 +31,10 @@ #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/browser/website_settings_registry.h" #include "components/prefs/pref_service.h" -#include "components/safe_browsing_db/database_manager.h" #include "components/variations/variations_associated_data.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/web_contents.h" -#include "content/public/browser/web_contents_observer.h" #include "content/public/common/origin_util.h" #include "url/gurl.h" @@ -57,128 +54,6 @@ // TODO(meredithl): Revisit this once UMA metrics have data about request time. const int kCheckUrlTimeoutMs = 2000; -// The client used when checking whether a permission has been blacklisted by -// Safe Browsing. The check is done asynchronously as no state can be stored in -// PermissionContextBase (since additional permission requests may be made). -// This class must be created and destroyed on the UI thread. -class PermissionsBlacklistingClient - : public safe_browsing::SafeBrowsingDatabaseManager::Client, - public base::RefCountedThreadSafe<PermissionsBlacklistingClient>, - public content::WebContentsObserver { - public: - static void CheckSafeBrowsingBlacklist( - scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, - content::PermissionType permission_type, - const GURL& request_origin, - content::WebContents* web_contents, - int timeout, - base::Callback<void(bool)> callback) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - - new PermissionsBlacklistingClient(db_manager, permission_type, - request_origin, web_contents, timeout, - callback); - } - - private: - friend class base::RefCountedThreadSafe<PermissionsBlacklistingClient>; - - PermissionsBlacklistingClient( - scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager, - content::PermissionType permission_type, - const GURL& request_origin, - content::WebContents* web_contents, - int timeout, - base::Callback<void(bool)> callback) - : content::WebContentsObserver(web_contents), - db_manager_(db_manager), - permission_type_(permission_type), - callback_(callback), - timeout_(timeout), - is_active_(true) { - // Balanced by a call to Release() in OnCheckApiBlacklistUrlResult(). - AddRef(); - content::BrowserThread::PostTask( - content::BrowserThread::IO, FROM_HERE, - base::Bind(&PermissionsBlacklistingClient::StartCheck, this, - request_origin)); - } - - ~PermissionsBlacklistingClient() override {} - - void StartCheck(const GURL& request_origin) { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - - // Start the timer to interrupt into the client callback method with an - // empty response if Safe Browsing times out. - safe_browsing::ThreatMetadata empty_metadata; - timer_ = base::MakeUnique<base::OneShotTimer>(); - timer_->Start( - FROM_HERE, base::TimeDelta::FromMilliseconds(timeout_), - base::Bind(&PermissionsBlacklistingClient::OnCheckApiBlacklistUrlResult, - this, request_origin, empty_metadata)); - db_manager_->CheckApiBlacklistUrl(request_origin, this); - } - - // SafeBrowsingDatabaseManager::Client implementation. - void OnCheckApiBlacklistUrlResult( - const GURL& url, - const safe_browsing::ThreatMetadata& metadata) override { - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); - - if (timer_->IsRunning()) - timer_->Stop(); - else - db_manager_->CancelApiCheck(this); - timer_.reset(nullptr); - - // TODO(meredithl): Convert the strings returned from Safe Browsing to the - // ones used by PermissionUtil for comparison. - bool permission_blocked = - metadata.api_permissions.find(PermissionUtil::GetPermissionString( - permission_type_)) != metadata.api_permissions.end(); - - content::BrowserThread::PostTask( - content::BrowserThread::UI, FROM_HERE, - base::Bind( - &PermissionsBlacklistingClient::EvaluateBlacklistResultOnUiThread, - this, permission_blocked)); - } - - void EvaluateBlacklistResultOnUiThread(bool permission_blocked) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - - if (is_active_) - callback_.Run(permission_blocked); - Release(); - } - - // WebContentsObserver implementation. Sets the flag so that when the database - // manager returns with a result, it won't attempt to run the callback with a - // deleted WebContents. - void WebContentsDestroyed() override { - is_active_ = false; - Observe(nullptr); - } - - scoped_refptr<safe_browsing::SafeBrowsingDatabaseManager> db_manager_; - content::PermissionType permission_type_; - - // PermissionContextBase callback to run on the UI thread. - base::Callback<void(bool)> callback_; - - // Timer to abort the Safe Browsing check if it takes too long. Created and - // used on the IO Thread. - std::unique_ptr<base::OneShotTimer> timer_; - int timeout_; - - // True if |callback_| should be invoked, if web_contents() is destroyed, this - // is set to false. - bool is_active_; - - DISALLOW_COPY_AND_ASSIGN(PermissionsBlacklistingClient); -}; - PermissionContextBase::PermissionContextBase( Profile* profile, const content::PermissionType permission_type, @@ -247,7 +122,7 @@ } // The client contacts Safe Browsing, and runs the callback with the result. - PermissionsBlacklistingClient::CheckSafeBrowsingBlacklist( + PermissionBlacklistClient::CheckSafeBrowsingBlacklist( db_manager_, permission_type_, requesting_origin, web_contents, safe_browsing_timeout_, base::Bind(&PermissionContextBase::ContinueRequestPermission,
diff --git a/chrome/browser/resources/settings/people_page/change_picture.js b/chrome/browser/resources/settings/people_page/change_picture.js index abdad67..4bed8bf 100644 --- a/chrome/browser/resources/settings/people_page/change_picture.js +++ b/chrome/browser/resources/settings/people_page/change_picture.js
@@ -282,6 +282,9 @@ selector.selectPrevious(); } while (this.selectedItem_.hidden); + if (this.selectedItem_.dataset.type != ChangePictureSelectionTypes.FILE) + this.selectImage_(this.selectedItem_); + this.lastSelectedImageType_ = this.selectedItem_.dataset.type; e.detail.keyboardEvent.preventDefault(); break; @@ -294,6 +297,9 @@ selector.selectNext(); } while (this.selectedItem_.hidden); + if (this.selectedItem_.dataset.type != ChangePictureSelectionTypes.FILE) + this.selectImage_(this.selectedItem_); + this.lastSelectedImageType_ = this.selectedItem_.dataset.type; e.detail.keyboardEvent.preventDefault(); break;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc index 63d49599..49f44a6 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -751,7 +751,7 @@ gfx::CreateVectorIcon(kNavigateBackIcon, normal_color)); back_->SetImage( views::Button::STATE_DISABLED, - gfx::CreateVectorIcon(kNavigateBackIcon, normal_color)); + gfx::CreateVectorIcon(kNavigateBackIcon, disabled_color)); forward_->SetImage( views::Button::STATE_NORMAL, gfx::CreateVectorIcon(kNavigateForwardIcon, normal_color));
diff --git a/chrome/browser/web_dev_style/html_checker.py b/chrome/browser/web_dev_style/html_checker.py index 040a4c71..2ab90e1 100644 --- a/chrome/browser/web_dev_style/html_checker.py +++ b/chrome/browser/web_dev_style/html_checker.py
@@ -91,6 +91,9 @@ file_filter=self.file_filter, include_deletes=False) for f in affected_files: + if not f.LocalPath().endswith('.html'): + continue + errors = [] for line_number, line in f.ChangedContents():
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc index 15630642..4b63c2a 100644 --- a/chrome/installer/setup/install_worker.cc +++ b/chrome/installer/setup/install_worker.cc
@@ -427,7 +427,7 @@ true); // MSI installations will manage their own uninstall shortcuts. - if (!installer_state.is_msi() && product.ShouldCreateUninstallEntry()) { + if (!installer_state.is_msi()) { // We need to quote the command line for the Add/Remove Programs dialog. base::CommandLine quoted_uninstall_cmd(installer_path); DCHECK_EQ(quoted_uninstall_cmd.GetCommandLineString()[0], '"'); @@ -669,10 +669,8 @@ // We want MSI installs to take over the Add/Remove Programs entry. Make a // best-effort attempt to delete any entry left over from previous non-MSI // installations for the same type of install (system or per user). - if (product.ShouldCreateUninstallEntry()) { - AddDeleteUninstallEntryForMSIWorkItems(installer_state, product, - post_install_task_list); - } + AddDeleteUninstallEntryForMSIWorkItems(installer_state, product, + post_install_task_list); } return true;
diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc index 2c8f2af2..a55f28d 100644 --- a/chrome/installer/setup/uninstall.cc +++ b/chrome/installer/setup/uninstall.cc
@@ -903,10 +903,8 @@ base::string16 distribution_data(browser_dist->GetDistributionData(reg_root)); // Remove Control Panel uninstall link. - if (product.ShouldCreateUninstallEntry()) { - InstallUtil::DeleteRegistryKey( - reg_root, browser_dist->GetUninstallRegPath(), KEY_WOW64_32KEY); - } + InstallUtil::DeleteRegistryKey(reg_root, browser_dist->GetUninstallRegPath(), + KEY_WOW64_32KEY); // Remove Omaha product key. InstallUtil::DeleteRegistryKey(
diff --git a/chrome/installer/util/BUILD.gn b/chrome/installer/util/BUILD.gn index e66d04b..f671dbec 100644 --- a/chrome/installer/util/BUILD.gn +++ b/chrome/installer/util/BUILD.gn
@@ -53,8 +53,6 @@ if (is_win) { sources = [ - "chrome_binaries_operations.cc", - "chrome_binaries_operations.h", "chrome_browser_operations.cc", "chrome_browser_operations.h", "chrome_browser_sxs_operations.cc", @@ -141,8 +139,6 @@ "callback_work_item.h", "channel_info.cc", "channel_info.h", - "chromium_binaries_distribution.cc", - "chromium_binaries_distribution.h", "conditional_work_item_list.cc", "conditional_work_item_list.h", "copy_tree_work_item.cc", @@ -163,8 +159,6 @@ "duplicate_tree_detector.h", "firewall_manager_win.cc", "firewall_manager_win.h", - "google_chrome_binaries_distribution.cc", - "google_chrome_binaries_distribution.h", "google_chrome_sxs_distribution.cc", "google_chrome_sxs_distribution.h", "google_update_constants.cc",
diff --git a/chrome/installer/util/browser_distribution.cc b/chrome/installer/util/browser_distribution.cc index 82e8977..8e83dda2 100644 --- a/chrome/installer/util/browser_distribution.cc +++ b/chrome/installer/util/browser_distribution.cc
@@ -21,8 +21,6 @@ #include "chrome/common/chrome_icon_resources_win.h" #include "chrome/common/env_vars.h" #include "chrome/installer/util/app_registration_data.h" -#include "chrome/installer/util/chromium_binaries_distribution.h" -#include "chrome/installer/util/google_chrome_binaries_distribution.h" #include "chrome/installer/util/google_chrome_distribution.h" #include "chrome/installer/util/google_chrome_sxs_distribution.h" #include "chrome/installer/util/install_util.h" @@ -43,8 +41,6 @@ // The BrowserDistribution objects are never freed. BrowserDistribution* g_browser_distribution = NULL; -BrowserDistribution* g_binaries_distribution = NULL; - BrowserDistribution::Type GetCurrentDistributionType() { return BrowserDistribution::CHROME_BROWSER; } @@ -84,34 +80,21 @@ // static BrowserDistribution* BrowserDistribution::GetSpecificDistribution( BrowserDistribution::Type type) { + DCHECK_EQ(type, CHROME_BROWSER); BrowserDistribution* dist = NULL; - switch (type) { - case CHROME_BROWSER: #if defined(GOOGLE_CHROME_BUILD) - if (InstallUtil::IsChromeSxSProcess()) { - dist = GetOrCreateBrowserDistribution<GoogleChromeSxSDistribution>( - &g_browser_distribution); - } else { - dist = GetOrCreateBrowserDistribution<GoogleChromeDistribution>( - &g_browser_distribution); - } -#else - dist = GetOrCreateBrowserDistribution<BrowserDistribution>( - &g_browser_distribution); -#endif - break; - - default: - DCHECK_EQ(CHROME_BINARIES, type); -#if defined(GOOGLE_CHROME_BUILD) - dist = GetOrCreateBrowserDistribution<GoogleChromeBinariesDistribution>( - &g_binaries_distribution); -#else - dist = GetOrCreateBrowserDistribution<ChromiumBinariesDistribution>( - &g_binaries_distribution); -#endif + if (InstallUtil::IsChromeSxSProcess()) { + dist = GetOrCreateBrowserDistribution<GoogleChromeSxSDistribution>( + &g_browser_distribution); + } else { + dist = GetOrCreateBrowserDistribution<GoogleChromeDistribution>( + &g_browser_distribution); } +#else + dist = GetOrCreateBrowserDistribution<BrowserDistribution>( + &g_browser_distribution); +#endif return dist; }
diff --git a/chrome/installer/util/browser_distribution.h b/chrome/installer/util/browser_distribution.h index 3ff0a2a0..8894824 100644 --- a/chrome/installer/util/browser_distribution.h +++ b/chrome/installer/util/browser_distribution.h
@@ -25,9 +25,9 @@ class BrowserDistribution { public: + // TODO(grt): Remove Type. enum Type { CHROME_BROWSER, - CHROME_BINARIES, NUM_TYPES };
diff --git a/chrome/installer/util/chrome_binaries_operations.cc b/chrome/installer/util/chrome_binaries_operations.cc deleted file mode 100644 index 63d8f93..0000000 --- a/chrome/installer/util/chrome_binaries_operations.cc +++ /dev/null
@@ -1,91 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/installer/util/chrome_binaries_operations.h" - -#include "base/command_line.h" -#include "base/files/file_path.h" -#include "base/logging.h" -#include "chrome/installer/util/channel_info.h" -#include "chrome/installer/util/helper.h" -#include "chrome/installer/util/master_preferences.h" -#include "chrome/installer/util/master_preferences_constants.h" -#include "chrome/installer/util/util_constants.h" - -namespace installer { - -void ChromeBinariesOperations::ReadOptions(const MasterPreferences& prefs, - std::set<base::string16>* options) - const { - DCHECK(options); - options->insert(kOptionMultiInstall); -} - -void ChromeBinariesOperations::ReadOptions( - const base::CommandLine& uninstall_command, - std::set<base::string16>* options) const { - DCHECK(options); - options->insert(kOptionMultiInstall); -} - -void ChromeBinariesOperations::AddKeyFiles( - const std::set<base::string16>& options, - std::vector<base::FilePath>* key_files) const { - DCHECK(key_files); - key_files->push_back(base::FilePath(installer::kChromeDll)); -} - -void ChromeBinariesOperations::AppendProductFlags( - const std::set<base::string16>& options, - base::CommandLine* cmd_line) const { - DCHECK(cmd_line); - - DCHECK(options.find(kOptionMultiInstall) != options.end()); - - // Add --multi-install if it isn't already there. - if (!cmd_line->HasSwitch(switches::kMultiInstall)) - cmd_line->AppendSwitch(switches::kMultiInstall); -} - -void ChromeBinariesOperations::AppendRenameFlags( - const std::set<base::string16>& options, - base::CommandLine* cmd_line) const { - DCHECK(cmd_line); - - DCHECK(options.find(kOptionMultiInstall) != options.end()); - - // Add --multi-install if it isn't already there. - if (!cmd_line->HasSwitch(switches::kMultiInstall)) - cmd_line->AppendSwitch(switches::kMultiInstall); -} - -bool ChromeBinariesOperations::SetChannelFlags( - const std::set<base::string16>& options, - bool set, - ChannelInfo* channel_info) const { - return false; -} - -bool ChromeBinariesOperations::ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const { - return false; -} - -void ChromeBinariesOperations::AddDefaultShortcutProperties( - BrowserDistribution* dist, - const base::FilePath& target_exe, - ShellUtil::ShortcutProperties* properties) const { - NOTREACHED() << "Chrome Binaries do not create shortcuts."; -} - -void ChromeBinariesOperations::LaunchUserExperiment( - const base::FilePath& setup_path, - const std::set<base::string16>& options, - InstallStatus status, - bool system_level) const { - // Not meaningful to have binaries run experiments. - NOTREACHED(); -} - -} // namespace installer
diff --git a/chrome/installer/util/chrome_binaries_operations.h b/chrome/installer/util/chrome_binaries_operations.h deleted file mode 100644 index 7e2404ec..0000000 --- a/chrome/installer/util/chrome_binaries_operations.h +++ /dev/null
@@ -1,58 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_INSTALLER_UTIL_CHROME_BINARIES_OPERATIONS_H_ -#define CHROME_INSTALLER_UTIL_CHROME_BINARIES_OPERATIONS_H_ - -#include "base/compiler_specific.h" -#include "base/macros.h" -#include "chrome/installer/util/product_operations.h" - -namespace installer { - -// Operations specific to the Chrome Binaries; see ProductOperations for general -// info. -class ChromeBinariesOperations : public ProductOperations { - public: - ChromeBinariesOperations() {} - - void ReadOptions(const MasterPreferences& prefs, - std::set<base::string16>* options) const override; - - void ReadOptions(const base::CommandLine& uninstall_command, - std::set<base::string16>* options) const override; - - void AddKeyFiles(const std::set<base::string16>& options, - std::vector<base::FilePath>* key_files) const override; - - void AppendProductFlags(const std::set<base::string16>& options, - base::CommandLine* cmd_line) const override; - - void AppendRenameFlags(const std::set<base::string16>& options, - base::CommandLine* cmd_line) const override; - - bool SetChannelFlags(const std::set<base::string16>& options, - bool set, - ChannelInfo* channel_info) const override; - - bool ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const override; - - void AddDefaultShortcutProperties( - BrowserDistribution* dist, - const base::FilePath& target_exe, - ShellUtil::ShortcutProperties* properties) const override; - - void LaunchUserExperiment(const base::FilePath& setup_path, - const std::set<base::string16>& options, - InstallStatus status, - bool system_level) const override; - - private: - DISALLOW_COPY_AND_ASSIGN(ChromeBinariesOperations); -}; - -} // namespace installer - -#endif // CHROME_INSTALLER_UTIL_CHROME_BINARIES_OPERATIONS_H_
diff --git a/chrome/installer/util/chrome_browser_operations.cc b/chrome/installer/util/chrome_browser_operations.cc index f92f00d..99397dd 100644 --- a/chrome/installer/util/chrome_browser_operations.cc +++ b/chrome/installer/util/chrome_browser_operations.cc
@@ -93,11 +93,6 @@ #endif } -bool ChromeBrowserOperations::ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const { - return true; -} - // Modifies a ShortcutProperties object by adding default values to // uninitialized members. Tries to assign: // - target: |chrome_exe|.
diff --git a/chrome/installer/util/chrome_browser_operations.h b/chrome/installer/util/chrome_browser_operations.h index 8ae4a639..d7e02dc 100644 --- a/chrome/installer/util/chrome_browser_operations.h +++ b/chrome/installer/util/chrome_browser_operations.h
@@ -35,9 +35,6 @@ bool set, ChannelInfo* channel_info) const override; - bool ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const override; - void AddDefaultShortcutProperties( BrowserDistribution* dist, const base::FilePath& target_exe,
diff --git a/chrome/installer/util/chromium_binaries_distribution.cc b/chrome/installer/util/chromium_binaries_distribution.cc deleted file mode 100644 index 0c2b2de..0000000 --- a/chrome/installer/util/chromium_binaries_distribution.cc +++ /dev/null
@@ -1,119 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// This file declares a class that contains various method related to branding. - -#include "chrome/installer/util/google_chrome_binaries_distribution.h" - -#include <utility> - -#include "base/logging.h" -#include "chrome/installer/util/app_registration_data.h" -#include "chrome/installer/util/non_updating_app_registration_data.h" - -namespace { - -const wchar_t kChromiumBinariesName[] = L"Chromium Binaries"; - -} // namespace - -ChromiumBinariesDistribution::ChromiumBinariesDistribution() - : BrowserDistribution(CHROME_BINARIES, - std::unique_ptr<AppRegistrationData>( - new NonUpdatingAppRegistrationData( - base::string16(L"Software\\") - .append(kChromiumBinariesName)))), - browser_distribution_( - BrowserDistribution::GetSpecificDistribution(CHROME_BROWSER)) {} - -ChromiumBinariesDistribution::ChromiumBinariesDistribution( - std::unique_ptr<AppRegistrationData> app_reg_data) - : BrowserDistribution(CHROME_BINARIES, std::move(app_reg_data)), - browser_distribution_( - BrowserDistribution::GetSpecificDistribution(CHROME_BROWSER)) {} - -base::string16 ChromiumBinariesDistribution::GetBaseAppName() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetBrowserProgIdPrefix() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetBrowserProgIdDesc() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetDisplayName() { - return kChromiumBinariesName; -} - -base::string16 ChromiumBinariesDistribution::GetShortcutName() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetBaseAppId() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetInstallSubDir() { - return browser_distribution_->GetInstallSubDir(); -} - -base::string16 ChromiumBinariesDistribution::GetPublisherName() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetAppDescription() { - NOTREACHED(); - return base::string16(); -} - -base::string16 ChromiumBinariesDistribution::GetLongAppDescription() { - NOTREACHED(); - return base::string16(); -} - -std::string ChromiumBinariesDistribution::GetSafeBrowsingName() { - NOTREACHED(); - return std::string(); -} - -base::string16 ChromiumBinariesDistribution::GetRegistryPath() { - NOTREACHED(); - // Handling a NOTREACHED() with anything but a default return value is unusual - // but in this case returning the empty string would point the caller at the - // root of the registry which could have disastrous consequences. - return BrowserDistribution::GetRegistryPath(); -} - -base::string16 ChromiumBinariesDistribution::GetUninstallRegPath() { - NOTREACHED(); - return base::string16(); -} - -BrowserDistribution::DefaultBrowserControlPolicy - ChromiumBinariesDistribution::GetDefaultBrowserControlPolicy() { - return DEFAULT_BROWSER_UNSUPPORTED; -} - -int ChromiumBinariesDistribution::GetIconIndex() { - NOTREACHED(); - return 0; -} - -bool ChromiumBinariesDistribution::GetChromeChannel(base::string16* channel) { - NOTREACHED(); - return false; -} - -base::string16 ChromiumBinariesDistribution::GetCommandExecuteImplClsid() { - return base::string16(); -}
diff --git a/chrome/installer/util/chromium_binaries_distribution.h b/chrome/installer/util/chromium_binaries_distribution.h deleted file mode 100644 index e52b35d..0000000 --- a/chrome/installer/util/chromium_binaries_distribution.h +++ /dev/null
@@ -1,66 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// This file declares a class that contains various method related to branding. - -#ifndef CHROME_INSTALLER_UTIL_CHROMIUM_BINARIES_DISTRIBUTION_H_ -#define CHROME_INSTALLER_UTIL_CHROMIUM_BINARIES_DISTRIBUTION_H_ - -#include <memory> -#include <string> - -#include "base/macros.h" -#include "chrome/installer/util/browser_distribution.h" - -class ChromiumBinariesDistribution : public BrowserDistribution { - public: - base::string16 GetBrowserProgIdPrefix() override; - - base::string16 GetBrowserProgIdDesc() override; - - base::string16 GetDisplayName() override; - - base::string16 GetShortcutName() override; - - int GetIconIndex() override; - - base::string16 GetBaseAppName() override; - - base::string16 GetBaseAppId() override; - - base::string16 GetInstallSubDir() override; - - base::string16 GetPublisherName() override; - - base::string16 GetAppDescription() override; - - base::string16 GetLongAppDescription() override; - - std::string GetSafeBrowsingName() override; - - base::string16 GetRegistryPath() override; - - base::string16 GetUninstallRegPath() override; - - DefaultBrowserControlPolicy GetDefaultBrowserControlPolicy() override; - - bool GetChromeChannel(base::string16* channel) override; - - base::string16 GetCommandExecuteImplClsid() override; - - protected: - friend class BrowserDistribution; - - ChromiumBinariesDistribution(); - - explicit ChromiumBinariesDistribution( - std::unique_ptr<AppRegistrationData> app_reg_data); - - BrowserDistribution* browser_distribution_; - - private: - DISALLOW_COPY_AND_ASSIGN(ChromiumBinariesDistribution); -}; - -#endif // CHROME_INSTALLER_UTIL_CHROMIUM_BINARIES_DISTRIBUTION_H_
diff --git a/chrome/installer/util/google_chrome_binaries_distribution.cc b/chrome/installer/util/google_chrome_binaries_distribution.cc deleted file mode 100644 index bf131dc..0000000 --- a/chrome/installer/util/google_chrome_binaries_distribution.cc +++ /dev/null
@@ -1,40 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// This file defines a class that contains various method related to branding. - -#include "chrome/installer/util/google_chrome_binaries_distribution.h" - -#include "chrome/installer/util/google_update_constants.h" -#include "chrome/installer/util/google_update_settings.h" -#include "chrome/installer/util/install_util.h" -#include "chrome/installer/util/updating_app_registration_data.h" - -namespace { - -const wchar_t kChromeBinariesGuid[] = L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}"; -const wchar_t kChromeBinariesName[] = L"Google Chrome binaries"; - -} // namespace - -GoogleChromeBinariesDistribution::GoogleChromeBinariesDistribution() - : ChromiumBinariesDistribution(std::unique_ptr<AppRegistrationData>( - new UpdatingAppRegistrationData(kChromeBinariesGuid))) {} - -base::string16 GoogleChromeBinariesDistribution::GetDisplayName() { - return kChromeBinariesName; -} - -base::string16 GoogleChromeBinariesDistribution::GetShortcutName() { - NOTREACHED(); - return base::string16(); -} - -void GoogleChromeBinariesDistribution::UpdateInstallStatus(bool system_install, - installer::ArchiveType archive_type, - installer::InstallStatus install_status) { - GoogleUpdateSettings::UpdateInstallStatus(system_install, - archive_type, InstallUtil::GetInstallReturnCode(install_status), - kChromeBinariesGuid); -}
diff --git a/chrome/installer/util/google_chrome_binaries_distribution.h b/chrome/installer/util/google_chrome_binaries_distribution.h deleted file mode 100644 index 54b7bc6..0000000 --- a/chrome/installer/util/google_chrome_binaries_distribution.h +++ /dev/null
@@ -1,32 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// This file declares a class that contains various method related to branding. - -#ifndef CHROME_INSTALLER_UTIL_GOOGLE_CHROME_BINARIES_DISTRIBUTION_H_ -#define CHROME_INSTALLER_UTIL_GOOGLE_CHROME_BINARIES_DISTRIBUTION_H_ - -#include "base/macros.h" -#include "chrome/installer/util/chromium_binaries_distribution.h" - -class GoogleChromeBinariesDistribution : public ChromiumBinariesDistribution { - public: - base::string16 GetDisplayName() override; - - base::string16 GetShortcutName() override; - - void UpdateInstallStatus(bool system_install, - installer::ArchiveType archive_type, - installer::InstallStatus install_status) override; - - protected: - friend class BrowserDistribution; - - GoogleChromeBinariesDistribution(); - - private: - DISALLOW_COPY_AND_ASSIGN(GoogleChromeBinariesDistribution); -}; - -#endif // CHROME_INSTALLER_UTIL_GOOGLE_CHROME_BINARIES_DISTRIBUTION_H_
diff --git a/chrome/installer/util/product.cc b/chrome/installer/util/product.cc index a7fbe0f..32b70e48 100644 --- a/chrome/installer/util/product.cc +++ b/chrome/installer/util/product.cc
@@ -10,7 +10,6 @@ #include "base/logging.h" #include "base/process/launch.h" #include "base/win/registry.h" -#include "chrome/installer/util/chrome_binaries_operations.h" #include "chrome/installer/util/chrome_browser_operations.h" #include "chrome/installer/util/chrome_browser_sxs_operations.h" #include "chrome/installer/util/google_update_constants.h" @@ -32,9 +31,6 @@ new ChromeBrowserSxSOperations() : new ChromeBrowserOperations()); break; - case BrowserDistribution::CHROME_BINARIES: - operations_.reset(new ChromeBinariesOperations()); - break; default: NOTREACHED() << "Unsupported BrowserDistribution::Type: " << distribution->GetType(); @@ -122,10 +118,6 @@ return true; } -bool Product::ShouldCreateUninstallEntry() const { - return operations_->ShouldCreateUninstallEntry(options_); -} - void Product::AddKeyFiles(std::vector<base::FilePath>* key_files) const { operations_->AddKeyFiles(options_, key_files); }
diff --git a/chrome/installer/util/product.h b/chrome/installer/util/product.h index ae9cefa..f3d29e8 100644 --- a/chrome/installer/util/product.h +++ b/chrome/installer/util/product.h
@@ -60,10 +60,6 @@ return distribution_->GetType() == BrowserDistribution::CHROME_BROWSER; } - bool is_chrome_binaries() const { - return distribution_->GetType() == BrowserDistribution::CHROME_BINARIES; - } - bool HasOption(const std::wstring& option) const { return options_.find(option) != options_.end(); } @@ -94,10 +90,6 @@ // ClientState key. bool SetMsiMarker(bool system_install, bool set) const; - // Returns true if setup should create an entry in the Add/Remove list - // of installed applications. - bool ShouldCreateUninstallEntry() const; - // See ProductOperations::AddKeyFiles. void AddKeyFiles(std::vector<base::FilePath>* key_files) const;
diff --git a/chrome/installer/util/product_operations.h b/chrome/installer/util/product_operations.h index fb14283..ae4abe4 100644 --- a/chrome/installer/util/product_operations.h +++ b/chrome/installer/util/product_operations.h
@@ -68,12 +68,6 @@ bool set, ChannelInfo* channel_info) const = 0; - // Returns true if setup should create an entry in the Add/Remove list - // of installed applications for this product. This does not test for use of - // MSI; see InstallerState::is_msi. - virtual bool ShouldCreateUninstallEntry( - const std::set<base::string16>& options) const = 0; - // Modifies a ShellUtil::ShortcutProperties object by assigning default values // to unintialized members. virtual void AddDefaultShortcutProperties(
diff --git a/chrome/test/data/webui/settings/people_page_change_picture_test.js b/chrome/test/data/webui/settings/people_page_change_picture_test.js index acf646b6..5a20bf9 100644 --- a/chrome/test/data/webui/settings/people_page_change_picture_test.js +++ b/chrome/test/data/webui/settings/people_page_change_picture_test.js
@@ -201,6 +201,14 @@ expectEquals(firstDefaultImage, changePicture.selectedItem_); expectFalse(settingsCamera.cameraActive); expectTrue(discardControlBar.hidden); + + // Now verify that arrow keys actually select the new image. + browserProxy.resetResolver('selectDefaultImage'); + MockInteractions.pressAndReleaseKeyOn( + changePicture.selectedItem_, 39 /* right */); + return browserProxy.whenCalled('selectDefaultImage'); + }).then(function(args) { + expectEquals('chrome://foo/2.png', args[0]); }); });
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn index 09d5c64..58321a5 100644 --- a/components/metrics/BUILD.gn +++ b/components/metrics/BUILD.gn
@@ -325,6 +325,7 @@ "metrics_service_unittest.cc", "metrics_state_manager_unittest.cc", "net/net_metrics_log_uploader_unittest.cc", + "net/network_metrics_provider_unittest.cc", "persisted_logs_unittest.cc", "profiler/profiler_metrics_provider_unittest.cc", "profiler/tracking_synchronizer_unittest.cc", @@ -358,7 +359,10 @@ } if (is_chromeos) { - deps += [ "leak_detector:unit_tests" ] + deps += [ + "leak_detector:unit_tests", + "//chromeos", + ] } # iOS is not supported by the profiler and the ios-simulator bot chokes on
diff --git a/components/metrics/net/DEPS b/components/metrics/net/DEPS index f0349cc..df18a66 100644 --- a/components/metrics/net/DEPS +++ b/components/metrics/net/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+chromeos/dbus", "+chromeos/network", "+components/data_use_measurement/core", "+components/variations",
diff --git a/components/metrics/net/network_metrics_provider.cc b/components/metrics/net/network_metrics_provider.cc index aa83846b8..d392bf81 100644 --- a/components/metrics/net/network_metrics_provider.cc +++ b/components/metrics/net/network_metrics_provider.cc
@@ -9,6 +9,8 @@ #include <string> #include <vector> +#include "base/bind_helpers.h" +#include "base/callback_forward.h" #include "base/compiler_specific.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/sparse_histogram.h" @@ -18,6 +20,7 @@ #include "base/task_runner_util.h" #include "build/build_config.h" #include "net/base/net_errors.h" +#include "net/nqe/network_quality_estimator.h" #if defined(OS_CHROMEOS) #include "components/metrics/net/wifi_access_point_info_provider_chromeos.h" @@ -25,25 +28,145 @@ namespace metrics { +namespace { + +// Gets the network quality estimator from |network_quality_estimator_provider|, +// and provides it to the |callback|. +void GetAndSetNetworkQualityEstimator( + const base::Callback<void(net::NetworkQualityEstimator*)>& callback, + NetworkMetricsProvider::NetworkQualityEstimatorProvider* + network_quality_estimator_provider) { + callback.Run( + network_quality_estimator_provider->GetNetworkQualityEstimator()); +} + +} // namespace + +// Listens to the changes in the effective conection type. +class NetworkMetricsProvider::EffectiveConnectionTypeObserver + : public net::NetworkQualityEstimator::EffectiveConnectionTypeObserver { + public: + // |network_quality_estimator| is used to provide the network quality + // estimates. Guaranteed to be non-null. |callback| is run on + // |callback_task_runner|, and provides notifications about the changes in the + // effective connection type. + EffectiveConnectionTypeObserver( + base::Callback<void(net::EffectiveConnectionType)> callback, + const scoped_refptr<base::SequencedTaskRunner>& callback_task_runner) + : network_quality_estimator_(nullptr), + callback_(callback), + callback_task_runner_(callback_task_runner) { + DCHECK(callback_); + DCHECK(callback_task_runner_); + // |this| is initialized and used on the IO thread using + // |network_quality_task_runner_|. + thread_checker_.DetachFromThread(); + } + + ~EffectiveConnectionTypeObserver() override { + DCHECK(thread_checker_.CalledOnValidThread()); + if (network_quality_estimator_) + network_quality_estimator_->RemoveEffectiveConnectionTypeObserver(this); + } + + // Initializes |this| on IO thread using |network_quality_task_runner_|. This + // is the same thread on which |network_quality_estimator| lives. + void Init(net::NetworkQualityEstimator* network_quality_estimator) { + network_quality_estimator_ = network_quality_estimator; + if (network_quality_estimator_) + network_quality_estimator_->AddEffectiveConnectionTypeObserver(this); + } + + private: + // net::EffectiveConnectionTypeObserver: + void OnEffectiveConnectionTypeChanged( + net::EffectiveConnectionType type) override { + DCHECK(thread_checker_.CalledOnValidThread()); + callback_task_runner_->PostTask(FROM_HERE, base::Bind(callback_, type)); + } + + // Notifies |this| when there is a change in the effective connection type. + net::NetworkQualityEstimator* network_quality_estimator_; + + // Called when the effective connection type is changed. + base::Callback<void(net::EffectiveConnectionType)> callback_; + + // Task runner on which |callback_| is run. + scoped_refptr<base::SequencedTaskRunner> callback_task_runner_; + + base::ThreadChecker thread_checker_; + + DISALLOW_COPY_AND_ASSIGN(EffectiveConnectionTypeObserver); +}; + NetworkMetricsProvider::NetworkMetricsProvider(base::TaskRunner* io_task_runner) + : NetworkMetricsProvider(nullptr, io_task_runner) {} + +NetworkMetricsProvider::NetworkMetricsProvider( + std::unique_ptr<NetworkQualityEstimatorProvider> + network_quality_estimator_provider, + base::TaskRunner* io_task_runner) : io_task_runner_(io_task_runner), connection_type_is_ambiguous_(false), wifi_phy_layer_protocol_is_ambiguous_(false), wifi_phy_layer_protocol_(net::WIFI_PHY_LAYER_PROTOCOL_UNKNOWN), total_aborts_(0), total_codes_(0), + network_quality_estimator_provider_( + std::move(network_quality_estimator_provider)), + effective_connection_type_(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN), + effective_connection_type_is_ambiguous_(false), weak_ptr_factory_(this) { net::NetworkChangeNotifier::AddConnectionTypeObserver(this); connection_type_ = net::NetworkChangeNotifier::GetConnectionType(); ProbeWifiPHYLayerProtocol(); + + if (network_quality_estimator_provider_) { + network_quality_task_runner_ = + network_quality_estimator_provider_->GetTaskRunner(); + DCHECK(network_quality_task_runner_); + effective_connection_type_observer_.reset( + new EffectiveConnectionTypeObserver( + base::Bind( + &NetworkMetricsProvider::OnEffectiveConnectionTypeChanged, + base::Unretained(this)), + base::ThreadTaskRunnerHandle::Get())); + + // Get the network quality estimator and initialize + // |effective_connection_type_observer_| on the same task runner on which + // the network quality estimator lives. It is safe to use base::Unretained + // here since both |network_quality_estimator_provider_| and + // |effective_connection_type_observer_| are owned by |this|, and are + // deleted on the |network_quality_task_runner_|. + network_quality_task_runner_->PostTask( + FROM_HERE, + base::Bind(&GetAndSetNetworkQualityEstimator, + base::Bind(&EffectiveConnectionTypeObserver::Init, + base::Unretained( + effective_connection_type_observer_.get())), + network_quality_estimator_provider_.get())); + } } NetworkMetricsProvider::~NetworkMetricsProvider() { + DCHECK(thread_checker_.CalledOnValidThread()); net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this); + if (effective_connection_type_observer_ && + !network_quality_task_runner_->DeleteSoon( + FROM_HERE, effective_connection_type_observer_.release())) { + NOTREACHED() << " ECT observer was not deleted successfully"; + } + if (network_quality_estimator_provider_ && + !network_quality_task_runner_->DeleteSoon( + FROM_HERE, network_quality_estimator_provider_.release())) { + NOTREACHED() + << " Network quality estimate provider was not deleted successfully"; + } } void NetworkMetricsProvider::ProvideGeneralMetrics( ChromeUserMetricsExtension*) { + DCHECK(thread_checker_.CalledOnValidThread()); // ProvideGeneralMetrics is called on the main thread, at the time a metrics // record is being finalized. net::NetworkChangeNotifier::FinalizingMetricsLogRecord(); @@ -52,12 +175,14 @@ void NetworkMetricsProvider::ProvideSystemProfileMetrics( SystemProfileProto* system_profile) { + DCHECK(thread_checker_.CalledOnValidThread()); SystemProfileProto::Network* network = system_profile->mutable_network(); network->set_connection_type_is_ambiguous(connection_type_is_ambiguous_); network->set_connection_type(GetConnectionType()); network->set_wifi_phy_layer_protocol_is_ambiguous( wifi_phy_layer_protocol_is_ambiguous_); network->set_wifi_phy_layer_protocol(GetWifiPHYLayerProtocol()); + network->set_effective_connection_type(GetEffectiveConnectionType()); // Update the connection type. Note that this is necessary to set the network // type to "none" if there is no network connection for an entire UMA logging @@ -67,6 +192,7 @@ // Reset the "ambiguous" flags, since a new metrics log session has started. connection_type_is_ambiguous_ = false; wifi_phy_layer_protocol_is_ambiguous_ = false; + effective_connection_type_is_ambiguous_ = false; if (!wifi_access_point_info_provider_.get()) { #if defined(OS_CHROMEOS) @@ -86,6 +212,7 @@ void NetworkMetricsProvider::OnConnectionTypeChanged( net::NetworkChangeNotifier::ConnectionType type) { + DCHECK(thread_checker_.CalledOnValidThread()); // To avoid reporting an ambiguous connection type for users on flaky // connections, ignore transitions to the "none" state. Note that the // connection type is refreshed in ProvideSystemProfileMetrics() each time a @@ -106,6 +233,7 @@ SystemProfileProto::Network::ConnectionType NetworkMetricsProvider::GetConnectionType() const { + DCHECK(thread_checker_.CalledOnValidThread()); switch (connection_type_) { case net::NetworkChangeNotifier::CONNECTION_NONE: return SystemProfileProto::Network::CONNECTION_NONE; @@ -130,6 +258,7 @@ SystemProfileProto::Network::WifiPHYLayerProtocol NetworkMetricsProvider::GetWifiPHYLayerProtocol() const { + DCHECK(thread_checker_.CalledOnValidThread()); switch (wifi_phy_layer_protocol_) { case net::WIFI_PHY_LAYER_PROTOCOL_NONE: return SystemProfileProto::Network::WIFI_PHY_LAYER_PROTOCOL_NONE; @@ -150,7 +279,36 @@ return SystemProfileProto::Network::WIFI_PHY_LAYER_PROTOCOL_UNKNOWN; } +SystemProfileProto::Network::EffectiveConnectionType +NetworkMetricsProvider::GetEffectiveConnectionType() const { + DCHECK(thread_checker_.CalledOnValidThread()); + + if (effective_connection_type_is_ambiguous_) + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS; + + switch (effective_connection_type_) { + case net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; + case net::EFFECTIVE_CONNECTION_TYPE_OFFLINE: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_OFFLINE; + case net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_SLOW_2G; + case net::EFFECTIVE_CONNECTION_TYPE_2G: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_2G; + case net::EFFECTIVE_CONNECTION_TYPE_3G: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_3G; + case net::EFFECTIVE_CONNECTION_TYPE_4G: + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_4G; + case net::EFFECTIVE_CONNECTION_TYPE_LAST: + NOTREACHED(); + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; + } + NOTREACHED(); + return SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; +} + void NetworkMetricsProvider::ProbeWifiPHYLayerProtocol() { + DCHECK(thread_checker_.CalledOnValidThread()); PostTaskAndReplyWithResult( io_task_runner_, FROM_HERE, @@ -161,6 +319,7 @@ void NetworkMetricsProvider::OnWifiPHYLayerProtocolResult( net::WifiPHYLayerProtocol mode) { + DCHECK(thread_checker_.CalledOnValidThread()); if (wifi_phy_layer_protocol_ != net::WIFI_PHY_LAYER_PROTOCOL_UNKNOWN && mode != wifi_phy_layer_protocol_) { wifi_phy_layer_protocol_is_ambiguous_ = true; @@ -171,6 +330,7 @@ void NetworkMetricsProvider::WriteWifiAccessPointProto( const WifiAccessPointInfoProvider::WifiAccessPointInfo& info, SystemProfileProto::Network* network_proto) { + DCHECK(thread_checker_.CalledOnValidThread()); SystemProfileProto::Network::WifiAccessPoint* access_point_info = network_proto->mutable_access_point_info(); SystemProfileProto::Network::WifiAccessPoint::SecurityMode security = @@ -246,6 +406,7 @@ } void NetworkMetricsProvider::LogAggregatedMetrics() { + DCHECK(thread_checker_.CalledOnValidThread()); base::HistogramBase* error_codes = base::SparseHistogram::FactoryGet( "Net.ErrorCodesForMainFrame3", base::HistogramBase::kUmaTargetedHistogramFlag); @@ -263,4 +424,15 @@ } } +void NetworkMetricsProvider::OnEffectiveConnectionTypeChanged( + net::EffectiveConnectionType type) { + DCHECK(thread_checker_.CalledOnValidThread()); + if (effective_connection_type_ != type && + type != net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN && + effective_connection_type_ != net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN) { + effective_connection_type_is_ambiguous_ = true; + } + effective_connection_type_ = type; +} + } // namespace metrics
diff --git a/components/metrics/net/network_metrics_provider.h b/components/metrics/net/network_metrics_provider.h index da47689..2eccee04 100644 --- a/components/metrics/net/network_metrics_provider.h +++ b/components/metrics/net/network_metrics_provider.h
@@ -10,11 +10,17 @@ #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/metrics/histogram_base.h" +#include "base/threading/thread_checker.h" #include "components/metrics/metrics_provider.h" #include "components/metrics/net/wifi_access_point_info_provider.h" #include "components/metrics/proto/system_profile.pb.h" #include "net/base/network_change_notifier.h" #include "net/base/network_interfaces.h" +#include "net/nqe/effective_connection_type.h" + +namespace net { +class NetworkQualityEstimator; +} namespace metrics { @@ -24,12 +30,44 @@ : public MetricsProvider, public net::NetworkChangeNotifier::ConnectionTypeObserver { public: + // Class that provides |this| with the network quality estimator. + class NetworkQualityEstimatorProvider { + public: + virtual ~NetworkQualityEstimatorProvider() {} + + // Returns the network quality estimator. May be nullptr. + virtual net::NetworkQualityEstimator* GetNetworkQualityEstimator() = 0; + + // Returns the task runner on which |this| should be used and destroyed. + virtual scoped_refptr<base::SequencedTaskRunner> GetTaskRunner() = 0; + + protected: + NetworkQualityEstimatorProvider() {} + + private: + DISALLOW_COPY_AND_ASSIGN(NetworkQualityEstimatorProvider); + }; + // Creates a NetworkMetricsProvider, where |io_task_runner| is used to post // network info collection tasks. explicit NetworkMetricsProvider(base::TaskRunner* io_task_runner); + + // Creates a NetworkMetricsProvider, where |io_task_runner| is used to post + // network info collection tasks. |network_quality_estimator_provider| + // should be set if it is useful to attach the quality of the network to the + // metrics report. + NetworkMetricsProvider(std::unique_ptr<NetworkQualityEstimatorProvider> + network_quality_estimator_provider, + base::TaskRunner* io_task_runner); + ~NetworkMetricsProvider() override; private: + FRIEND_TEST_ALL_PREFIXES(NetworkMetricsProviderTest, EffectiveConnectionType); + + // Listens to the changes in the effective conection type. + class EffectiveConnectionTypeObserver; + // MetricsProvider: void ProvideGeneralMetrics(ChromeUserMetricsExtension* uma_proto) override; void ProvideSystemProfileMetrics(SystemProfileProto* system_profile) override; @@ -41,6 +79,8 @@ SystemProfileProto::Network::ConnectionType GetConnectionType() const; SystemProfileProto::Network::WifiPHYLayerProtocol GetWifiPHYLayerProtocol() const; + SystemProfileProto::Network::EffectiveConnectionType + GetEffectiveConnectionType() const; // Posts a call to net::GetWifiPHYLayerProtocol on the blocking pool. void ProbeWifiPHYLayerProtocol(); @@ -57,6 +97,10 @@ // Logs metrics that are functions of other metrics being uploaded. void LogAggregatedMetrics(); + // Notifies |this| that the effective connection type of the current network + // has changed to |type|. + void OnEffectiveConnectionTypeChanged(net::EffectiveConnectionType type); + // Task runner used for blocking file I/O. base::TaskRunner* io_task_runner_; @@ -79,6 +123,28 @@ base::HistogramBase::Count total_aborts_; base::HistogramBase::Count total_codes_; + // Provides the network quality estimator. May be null. + std::unique_ptr<NetworkQualityEstimatorProvider> + network_quality_estimator_provider_; + + // Listens to the changes in the effective connection type. Initialized and + // destroyed using |network_quality_task_runner_|. May be null. + std::unique_ptr<EffectiveConnectionTypeObserver> + effective_connection_type_observer_; + + // Task runner using which |effective_connection_type_observer_| is + // initialized and destroyed. May be null. + scoped_refptr<base::SequencedTaskRunner> network_quality_task_runner_; + + // Last known effective connection type. + net::EffectiveConnectionType effective_connection_type_; + + // True if |effective_connection_type_| changed during the lifetime of the + // log. + bool effective_connection_type_is_ambiguous_; + + base::ThreadChecker thread_checker_; + base::WeakPtrFactory<NetworkMetricsProvider> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(NetworkMetricsProvider);
diff --git a/components/metrics/net/network_metrics_provider_unittest.cc b/components/metrics/net/network_metrics_provider_unittest.cc new file mode 100644 index 0000000..a8b2c2a --- /dev/null +++ b/components/metrics/net/network_metrics_provider_unittest.cc
@@ -0,0 +1,114 @@ +// 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 "components/metrics/net/network_metrics_provider.h" + +#include "base/callback.h" +#include "base/macros.h" +#include "base/message_loop/message_loop.h" +#include "base/run_loop.h" +#include "base/threading/thread_task_runner_handle.h" +#include "components/metrics/proto/system_profile.pb.h" +#include "net/base/network_change_notifier.h" +#include "net/nqe/network_quality_estimator_test_util.h" +#include "testing/gtest/include/gtest/gtest.h" + +#if defined(OS_CHROMEOS) +#include "chromeos/dbus/dbus_thread_manager.h" +#include "chromeos/network/network_handler.h" +#endif // OS_CHROMEOS + +namespace metrics { + +namespace { + +class TestNetworkQualityEstimatorProvider + : public NetworkMetricsProvider::NetworkQualityEstimatorProvider { + public: + explicit TestNetworkQualityEstimatorProvider( + net::TestNetworkQualityEstimator* estimator) + : estimator_(estimator) {} + ~TestNetworkQualityEstimatorProvider() override {} + + private: + // NetworkMetricsProvider::NetworkQualityEstimatorProvider: + scoped_refptr<base::SequencedTaskRunner> GetTaskRunner() override { + return base::ThreadTaskRunnerHandle::Get(); + } + + net::NetworkQualityEstimator* GetNetworkQualityEstimator() override { + return estimator_; + } + + net::TestNetworkQualityEstimator* estimator_; + DISALLOW_COPY_AND_ASSIGN(TestNetworkQualityEstimatorProvider); +}; + +} // namespace + +// Verifies that the effective connection type is correctly set. +TEST(NetworkMetricsProviderTest, EffectiveConnectionType) { + base::MessageLoop loop(base::MessageLoop::TYPE_IO); + +#if defined(OS_CHROMEOS) + chromeos::DBusThreadManager::Initialize(); + chromeos::NetworkHandler::Initialize(); +#endif // OS_CHROMEOS + + net::TestNetworkQualityEstimator estimator; + std::unique_ptr<NetworkMetricsProvider::NetworkQualityEstimatorProvider> + estimator_provider(base::WrapUnique( + new TestNetworkQualityEstimatorProvider(&estimator))); + SystemProfileProto system_profile; + NetworkMetricsProvider network_metrics_provider( + std::move(estimator_provider), base::ThreadTaskRunnerHandle::Get().get()); + + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, + network_metrics_provider.effective_connection_type_); + network_metrics_provider.ProvideSystemProfileMetrics(&system_profile); + EXPECT_EQ(SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, + system_profile.network().effective_connection_type()); + + // Set RTT so that the effective connection type is computed as 2G. + estimator.set_recent_http_rtt(base::TimeDelta::FromMilliseconds(1500)); + estimator.set_start_time_null_http_rtt( + base::TimeDelta::FromMilliseconds(1500)); + + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN, + network_metrics_provider.effective_connection_type_); + // Running a request would cause the effective connection type to be computed + // as 2G, and observers to be notified. + estimator.RunOneRequest(); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_2G, + network_metrics_provider.effective_connection_type_); + network_metrics_provider.ProvideSystemProfileMetrics(&system_profile); + EXPECT_EQ(SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_2G, + system_profile.network().effective_connection_type()); + + // Set RTT so that the effective connection type is computed as SLOW_2G. + estimator.set_recent_http_rtt(base::TimeDelta::FromMilliseconds(3000)); + estimator.set_start_time_null_http_rtt( + base::TimeDelta::FromMilliseconds(3000)); + // Running a request would cause the effective connection type to be computed + // as SLOW_2G, and observers to be notified. + estimator.RunOneRequest(); + base::RunLoop().RunUntilIdle(); + EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, + network_metrics_provider.effective_connection_type_); + network_metrics_provider.ProvideSystemProfileMetrics(&system_profile); + // Effective connection type is set to ambiguous since the effective + // connection type changed from 2G to SLOW_2G during the lifetime of the log. + EXPECT_EQ(SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS, + system_profile.network().effective_connection_type()); + + // Getting the system profile again should return the actual effective + // connection type since the effective connection type did not change during + // the lifetime of the log. + network_metrics_provider.ProvideSystemProfileMetrics(&system_profile); + EXPECT_EQ(SystemProfileProto::Network::EFFECTIVE_CONNECTION_TYPE_SLOW_2G, + system_profile.network().effective_connection_type()); +} + +} // namespace metrics \ No newline at end of file
diff --git a/components/metrics/proto/system_profile.proto b/components/metrics/proto/system_profile.proto index c116a0a..3497529 100644 --- a/components/metrics/proto/system_profile.proto +++ b/components/metrics/proto/system_profile.proto
@@ -281,6 +281,7 @@ optional Hardware hardware = 6; // Information about the network connection. + // Next tag: 7 message Network { // Set to true if connection_type changed during the lifetime of the log. optional bool connection_type_is_ambiguous = 1; @@ -366,6 +367,27 @@ } // Information of the wireless AP that device is connected to. optional WifiAccessPoint access_point_info = 5; + + // Derived from net::NetworkQualityEstimator::EffectiveConnectionType + // translated through NetworkMetricsProvider::GetConnectionType. + enum EffectiveConnectionType { + EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0; + // Specifies that the connection_type changed during the lifetime of the + // log. + EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS = 1; + EFFECTIVE_CONNECTION_TYPE_OFFLINE = 2; + EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 3; + EFFECTIVE_CONNECTION_TYPE_2G = 4; + EFFECTIVE_CONNECTION_TYPE_3G = 5; + EFFECTIVE_CONNECTION_TYPE_4G = 6; + } + // The connection type according to net::NetworkQualityEstimator. + // EffectiveConnectionType is the connection type whose typical performance + // is most similar to the measured performance of the network in use. In + // many cases, the "effective" connection type and the actual type of + // connection in use are the same, but often a network connection performs + // significantly differently, usually worse, from its expected capabilities. + optional EffectiveConnectionType effective_connection_type = 6; } optional Network network = 13;
diff --git a/content/browser/browser_child_process_host_impl.cc b/content/browser/browser_child_process_host_impl.cc index 185c8e7..f4b000d 100644 --- a/content/browser/browser_child_process_host_impl.cc +++ b/content/browser/browser_child_process_host_impl.cc
@@ -373,18 +373,19 @@ void BrowserChildProcessHostImpl::OnBadMessageReceived( const IPC::Message& message) { - TerminateOnBadMessageReceived(message.type()); + std::string log_message = + base::StringPrintf("Bad message received of type: %u", message.type()); + TerminateOnBadMessageReceived(log_message); } -void BrowserChildProcessHostImpl::TerminateOnBadMessageReceived(uint32_t type) { +void BrowserChildProcessHostImpl::TerminateOnBadMessageReceived( + const std::string& error) { HistogramBadMessageTerminated(data_.process_type); if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kDisableKillAfterBadIPC)) { return; } - LOG(ERROR) << "Terminating child process for bad IPC message of type " - << type; - + LOG(ERROR) << "Terminating child process for bad IPC message: " << error; // Create a memory dump. This will contain enough stack frames to work out // what the bad message was. base::debug::DumpWithoutCrashing();
diff --git a/content/browser/browser_child_process_host_impl.h b/content/browser/browser_child_process_host_impl.h index 9975dc1..ff9c3291 100644 --- a/content/browser/browser_child_process_host_impl.h +++ b/content/browser/browser_child_process_host_impl.h
@@ -92,9 +92,9 @@ void OnChannelError() override; void OnBadMessageReceived(const IPC::Message& message) override; - // Terminates the process and logs an error after a bad message was received - // from the child process. - void TerminateOnBadMessageReceived(uint32_t type); + // Terminates the process and logs a stack trace after a bad message was + // received from the child process. + void TerminateOnBadMessageReceived(const std::string& error); // Removes this host from the host list. Calls ChildProcessHost::ForceShutdown void ForceShutdown();
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc index b6ead8eb..b434c7d 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc
@@ -691,6 +691,7 @@ void GpuProcessHost::OnAcceleratedSurfaceCreatedChildWindow( gpu::SurfaceHandle parent_handle, gpu::SurfaceHandle window_handle) { + constexpr char kBadMessageError[] = "Bad parenting request from gpu process."; if (!in_process_) { DCHECK(process_); { @@ -698,8 +699,7 @@ DWORD thread_id = GetWindowThreadProcessId(parent_handle, &process_id); if (!thread_id || process_id != ::GetCurrentProcessId()) { - process_->TerminateOnBadMessageReceived( - GpuHostMsg_AcceleratedSurfaceCreatedChildWindow::ID); + process_->TerminateOnBadMessageReceived(kBadMessageError); return; } } @@ -709,8 +709,7 @@ DWORD thread_id = GetWindowThreadProcessId(window_handle, &process_id); if (!thread_id || process_id != process_->GetProcess().Pid()) { - process_->TerminateOnBadMessageReceived( - GpuHostMsg_AcceleratedSurfaceCreatedChildWindow::ID); + process_->TerminateOnBadMessageReceived(kBadMessageError); return; } } @@ -718,8 +717,7 @@ if (!gfx::RenderingWindowManager::GetInstance()->RegisterChild( parent_handle, window_handle)) { - process_->TerminateOnBadMessageReceived( - GpuHostMsg_AcceleratedSurfaceCreatedChildWindow::ID); + process_->TerminateOnBadMessageReceived(kBadMessageError); } } #endif
diff --git a/content/browser/media/capture/desktop_capture_device_aura_unittest.cc b/content/browser/media/capture/desktop_capture_device_aura_unittest.cc index 2cb5b47..e7e5668 100644 --- a/content/browser/media/capture/desktop_capture_device_aura_unittest.cc +++ b/content/browser/media/capture/desktop_capture_device_aura_unittest.cc
@@ -73,9 +73,13 @@ base::TimeDelta timestamp) override { DoOnIncomingCapturedBuffer(); } - void OnIncomingCapturedVideoFrame( + void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { + const media::VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const media::VideoFrameMetadata& additional_metadata) override { DoOnIncomingCapturedVideoFrame(); } std::unique_ptr<Buffer> ResurrectLastOutputBuffer(
diff --git a/content/browser/media/capture/desktop_capture_device_unittest.cc b/content/browser/media/capture/desktop_capture_device_unittest.cc index 4fe54c08..0d19dec 100644 --- a/content/browser/media/capture/desktop_capture_device_unittest.cc +++ b/content/browser/media/capture/desktop_capture_device_unittest.cc
@@ -92,9 +92,13 @@ base::TimeDelta timestamp) override { DoOnIncomingCapturedBuffer(); } - void OnIncomingCapturedVideoFrame( - std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { + void OnIncomingCapturedBufferExt( + std::unique_ptr<Buffer> buffer, + const media::VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const media::VideoFrameMetadata& additional_metadata) override { DoOnIncomingCapturedVideoFrame(); } std::unique_ptr<Buffer> ResurrectLastOutputBuffer(
diff --git a/content/browser/media/capture/screen_capture_device_android_unittest.cc b/content/browser/media/capture/screen_capture_device_android_unittest.cc index 421d621..114123e 100644 --- a/content/browser/media/capture/screen_capture_device_android_unittest.cc +++ b/content/browser/media/capture/screen_capture_device_android_unittest.cc
@@ -50,9 +50,13 @@ base::TimeDelta timestamp) override { DoOnIncomingCapturedBuffer(); } - void OnIncomingCapturedVideoFrame( + void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { + const media::VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const media::VideoFrameMetadata& additional_metadata) override { DoOnIncomingCapturedVideoFrame(); } std::unique_ptr<Buffer> ResurrectLastOutputBuffer(
diff --git a/content/browser/media/capture/web_contents_video_capture_device_unittest.cc b/content/browser/media/capture/web_contents_video_capture_device_unittest.cc index f6abb656..018c961 100644 --- a/content/browser/media/capture/web_contents_video_capture_device_unittest.cc +++ b/content/browser/media/capture/web_contents_video_capture_device_unittest.cc
@@ -270,27 +270,32 @@ DoOnIncomingCapturedBuffer(); } - void OnIncomingCapturedVideoFrame( - std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { - EXPECT_FALSE(frame->visible_rect().IsEmpty()); - EXPECT_EQ(media::PIXEL_FORMAT_I420, frame->format()); - double frame_rate = 0; - EXPECT_TRUE( - frame->metadata()->GetDouble(media::VideoFrameMetadata::FRAME_RATE, - &frame_rate)); - EXPECT_EQ(kTestFramesPerSecond, frame_rate); + void OnIncomingCapturedBufferExt( + std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer, + const media::VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const media::VideoFrameMetadata& additional_metadata) override { + EXPECT_FALSE(visible_rect.IsEmpty()); + EXPECT_EQ(media::PIXEL_FORMAT_I420, format.pixel_format); + EXPECT_EQ(kTestFramesPerSecond, format.frame_rate); // TODO(miu): We just look at the center pixel presently, because if the // analysis is too slow, the backlog of frames will grow without bound and // trouble erupts. http://crbug.com/174519 using media::VideoFrame; - const gfx::Point center = frame->visible_rect().CenterPoint(); + auto frame = VideoFrame::WrapExternalSharedMemory( + media::PIXEL_FORMAT_I420, format.frame_size, visible_rect, + format.frame_size, static_cast<uint8_t*>(buffer->data()), + buffer->mapped_size(), base::SharedMemory::NULLHandle(), 0u, + base::TimeDelta()); + const gfx::Point center = visible_rect.CenterPoint(); const int center_offset_y = (frame->stride(VideoFrame::kYPlane) * center.y()) + center.x(); const int center_offset_uv = (frame->stride(VideoFrame::kUPlane) * (center.y() / 2)) + - (center.x() / 2); + (center.x() / 2); report_callback_.Run( SkColorSetRGB(frame->data(VideoFrame::kYPlane)[center_offset_y], frame->data(VideoFrame::kUPlane)[center_offset_uv],
diff --git a/content/browser/renderer_host/media/video_capture_controller_unittest.cc b/content/browser/renderer_host/media/video_capture_controller_unittest.cc index e9e59c4..9990d32d 100644 --- a/content/browser/renderer_host/media/video_capture_controller_unittest.cc +++ b/content/browser/renderer_host/media/video_capture_controller_unittest.cc
@@ -160,19 +160,6 @@ void TearDown() override { base::RunLoop().RunUntilIdle(); } - scoped_refptr<media::VideoFrame> WrapBuffer( - gfx::Size dimensions, - uint8_t* data, - media::VideoPixelFormat format = media::PIXEL_FORMAT_I420) { - scoped_refptr<media::VideoFrame> video_frame = - media::VideoFrame::WrapExternalSharedMemory( - format, dimensions, gfx::Rect(dimensions), dimensions, data, - media::VideoFrame::AllocationSize(format, dimensions), - base::SharedMemory::NULLHandle(), 0u, base::TimeDelta()); - EXPECT_TRUE(video_frame); - return video_frame; - } - TestBrowserThreadBundle bundle_; std::unique_ptr<MockVideoCaptureControllerEventHandler> client_a_; std::unique_ptr<MockVideoCaptureControllerEventHandler> client_b_; @@ -180,6 +167,9 @@ std::unique_ptr<media::VideoCaptureDevice::Client> device_client_; MockFrameBufferPool* mock_frame_receiver_observer_; MockConsumerFeedbackObserver* mock_consumer_feedback_observer_; + const float arbitrary_frame_rate_ = 10.0f; + const base::TimeTicks arbitrary_reference_time_ = base::TimeTicks(); + const base::TimeDelta arbitrary_timestamp_ = base::TimeDelta(); private: DISALLOW_COPY_AND_ASSIGN(VideoCaptureControllerTest); @@ -299,19 +289,13 @@ media::VideoCaptureParams session_1 = session_100; - const gfx::Size capture_resolution(444, 200); - - // The device format needn't match the VideoCaptureParams (the camera can do - // what it wants). Pick something random. - media::VideoCaptureFormat device_format( - gfx::Size(10, 10), 25, media::PIXEL_FORMAT_RGB24); + media::VideoCaptureFormat device_format(gfx::Size(444, 200), 25, format); const VideoCaptureControllerID client_a_route_1(0xa1a1a1a1); const VideoCaptureControllerID client_a_route_2(0xa2a2a2a2); const VideoCaptureControllerID client_b_route_1(0xb1b1b1b1); const VideoCaptureControllerID client_b_route_2(0xb2b2b2b2); - // Start with two clients. controller_->AddClient(client_a_route_1, client_a_.get(), 100, @@ -332,8 +316,9 @@ const int arbitrary_frame_feedback_id = 101; ASSERT_EQ(0.0, device_client_->GetBufferPoolUtilization()); std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( - device_client_->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id)); ASSERT_TRUE(buffer.get()); ASSERT_EQ(1.0 / kPoolSize, device_client_->GetBufferPoolUtilization()); @@ -341,26 +326,24 @@ { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)).Times(1); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_1, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_1, device_format.frame_size)) .Times(1); } { InSequence s; EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_1)).Times(1); - EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_1, capture_resolution)) + EXPECT_CALL(*client_b_, + DoBufferReady(client_b_route_1, device_format.frame_size)) .Times(1); } { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2)).Times(1); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_2, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_2, device_format.frame_size)) .Times(1); } - scoped_refptr<media::VideoFrame> video_frame = WrapBuffer( - capture_resolution, static_cast<uint8_t*>(buffer->data()), format); - ASSERT_TRUE(video_frame); - ASSERT_FALSE(video_frame->metadata()->HasKey( - media::VideoFrameMetadata::RESOURCE_UTILIZATION)); client_a_->resource_utilization_ = 0.5; client_b_->resource_utilization_ = -1.0; { @@ -376,9 +359,10 @@ .Times(1); } - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer), video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); @@ -391,17 +375,14 @@ // delay. This shouldn't affect anything. const int arbitrary_frame_feedback_id_2 = 102; std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer2 = - device_client_->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id_2); ASSERT_TRUE(buffer2.get()); memset(buffer2->data(), buffer_no++, buffer2->mapped_size()); - video_frame = WrapBuffer(capture_resolution, - static_cast<uint8_t*>(buffer2->data()), format); client_a_->resource_utilization_ = 0.5; client_b_->resource_utilization_ = 3.14; - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); // Expect VideoCaptureController to call the load observer with a // resource utilization of 3.14 (the largest of all reported values). { @@ -418,25 +399,31 @@ .Times(1); } - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer2), video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer2), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); // The buffer should be delivered to the clients in any order. { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)).Times(1); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_1, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_1, device_format.frame_size)) .Times(1); } { InSequence s; EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_1)).Times(1); - EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_1, capture_resolution)) + EXPECT_CALL(*client_b_, + DoBufferReady(client_b_route_1, device_format.frame_size)) .Times(1); } { InSequence s; EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2)).Times(1); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_2, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_2, device_format.frame_size)) .Times(1); } base::RunLoop().RunUntilIdle(); @@ -456,42 +443,45 @@ for (int i = 0; i < kPoolSize; i++) { const int arbitrary_frame_feedback_id = 200 + i; std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer = - device_client_->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id); ASSERT_TRUE(buffer.get()); memset(buffer->data(), buffer_no++, buffer->mapped_size()); - video_frame = WrapBuffer(capture_resolution, - static_cast<uint8_t*>(buffer->data()), format); - ASSERT_TRUE(video_frame); - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer), - video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); } // ReserveOutputBuffer ought to fail now, because the pool is depleted. ASSERT_FALSE(device_client_ - ->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + ->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id) .get()); // The new client needs to be notified of the creation of |kPoolSize| buffers; // the old clients only |kPoolSize - 2|. EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2)).Times(kPoolSize); - EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2, capture_resolution)) + EXPECT_CALL(*client_b_, + DoBufferReady(client_b_route_2, device_format.frame_size)) .Times(kPoolSize); EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)) .Times(kPoolSize - 2); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_1, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_1, device_format.frame_size)) .Times(kPoolSize); EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_2)) .Times(kPoolSize - 2); - EXPECT_CALL(*client_a_, DoBufferReady(client_a_route_2, capture_resolution)) + EXPECT_CALL(*client_a_, + DoBufferReady(client_a_route_2, device_format.frame_size)) .Times(kPoolSize); EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_1)) .Times(kPoolSize - 2); - EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_1, capture_resolution)) + EXPECT_CALL(*client_b_, + DoBufferReady(client_b_route_1, device_format.frame_size)) .Times(kPoolSize); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); @@ -505,21 +495,21 @@ controller_->StopSession(300); // Queue up another buffer. std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer3 = - device_client_->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id); ASSERT_TRUE(buffer3.get()); memset(buffer3->data(), buffer_no++, buffer3->mapped_size()); - video_frame = WrapBuffer(capture_resolution, - static_cast<uint8_t*>(buffer3->data()), format); - ASSERT_TRUE(video_frame); - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer3), video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer3), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer4 = - device_client_->ReserveOutputBuffer(capture_resolution, format, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id); { // Kill A2 via session close (posts a task to disconnect, but A2 must not @@ -529,15 +519,14 @@ } ASSERT_TRUE(buffer4.get()); memset(buffer4->data(), buffer_no++, buffer4->mapped_size()); - video_frame = WrapBuffer(capture_resolution, - static_cast<uint8_t*>(buffer4->data()), format); - ASSERT_TRUE(video_frame); - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer4), video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer4), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); // B2 is the only client left, and is the only one that should // get the buffer. - EXPECT_CALL(*client_b_, DoBufferReady(client_b_route_2, capture_resolution)) + EXPECT_CALL(*client_b_, + DoBufferReady(client_b_route_2, device_format.frame_size)) .Times(2); base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); @@ -576,18 +565,19 @@ base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_b_.get()); - const int arbitrary_frame_feedback_id = 101; + media::VideoCaptureFormat device_format( + capture_resolution, arbitrary_frame_rate_, media::PIXEL_FORMAT_I420, + media::PIXEL_STORAGE_CPU); + const int arbitrary_frame_feedback_id = 101; std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( - device_client_->ReserveOutputBuffer( - capture_resolution, media::PIXEL_FORMAT_I420, - media::PIXEL_STORAGE_CPU, arbitrary_frame_feedback_id)); - ASSERT_TRUE(buffer.get()); - scoped_refptr<media::VideoFrame> video_frame = - WrapBuffer(capture_resolution, static_cast<uint8_t*>(buffer->data())); - ASSERT_TRUE(video_frame); - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer), video_frame); + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, + arbitrary_frame_feedback_id)); + device_client_->OnIncomingCapturedBuffer(std::move(buffer), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); base::RunLoop().RunUntilIdle(); } @@ -605,8 +595,6 @@ // Start with one client. controller_->AddClient(route_id, client_a_.get(), 100, session_100); - media::VideoCaptureFormat device_format( - gfx::Size(10, 10), 25, media::PIXEL_FORMAT_ARGB); // Start the device. Then, before the first buffer, signal an error and // deliver the buffer. The error should be propagated to clients; the buffer @@ -614,21 +602,21 @@ base::RunLoop().RunUntilIdle(); Mock::VerifyAndClearExpectations(client_a_.get()); - const gfx::Size dims(320, 240); + media::VideoCaptureFormat device_format( + gfx::Size(10, 10), arbitrary_frame_rate_, media::PIXEL_FORMAT_I420); const int arbitrary_frame_feedback_id = 101; std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( - device_client_->ReserveOutputBuffer(dims, media::PIXEL_FORMAT_I420, - media::PIXEL_STORAGE_CPU, + device_client_->ReserveOutputBuffer(device_format.frame_size, + device_format.pixel_format, + device_format.pixel_storage, arbitrary_frame_feedback_id)); ASSERT_TRUE(buffer.get()); - scoped_refptr<media::VideoFrame> video_frame = - WrapBuffer(dims, static_cast<uint8_t*>(buffer->data())); - ASSERT_TRUE(video_frame); device_client_->OnError(FROM_HERE, "Test Error"); - video_frame->metadata()->SetTimeTicks( - media::VideoFrameMetadata::REFERENCE_TIME, base::TimeTicks()); - device_client_->OnIncomingCapturedVideoFrame(std::move(buffer), video_frame); + device_client_->OnIncomingCapturedBuffer(std::move(buffer), + device_format, + arbitrary_reference_time_, + arbitrary_timestamp_); EXPECT_CALL(*client_a_, DoError(route_id)).Times(1); base::RunLoop().RunUntilIdle();
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc index 43a660e2..3edb052 100644 --- a/content/renderer/service_worker/service_worker_context_client.cc +++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -30,6 +30,7 @@ #include "content/child/service_worker/web_service_worker_registration_impl.h" #include "content/child/thread_safe_sender.h" #include "content/child/web_data_consumer_handle_impl.h" +#include "content/child/web_url_loader_impl.h" #include "content/child/webmessageportchannel_impl.h" #include "content/common/devtools_messages.h" #include "content/common/message_port_messages.h" @@ -54,6 +55,7 @@ #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" #include "third_party/WebKit/public/platform/WebString.h" +#include "third_party/WebKit/public/platform/WebURLResponse.h" #include "third_party/WebKit/public/platform/modules/notifications/WebNotificationData.h" #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerClientQueryOptions.h" #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerError.h" @@ -112,6 +114,18 @@ } }; +ServiceWorkerStatusCode EventResultToStatus( + blink::WebServiceWorkerEventResult result) { + switch (result) { + case blink::WebServiceWorkerEventResultCompleted: + return SERVICE_WORKER_OK; + case blink::WebServiceWorkerEventResultRejected: + return SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED; + } + NOTREACHED() << "Got invalid result: " << result; + return SERVICE_WORKER_ERROR_FAILED; +} + void SendPostMessageToClientOnMainThread( ThreadSafeSender* sender, int routing_id, @@ -258,22 +272,11 @@ mojom::DownloadedTempFilePtr downloaded_file) override { DCHECK(!response_); DCHECK(!downloaded_file); - response_ = base::MakeUnique<blink::WebServiceWorkerResponse>(); - response_->setURLList(std::vector<blink::WebURL>({url_})); - DCHECK(response_head.headers); - response_->setStatus(response_head.headers->response_code()); - response_->setStatusText( - blink::WebString::fromUTF8(response_head.headers->GetStatusText())); - response_->setResponseType(blink::WebServiceWorkerResponseTypeBasic); - size_t iter = 0; - std::string header_name; - std::string header_value; - while (response_head.headers->EnumerateHeaderLines(&iter, &header_name, - &header_value)) { - response_->appendHeader(blink::WebString::fromUTF8(header_name), - blink::WebString::fromUTF8(header_value)); - } - response_->setResponseTime(response_head.response_time.ToInternalValue()); + response_ = base::MakeUnique<blink::WebURLResponse>(); + // TODO(horo): Set report_security_info to true when DevTools is attached. + const bool report_security_info = false; + WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), + report_security_info); MaybeReportResponseToClient(); } @@ -343,7 +346,7 @@ mojom::URLLoaderPtr url_loader_; mojo::Binding<mojom::URLLoaderClient> binding_; - std::unique_ptr<blink::WebServiceWorkerResponse> response_; + std::unique_ptr<blink::WebURLResponse> response_; mojo::ScopedDataPipeConsumerHandle body_; bool result_reported_ = false; }; @@ -683,13 +686,8 @@ const DispatchExtendableMessageEventCallback* callback = context_->message_event_callbacks.Lookup(request_id); DCHECK(callback); - if (result == blink::WebServiceWorkerEventResultCompleted) { - callback->Run(SERVICE_WORKER_OK, - base::Time::FromDoubleT(event_dispatch_time)); - } else { - callback->Run(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, - base::Time::FromDoubleT(event_dispatch_time)); - } + callback->Run(EventResultToStatus(result), + base::Time::FromDoubleT(event_dispatch_time)); context_->message_event_callbacks.Remove(request_id); } @@ -734,12 +732,8 @@ } const FetchCallback* callback = context_->fetch_event_callbacks.Lookup(fetch_event_id); - if (!callback) - return; - - callback->Run(result == blink::WebServiceWorkerEventResultCompleted - ? SERVICE_WORKER_OK - : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, + DCHECK(callback); + callback->Run(EventResultToStatus(result), base::Time::FromDoubleT(event_dispatch_time)); context_->fetch_event_callbacks.Remove(fetch_event_id); } @@ -777,15 +771,9 @@ double event_dispatch_time) { const SyncCallback* callback = context_->sync_event_callbacks.Lookup(request_id); - if (!callback) - return; - if (result == blink::WebServiceWorkerEventResultCompleted) { - callback->Run(SERVICE_WORKER_OK, - base::Time::FromDoubleT(event_dispatch_time)); - } else { - callback->Run(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, - base::Time::FromDoubleT(event_dispatch_time)); - } + DCHECK(callback); + callback->Run(EventResultToStatus(result), + base::Time::FromDoubleT(event_dispatch_time)); context_->sync_event_callbacks.Remove(request_id); } @@ -1266,7 +1254,7 @@ void ServiceWorkerContextClient::OnNavigationPreloadResponse( int fetch_event_id, - std::unique_ptr<blink::WebServiceWorkerResponse> response, + std::unique_ptr<blink::WebURLResponse> response, std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle) { proxy_->onNavigationPreloadResponse(fetch_event_id, std::move(response), std::move(data_consumer_handle));
diff --git a/content/renderer/service_worker/service_worker_context_client.h b/content/renderer/service_worker/service_worker_context_client.h index 4bbcc32..b11dfec2 100644 --- a/content/renderer/service_worker/service_worker_context_client.h +++ b/content/renderer/service_worker/service_worker_context_client.h
@@ -45,6 +45,7 @@ class WebServiceWorkerContextProxy; class WebServiceWorkerProvider; class WebServiceWorkerResponse; +class WebURLResponse; } namespace IPC { @@ -266,7 +267,7 @@ void OnNavigationPreloadResponse( int fetch_event_id, - std::unique_ptr<blink::WebServiceWorkerResponse> response, + std::unique_ptr<blink::WebURLResponse> response, std::unique_ptr<blink::WebDataConsumerHandle> data_consumer_handle); void OnNavigationPreloadError( int fetch_event_id,
diff --git a/content/test/gpu/generate_buildbot_json.py b/content/test/gpu/generate_buildbot_json.py index 9399235..fca3765 100755 --- a/content/test/gpu/generate_buildbot_json.py +++ b/content/test/gpu/generate_buildbot_json.py
@@ -54,7 +54,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, ], 'build_config': 'Release', @@ -65,7 +65,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, ], 'build_config': 'Debug', @@ -323,7 +323,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, ], 'build_config': 'Release', @@ -334,7 +334,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, ], 'build_config': 'Debug', @@ -433,7 +433,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, { 'gpu': '1002:6821', @@ -690,7 +690,7 @@ 'swarming_dimensions': [ { 'gpu': '8086:0a2e', - 'os': 'Mac-10.10' + 'os': 'Mac-10.12' }, ], 'build_config': 'Release',
diff --git a/content/test/gpu/gpu_tests/pixel_expectations.py b/content/test/gpu/gpu_tests/pixel_expectations.py index ff3fb67..e072811 100644 --- a/content/test/gpu/gpu_tests/pixel_expectations.py +++ b/content/test/gpu/gpu_tests/pixel_expectations.py
@@ -48,3 +48,9 @@ # TODO(kainino): remove this once golden images are generated self.Fail('Pixel_WebGLTransparentGreenTriangle_NoAlpha_ImplicitClear', bug=666259) + + # TODO(xlai): check if the new reference image has blurring edge between + # red rectangle and green rectangle; if so, delete this. + self.Fail('Pixel_OffscreenCanvas2DResizeOnWorker', bug=676666) + self.Fail('Pixel_OffscreenCanvasAccelerated2D', bug=676666) + self.Fail('Pixel_OffscreenCanvasAccelerated2DWorker', bug=676666)
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py index b88272b9..5cfb6283 100644 --- a/content/test/gpu/gpu_tests/pixel_test_pages.py +++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -336,14 +336,14 @@ 'pixel_offscreenCanvas_2d_commit_main.html', base_name + '_OffscreenCanvasAccelerated2D', test_rect=[0, 0, 300, 300], - revision=2, + revision=3, browser_args=browser_args), PixelTestPage( 'pixel_offscreenCanvas_2d_commit_worker.html', base_name + '_OffscreenCanvasAccelerated2DWorker', test_rect=[0, 0, 300, 300], - revision=2, + revision=3, browser_args=browser_args), PixelTestPage( @@ -378,7 +378,7 @@ 'pixel_offscreenCanvas_2d_resize_on_worker.html', base_name + '_OffscreenCanvas2DResizeOnWorker', test_rect=[0, 0, 200, 200], - revision=1, + revision=2, browser_args=browser_args), PixelTestPage(
diff --git a/content/test/gpu/gpu_tests/test_expectations.py b/content/test/gpu/gpu_tests/test_expectations.py index 528153c..d97a9a3a 100644 --- a/content/test/gpu/gpu_tests/test_expectations.py +++ b/content/test/gpu/gpu_tests/test_expectations.py
@@ -9,7 +9,7 @@ # # Operating systems: # win, xp, vista, win7, win8, win10, mac, leopard, snowleopard, -# lion, mountainlion, mavericks, yosemite, linux, chromeos, +# lion, mountainlion, mavericks, yosemite, sierra, linux, chromeos, # android # # Browser types: @@ -21,7 +21,7 @@ WIN_CONDITIONS = ['xp', 'vista', 'win7', 'win8', 'win10'] MAC_CONDITIONS = ['leopard', 'snowleopard', 'lion', 'mountainlion', - 'mavericks', 'yosemite'] + 'mavericks', 'yosemite', 'sierra'] OS_CONDITIONS = ['win', 'mac', 'linux', 'chromeos', 'android'] + \ WIN_CONDITIONS + MAC_CONDITIONS @@ -74,7 +74,8 @@ Operating systems: win, xp, vista, win7, mac, leopard, snowleopard, lion, - mountainlion, mavericks, yosemite, linux, chromeos, android + mountainlion, mavericks, yosemite, sierra, linux, chromeos, + android Browser types: android-webview-shell, android-content-shell, android-chromium, @@ -83,6 +84,7 @@ Sample usage in SetExpectations in subclasses: self.Fail('gl-enable-vertex-attrib.html', ['mac', 'release'], bug=123) + """ cl = condition.lower() if cl in OS_CONDITIONS:
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py index 5f7b4ddb..0b41550 100644 --- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py +++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -430,6 +430,32 @@ ['mac', ('amd', 0x679e)], bug=483282) # Mac Intel + + self.Fail( + 'conformance2/textures/canvas/tex-2d-rgb9_e5-rgb-float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/canvas/tex-2d-rgb9_e5-rgb-half_float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/canvas/tex-3d-rgb9_e5-rgb-float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/canvas/tex-3d-rgb9_e5-rgb-half_float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/webgl_canvas/tex-2d-rgb9_e5-rgb-float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/webgl_canvas/tex-2d-rgb9_e5-rgb-half_float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/webgl_canvas/tex-3d-rgb9_e5-rgb-float.html', + ['sierra', 'intel'], bug=663188) + self.Fail( + 'conformance2/textures/webgl_canvas/tex-3d-rgb9_e5-rgb-half_float.html', + ['sierra', 'intel'], bug=663188) + self.Fail('deqp/functional/gles3/fbomultisample*', ['mac', 'intel'], bug=641209) self.Fail('deqp/functional/gles3/texturefiltering/2d_combinations_01.html',
diff --git a/media/capture/content/thread_safe_capture_oracle.cc b/media/capture/content/thread_safe_capture_oracle.cc index 9fc8f93..ad869b7d 100644 --- a/media/capture/content/thread_safe_capture_oracle.cc +++ b/media/capture/content/thread_safe_capture_oracle.cc
@@ -211,26 +211,33 @@ base::AutoLock guard(lock_); - if (oracle_.CompleteCapture(frame_number, success, &reference_time)) { - TRACE_EVENT_INSTANT0("gpu.capture", "CaptureSucceeded", - TRACE_EVENT_SCOPE_THREAD); + if (!oracle_.CompleteCapture(frame_number, success, &reference_time)) + return; - if (!client_) - return; // Capture is stopped. + TRACE_EVENT_INSTANT0("gpu.capture", "CaptureSucceeded", + TRACE_EVENT_SCOPE_THREAD); - frame->metadata()->SetDouble(VideoFrameMetadata::FRAME_RATE, - params_.requested_format.frame_rate); - frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, - capture_begin_time); - frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_END_TIME, - base::TimeTicks::Now()); - frame->metadata()->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, - estimated_frame_duration); - frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, - reference_time); + if (!client_) + return; // Capture is stopped. - client_->OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame)); - } + frame->metadata()->SetDouble(VideoFrameMetadata::FRAME_RATE, + params_.requested_format.frame_rate); + frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, + capture_begin_time); + frame->metadata()->SetTimeTicks(VideoFrameMetadata::CAPTURE_END_TIME, + base::TimeTicks::Now()); + frame->metadata()->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, + estimated_frame_duration); + frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, + reference_time); + + DCHECK(frame->IsMappable()); + media::VideoCaptureFormat format(frame->coded_size(), + params_.requested_format.frame_rate, + frame->format(), media::PIXEL_STORAGE_CPU); + client_->OnIncomingCapturedBufferExt( + std::move(buffer), format, reference_time, frame->timestamp(), + frame->visible_rect(), *frame->metadata()); } void ThreadSafeCaptureOracle::OnConsumerReportingUtilization(
diff --git a/media/capture/video/fake_video_capture_device_unittest.cc b/media/capture/video/fake_video_capture_device_unittest.cc index c9bbae9..21563c0 100644 --- a/media/capture/video/fake_video_capture_device_unittest.cc +++ b/media/capture/video/fake_video_capture_device_unittest.cc
@@ -101,11 +101,13 @@ base::TimeDelta timestamp) override { frame_cb_.Run(format); } - void OnIncomingCapturedVideoFrame( + void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { - VideoCaptureFormat format(frame->natural_size(), 30.0, - PIXEL_FORMAT_I420); + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) override { frame_cb_.Run(format); } std::unique_ptr<Buffer> ResurrectLastOutputBuffer(
diff --git a/media/capture/video/linux/camera_facing_chromeos.cc b/media/capture/video/linux/camera_facing_chromeos.cc index c8aedbd..ad633d8 100644 --- a/media/capture/video/linux/camera_facing_chromeos.cc +++ b/media/capture/video/linux/camera_facing_chromeos.cc
@@ -170,7 +170,10 @@ DLOG(ERROR) << "model_id is empty"; continue; } - model_id_to_camera_id_[value.as_string()] = camera_id; + std::string model_id = value.as_string(); + std::transform(model_id.begin(), model_id.end(), model_id.begin(), + ::tolower); + model_id_to_camera_id_[model_id] = camera_id; } else if (sub_keys.size() == 3 && sub_keys[2] == kUsbPath) { if (value.empty()) { DLOG(ERROR) << "usb_path is empty";
diff --git a/media/capture/video/linux/v4l2_capture_delegate_unittest.cc b/media/capture/video/linux/v4l2_capture_delegate_unittest.cc index ad67ae5..3febf4456 100644 --- a/media/capture/video/linux/v4l2_capture_delegate_unittest.cc +++ b/media/capture/video/linux/v4l2_capture_delegate_unittest.cc
@@ -170,9 +170,13 @@ DoOnIncomingCapturedBuffer(); } MOCK_METHOD0(DoOnIncomingCapturedBuffer, void(void)); - void OnIncomingCapturedVideoFrame( + void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override { + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) override { DoOnIncomingCapturedVideoFrame(); } MOCK_METHOD0(DoOnIncomingCapturedVideoFrame, void(void));
diff --git a/media/capture/video/video_capture_device.h b/media/capture/video/video_capture_device.h index 81a273f..120c183 100644 --- a/media/capture/video/video_capture_device.h +++ b/media/capture/video/video_capture_device.h
@@ -146,28 +146,30 @@ VideoPixelStorage storage, int frame_feedback_id) = 0; - // Captured new video data, held in |frame| or |buffer|, respectively for - // OnIncomingCapturedVideoFrame() and OnIncomingCapturedBuffer(). - // - // In both cases, as the frame is backed by a reservation returned by - // ReserveOutputBuffer(), delivery is guaranteed and will require no - // additional copies in the browser process. + // Provides VCD::Client with a populated Buffer containing the content of + // the next video frame. The |buffer| must originate from an earlier call to + // ReserveOutputBuffer(). // See OnIncomingCapturedData for details of |reference_time| and // |timestamp|. - // TODO(chfremer): Consider removing one of the two in order to simplify the - // interface. virtual void OnIncomingCapturedBuffer(std::unique_ptr<Buffer> buffer, const VideoCaptureFormat& format, base::TimeTicks reference_time, base::TimeDelta timestamp) = 0; - virtual void OnIncomingCapturedVideoFrame( + + // Extended version of OnIncomingCapturedBuffer() allowing clients to + // pass a custom |visible_rect| and |additional_metadata|. + virtual void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<VideoFrame> frame) = 0; + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) = 0; // Attempts to reserve the same Buffer provided in the last call to one of - // the OnIncomingCapturedXXX() methods. This will fail if the content of the - // Buffer has not been preserved, or if the |dimensions|, |format|, or - // |storage| disagree with how it was reserved via ReserveOutputBuffer(). + // the OnIncomingCapturedBufferXXX() methods. This will fail if the content + // of the Buffer has not been preserved, or if the |dimensions|, |format|, + // or |storage| disagree with how it was reserved via ReserveOutputBuffer(). // When this operation fails, nullptr will be returned. virtual std::unique_ptr<Buffer> ResurrectLastOutputBuffer( const gfx::Size& dimensions,
diff --git a/media/capture/video/video_capture_device_client.cc b/media/capture/video/video_capture_device_client.cc index 3321633..857e714e 100644 --- a/media/capture/video/video_capture_device_client.cc +++ b/media/capture/video/video_capture_device_client.cc
@@ -21,6 +21,7 @@ #include "media/capture/video/video_capture_jpeg_decoder.h" #include "media/capture/video/video_frame_receiver.h" #include "media/capture/video_capture_types.h" +#include "mojo/public/cpp/system/platform_handle.h" #include "third_party/libyuv/include/libyuv.h" using media::VideoCaptureFormat; @@ -295,32 +296,35 @@ const VideoCaptureFormat& format, base::TimeTicks reference_time, base::TimeDelta timestamp) { - DCHECK(IsFormatSupported(format.pixel_format)); - DCHECK_EQ(media::PIXEL_STORAGE_CPU, format.pixel_storage); + OnIncomingCapturedBufferExt(std::move(buffer), format, reference_time, + timestamp, gfx::Rect(format.frame_size), + VideoFrameMetadata()); +} - scoped_refptr<VideoFrame> frame; - if (buffer->IsBackedByVideoFrame()) { - frame = buffer->GetVideoFrame(); - frame->set_timestamp(timestamp); - } else { - frame = VideoFrame::WrapExternalSharedMemory( - format.pixel_format, format.frame_size, gfx::Rect(format.frame_size), - format.frame_size, reinterpret_cast<uint8_t*>(buffer->data()), - VideoFrame::AllocationSize(format.pixel_format, format.frame_size), - base::SharedMemory::NULLHandle(), 0u, timestamp); - } - if (!frame) - return; +void VideoCaptureDeviceClient::OnIncomingCapturedBufferExt( + std::unique_ptr<Buffer> buffer, + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) { + scoped_refptr<media::VideoFrame> frame = + media::VideoFrame::WrapExternalSharedMemory( + format.pixel_format, // format + format.frame_size, // coded_size + visible_rect, // visible_rect + format.frame_size, // natural_size + static_cast<uint8_t*>(buffer->data()), // data + buffer->mapped_size(), // data_size + base::SharedMemory::NULLHandle(), // handle + 0u, // shared_memory_offset + timestamp); // timestamp + frame->metadata()->MergeMetadataFrom(&additional_metadata); frame->metadata()->SetDouble(media::VideoFrameMetadata::FRAME_RATE, format.frame_rate); frame->metadata()->SetTimeTicks(media::VideoFrameMetadata::REFERENCE_TIME, reference_time); - OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame)); -} -void VideoCaptureDeviceClient::OnIncomingCapturedVideoFrame( - std::unique_ptr<Buffer> buffer, - scoped_refptr<VideoFrame> frame) { receiver_->OnIncomingCapturedVideoFrame(std::move(buffer), std::move(frame)); }
diff --git a/media/capture/video/video_capture_device_client.h b/media/capture/video/video_capture_device_client.h index 0c85539..adac1bc1 100644 --- a/media/capture/video/video_capture_device_client.h +++ b/media/capture/video/video_capture_device_client.h
@@ -65,9 +65,13 @@ const VideoCaptureFormat& format, base::TimeTicks reference_time, base::TimeDelta timestamp) override; - void OnIncomingCapturedVideoFrame( + void OnIncomingCapturedBufferExt( std::unique_ptr<Buffer> buffer, - scoped_refptr<media::VideoFrame> frame) override; + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) override; std::unique_ptr<Buffer> ResurrectLastOutputBuffer( const gfx::Size& dimensions, media::VideoPixelFormat format,
diff --git a/media/capture/video/video_capture_device_unittest.cc b/media/capture/video/video_capture_device_unittest.cc index b3289d2..ca6a4a1 100644 --- a/media/capture/video/video_capture_device_unittest.cc +++ b/media/capture/video/video_capture_device_unittest.cc
@@ -135,8 +135,13 @@ base::TimeDelta timestamp) override { DoOnIncomingCapturedBuffer(); } - void OnIncomingCapturedVideoFrame(std::unique_ptr<Buffer> buffer, - scoped_refptr<VideoFrame> frame) override { + void OnIncomingCapturedBufferExt( + std::unique_ptr<Buffer> buffer, + const VideoCaptureFormat& format, + base::TimeTicks reference_time, + base::TimeDelta timestamp, + gfx::Rect visible_rect, + const VideoFrameMetadata& additional_metadata) override { DoOnIncomingCapturedVideoFrame(); } std::unique_ptr<Buffer> ResurrectLastOutputBuffer(
diff --git a/services/video_capture/test/fake_device_descriptor_unittest.cc b/services/video_capture/test/fake_device_descriptor_unittest.cc index c69e0a8..e0120fe 100644 --- a/services/video_capture/test/fake_device_descriptor_unittest.cc +++ b/services/video_capture/test/fake_device_descriptor_unittest.cc
@@ -19,7 +19,7 @@ // Tests that when requesting a second proxy for a device without closing the // first one, the service revokes access to the first one by closing the // connection. -TEST_F(FakeDeviceDescriptorTest, AccessIsRevokedOnSecondAccess) { +TEST_F(FakeDeviceDescriptorTest, DISABLED_AccessIsRevokedOnSecondAccess) { mojom::DevicePtr device_proxy_1; bool device_access_1_revoked = false; MockCreateDeviceProxyCallback create_device_proxy_callback_1; @@ -55,7 +55,7 @@ } // Tests that a second proxy requested for a device can be used successfully. -TEST_F(FakeDeviceDescriptorTest, CanUseSecondRequestedProxy) { +TEST_F(FakeDeviceDescriptorTest, DISABLED_CanUseSecondRequestedProxy) { mojom::DevicePtr device_proxy_1; factory_->CreateDevice( fake_device_descriptor_.device_id, mojo::MakeRequest(&device_proxy_1),
diff --git a/services/video_capture/test/fake_device_unittest.cc b/services/video_capture/test/fake_device_unittest.cc index 7af7a1af6..edfcc97 100644 --- a/services/video_capture/test/fake_device_unittest.cc +++ b/services/video_capture/test/fake_device_unittest.cc
@@ -30,7 +30,7 @@ namespace video_capture { -TEST_F(FakeDeviceTest, FrameCallbacksArrive) { +TEST_F(FakeDeviceTest, DISABLED_FrameCallbacksArrive) { base::RunLoop wait_loop; const int kNumFramesToWaitFor = 3; int num_frames_arrived = 0; @@ -51,7 +51,7 @@ // Tests that frames received from a fake capture device match the requested // format and have increasing timestamps. -TEST_F(FakeDeviceTest, ReceiveFramesFromFakeCaptureDevice) { +TEST_F(FakeDeviceTest, DISABLED_ReceiveFramesFromFakeCaptureDevice) { base::RunLoop wait_loop; mojom::ReceiverPtr receiver_proxy; constexpr int num_frames_to_receive = 2;
diff --git a/services/video_capture/test/mock_device_unittest.cc b/services/video_capture/test/mock_device_unittest.cc index f3035fe..40f36b4 100644 --- a/services/video_capture/test/mock_device_unittest.cc +++ b/services/video_capture/test/mock_device_unittest.cc
@@ -12,7 +12,7 @@ // Tests that the service stops the capture device when the client closes the // connection to the device proxy. -TEST_F(MockDeviceTest, DeviceIsStoppedWhenDiscardingDeviceProxy) { +TEST_F(MockDeviceTest, DISABLED_DeviceIsStoppedWhenDiscardingDeviceProxy) { base::RunLoop wait_loop; // The mock device must hold on to the device client that is passed to it. @@ -34,7 +34,7 @@ // Tests that the service stops the capture device when the client closes the // connection to the client proxy it provided to the service. -TEST_F(MockDeviceTest, DeviceIsStoppedWhenDiscardingDeviceClient) { +TEST_F(MockDeviceTest, DISABLED_DeviceIsStoppedWhenDiscardingDeviceClient) { base::RunLoop wait_loop; // The mock device must hold on to the device client that is passed to it.
diff --git a/services/video_capture/test/service_unittest.cc b/services/video_capture/test/service_unittest.cc index 7f382157..0966f45c 100644 --- a/services/video_capture/test/service_unittest.cc +++ b/services/video_capture/test/service_unittest.cc
@@ -21,7 +21,7 @@ // Tests that an answer arrives from the service when calling // EnumerateDeviceDescriptors(). -TEST_F(ServiceTest, EnumerateDeviceDescriptorsCallbackArrives) { +TEST_F(ServiceTest, DISABLED_EnumerateDeviceDescriptorsCallbackArrives) { base::RunLoop wait_loop; EXPECT_CALL(descriptor_receiver_, OnEnumerateDeviceDescriptorsCallback(_)) .Times(Exactly(1)) @@ -33,7 +33,7 @@ wait_loop.Run(); } -TEST_F(ServiceTest, FakeDeviceFactoryEnumeratesOneDevice) { +TEST_F(ServiceTest, DISABLED_FakeDeviceFactoryEnumeratesOneDevice) { base::RunLoop wait_loop; size_t num_devices_enumerated = 0; EXPECT_CALL(descriptor_receiver_, OnEnumerateDeviceDescriptorsCallback(_)) @@ -53,7 +53,7 @@ // Tests that VideoCaptureDeviceFactory::CreateDeviceProxy() returns an error // code when trying to create a device for an invalid descriptor. -TEST_F(ServiceTest, ErrorCodeOnCreateDeviceForInvalidDescriptor) { +TEST_F(ServiceTest, DISABLED_ErrorCodeOnCreateDeviceForInvalidDescriptor) { const std::string invalid_device_id = "invalid"; base::RunLoop wait_loop; mojom::DevicePtr fake_device_proxy;
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index 59411c9..ab677514 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -6370,7 +6370,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6387,7 +6387,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6403,7 +6403,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6419,7 +6419,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6435,7 +6435,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6451,7 +6451,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -6478,7 +6478,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6501,7 +6501,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6524,7 +6524,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6547,7 +6547,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6576,7 +6576,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6613,7 +6613,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6636,7 +6636,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6659,7 +6659,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -6682,7 +6682,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7071,7 +7071,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7088,7 +7088,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7104,7 +7104,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7120,7 +7120,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7136,7 +7136,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7152,7 +7152,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7168,7 +7168,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -7195,7 +7195,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7218,7 +7218,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7241,7 +7241,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7264,7 +7264,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7293,7 +7293,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7330,7 +7330,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7353,7 +7353,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7376,7 +7376,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -7401,7 +7401,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ], "shards": 15 @@ -7425,7 +7425,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -8566,7 +8566,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8588,7 +8588,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8609,7 +8609,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8630,7 +8630,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8651,7 +8651,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8672,7 +8672,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8693,7 +8693,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8725,7 +8725,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8753,7 +8753,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8781,7 +8781,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8809,7 +8809,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8843,7 +8843,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8885,7 +8885,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8913,7 +8913,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8941,7 +8941,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -8971,7 +8971,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -9000,7 +9000,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" }, { "gpu": "1002:6821", @@ -9883,7 +9883,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -9899,7 +9899,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -9928,7 +9928,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ], "shards": 15
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json index ba07558..9b29f1d 100644 --- a/testing/buildbot/chromium.gpu.json +++ b/testing/buildbot/chromium.gpu.json
@@ -599,7 +599,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -615,7 +615,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -631,7 +631,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -658,7 +658,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -681,7 +681,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -704,7 +704,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -727,7 +727,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -756,7 +756,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -793,7 +793,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -816,7 +816,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -839,7 +839,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -862,7 +862,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -881,7 +881,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -897,7 +897,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -913,7 +913,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -929,7 +929,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }, @@ -956,7 +956,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -979,7 +979,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1002,7 +1002,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1025,7 +1025,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1054,7 +1054,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1091,7 +1091,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1114,7 +1114,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1137,7 +1137,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] } @@ -1160,7 +1160,7 @@ "dimension_sets": [ { "gpu": "8086:0a2e", - "os": "Mac-10.10" + "os": "Mac-10.12" } ] }
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json index 73274e7..9296666 100644 --- a/testing/buildbot/chromium.perf.fyi.json +++ b/testing/buildbot/chromium.perf.fyi.json
@@ -746,63 +746,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build249-m4--device4", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build249-m4--device4", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -1031,63 +974,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=android-chromium" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build248-m4--device4", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "android_devices": "1", - "id": "build248-m4--device4", - "os": "Android", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -11770,63 +11656,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build144-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build144-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -12055,63 +11884,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build146-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:22b1", - "id": "build146-b1", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -22870,63 +22642,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build208-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build208-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -23155,63 +22870,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build210-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:9874", - "id": "build210-b4", - "os": "Windows-10-10586", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results",
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index 143ec0c..af896f0 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -852,63 +852,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build148-m1", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build148-m1", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -1137,63 +1080,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build150-m1", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build150-m1", - "os": "Ubuntu-14.04", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -11914,63 +11800,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build102-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build102-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -12199,63 +12028,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build104-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0166", - "id": "build104-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -22919,63 +22691,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build158-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build158-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -23204,63 +22919,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build160-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0a2e", - "id": "build160-m1", - "os": "Mac-10.12", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -33924,63 +33582,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build123-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build123-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -34209,63 +33810,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build125-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1626", - "id": "build125-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -44929,63 +44473,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build128-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build128-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -45214,63 +44701,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build130-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6821", - "id": "build130-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -55934,63 +55364,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build4-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build4-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -56219,63 +55592,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build6-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:0d26", - "id": "build6-b1", - "os": "Mac-10.11", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -66939,63 +66255,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build117-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build117-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -67224,63 +66483,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build119-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:1616", - "id": "build119-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -77944,63 +77146,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build132-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build132-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -78229,63 +77374,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build134-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0534", - "id": "build134-m1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -88968,63 +88056,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6779", - "id": "build101-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6779", - "id": "build101-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -89253,63 +88284,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6779", - "id": "build103-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "1002:6779", - "id": "build103-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -100011,63 +98985,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build164-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build164-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -100296,63 +99213,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build166-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:041a", - "id": "build166-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -111035,63 +109895,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build92-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build92-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -111320,63 +110123,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build94-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "10de:104a", - "id": "build94-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -122078,63 +120824,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build185-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build185-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -122363,63 +121052,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build187-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build187-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -133121,63 +131753,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build138-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build138-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -133406,63 +131981,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build140-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build140-m1", - "os": "Windows-2008ServerR2-SP1", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -144164,63 +142682,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build143-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build143-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -144449,63 +142910,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build145-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "102b:0532", - "id": "build145-m1", - "os": "Windows-2012ServerR2-SP0", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results", @@ -155207,63 +153611,6 @@ }, { "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:161e", - "id": "build30-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.paint_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.paint_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:161e", - "id": "build30-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.parser", "-v", "--upload-results", @@ -155492,63 +153839,6 @@ }, { "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=release_x64" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:161e", - "id": "build32-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ - "blink_perf.svg_slimmingpaintinvalidation", - "-v", - "--upload-results", - "--output-format=chartjson", - "--browser=reference", - "--output-trace-tag=_ref" - ], - "isolate_name": "telemetry_perf_tests", - "name": "blink_perf.svg_slimmingpaintinvalidation.reference", - "override_compile_targets": [ - "telemetry_perf_tests" - ], - "swarming": { - "can_use_on_swarming_builders": true, - "dimension_sets": [ - { - "gpu": "8086:161e", - "id": "build32-b1", - "os": "Windows-10-10240", - "pool": "Chrome-perf" - } - ], - "expiration": 21600, - "hard_timeout": 7200, - "io_timeout": 3600 - } - }, - { - "args": [ "blink_perf.xml_http_request", "-v", "--upload-results",
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index 157d19d..07045a5 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -717,7 +717,6 @@ crbug.com/248938 virtual/threaded/transitions/change-duration-during-transition.html [ Pass Failure ] crbug.com/638693 virtual/threaded/animations/display-inline-style-adjust.html [ Pass Crash Failure ] crbug.com/421283 fast/html/marquee-scrollamount.html [ Pass Failure ] -crbug.com/248938 virtual/threaded/transitions/transition-end-event-rendering.html [ Pass Timeout ] crbug.com/248938 [ Mac ] virtual/threaded/transitions/interrupted-all-transition.html [ Pass Failure ] crbug.com/659123 [ Mac ] fast/css/text-overflow-ellipsis-button.html [ Pass Failure ]
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5075944.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5075944.html deleted file mode 100644 index e99406b..0000000 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5075944.html +++ /dev/null
@@ -1,14 +0,0 @@ -<p>This test for a bug copy/pasting underlined text.</p> -<div id="copy" contenteditable="true">This should be underlined.</div> -<div id="paste" contenteditable="true"><br></div> - -<script> -var copy = document.getElementById("copy"); -copy.focus(); -document.execCommand("SelectAll"); -document.execCommand("Underline"); -document.execCommand("Copy"); -var paste = document.getElementById("paste"); -paste.focus(); -document.execCommand("Paste"); -</script>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-paste-underlined.html b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-paste-underlined.html new file mode 100644 index 0000000..38aea5bc --- /dev/null +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-paste-underlined.html
@@ -0,0 +1,28 @@ +<!doctype html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> +<script src="../assert_selection.js"></script> +<script> +test(() => { + assert_not_equals( + window.testRunner, undefined, + 'This test requires testRunner.'); + + assert_selection( + [ + '<div contenteditable>^foo bar baz.|</div>', + '<div contenteditable id="paste"><br></div>' + ].join(''), + selection => { + const document = selection.document; + document.execCommand('underline'); + document.execCommand('copy'); + document.getElementById('paste').focus(); + document.execCommand('paste'); + }, + [ + '<div contenteditable><u>foo bar baz.</u></div>', + '<div contenteditable id="paste"><u>foo bar baz.|</u></div>' + ].join('')); + }, 'Copy/paste underlined text.'); +</script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalidation/independent-inheritance-fast-path.html b/third_party/WebKit/LayoutTests/fast/css/invalidation/independent-inheritance-fast-path.html index e08827a1..0658d836b 100644 --- a/third_party/WebKit/LayoutTests/fast/css/invalidation/independent-inheritance-fast-path.html +++ b/third_party/WebKit/LayoutTests/fast/css/invalidation/independent-inheritance-fast-path.html
@@ -23,6 +23,7 @@ ["webkitPrintColorAdjust", "economy", "exact"], ["textAlign", "start", "left"], ["textTransform", "capitalize", "uppercase"], + ["webkitRtlOrdering", "logical", "visual"], ]; independent_properties.forEach(function(test_data)
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt index 24b4c0f1..0daa4a8 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-navigated-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is navigated. Test should not crash and properties should be set to sane defaults. @@ -58,7 +57,6 @@ PASS window.cached_navigator_usb.ondisconnect is null PASS window.cached_performance.onframetimingbufferfull is null PASS window.cached_performance.onresourcetimingbufferfull is null -PASS window.cached_performance.onwebkitresourcetimingbufferfull is null PASS window.cached_performance_navigation.redirectCount is 0 PASS window.cached_performance_navigation.type is 0 PASS window.cached_performance_timing.connectEnd is 0
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt index 71e7d2d..03fb6d55 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. @@ -58,7 +57,6 @@ PASS window.cached_navigator_usb.ondisconnect is null PASS window.cached_performance.onframetimingbufferfull is null PASS window.cached_performance.onresourcetimingbufferfull is null -PASS window.cached_performance.onwebkitresourcetimingbufferfull is null PASS window.cached_performance_navigation.redirectCount is 0 PASS window.cached_performance_navigation.type is 0 PASS window.cached_performance_timing.connectEnd is 0
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt index 394af88..d7a8ab8 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-properties-after-frame-removed-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests access of cached DOMWindow properties after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. @@ -58,7 +57,6 @@ PASS window.cached_navigator_usb.ondisconnect is null PASS window.cached_performance.onframetimingbufferfull is null PASS window.cached_performance.onresourcetimingbufferfull is null -PASS window.cached_performance.onwebkitresourcetimingbufferfull is null PASS window.cached_performance_navigation.redirectCount is 0 PASS window.cached_performance_navigation.type is 0 PASS window.cached_performance_timing.connectEnd is 0
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt index 9fe7b53..da7a2c82 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-navigated-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is navigated. Test should not crash and properties read from the cached DOMWindow should be identical to properties through the 'current' DOMWindow. @@ -175,7 +174,6 @@ PASS oldChildWindow.performance.navigation.type is newChildWindow.performance.navigation.type PASS oldChildWindow.performance.onframetimingbufferfull is newChildWindow.performance.onframetimingbufferfull PASS oldChildWindow.performance.onresourcetimingbufferfull is newChildWindow.performance.onresourcetimingbufferfull -PASS oldChildWindow.performance.onwebkitresourcetimingbufferfull is newChildWindow.performance.onwebkitresourcetimingbufferfull PASS oldChildWindow.performance.timing.connectEnd is newChildWindow.performance.timing.connectEnd PASS oldChildWindow.performance.timing.connectStart is newChildWindow.performance.timing.connectStart PASS oldChildWindow.performance.timing.domComplete is newChildWindow.performance.timing.domComplete
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt index 78afec1..cdb184ea 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-and-gced-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is removed from a web page and garbage collected. Test should not crash and properties should be set to sane defaults. @@ -147,7 +146,6 @@ PASS childWindow.performance.navigation.type is 0 PASS childWindow.performance.onframetimingbufferfull is null PASS childWindow.performance.onresourcetimingbufferfull is null -PASS childWindow.performance.onwebkitresourcetimingbufferfull is null PASS childWindow.performance.timing.connectEnd is 0 PASS childWindow.performance.timing.connectStart is 0 PASS childWindow.performance.timing.domComplete is 0
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt index 5ff7524..18f6536 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/property-access-on-cached-window-after-frame-removed-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 101: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. CONSOLE WARNING: line 101: 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. Tests property access on a cached DOMWindow after the associated frame is no longer in a web page. Test should not crash and properties should be set to sane defaults. @@ -147,7 +146,6 @@ PASS childWindow.performance.navigation.type is 0 PASS childWindow.performance.onframetimingbufferfull is null PASS childWindow.performance.onresourcetimingbufferfull is null -PASS childWindow.performance.onwebkitresourcetimingbufferfull is null PASS childWindow.performance.timing.connectEnd is 0 PASS childWindow.performance.timing.connectStart is 0 PASS childWindow.performance.timing.domComplete is 0
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt index db07e65..2374d1d4 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-properties-performance-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE WARNING: line 1: 'Performance.onwebkitresourcetimingbufferfull' is deprecated. Please use 'Performance.onresourcetimingbufferfull' instead. This test dumps all of the properties that are reachable from the window.performance object, along with their types. window.performance [object Performance] @@ -28,7 +27,6 @@ window.performance.now [function] window.performance.onframetimingbufferfull [null] window.performance.onresourcetimingbufferfull [null] -window.performance.onwebkitresourcetimingbufferfull [null] window.performance.removeEventListener [function] window.performance.setFrameTimingBufferSize [function] window.performance.setResourceTimingBufferSize [function] @@ -56,8 +54,6 @@ window.performance.timing.unloadEventEnd [number] window.performance.timing.unloadEventStart [number] window.performance.toJSON [function] -window.performance.webkitClearResourceTimings [function] -window.performance.webkitSetResourceTimingBufferSize [function] window.performance.timing [printed above as window.performance.timing] jsonizedTiming [object Object] jsonizedTiming.connectEnd [number]
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/resources/subresource-integrity-fetch-worker.js b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/resources/subresource-integrity-fetch-worker.js new file mode 100644 index 0000000..64183f5b --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/resources/subresource-integrity-fetch-worker.js
@@ -0,0 +1,28 @@ +importScripts('/resources/testharness.js'); +console.log('hehehe'); +const url = '../call-success.js'; +const integrity = 'sha256-B0/62fJSJFrdjEFR9ba04m/D+LHQ+zG6PGcaR0Trpxg='; + +promise_test(() => { + return fetch(url).then(res => res.text()).then(text => { + assert_equals(text, 'success();\n'); + }); +}, 'No integrity'); + +promise_test(() => { + return fetch(url, {integrity: integrity}).then(res => { + return res.text(); + }).then(text => { + assert_equals(text, 'success();\n'); + }); +}, 'Good integrity'); + +promise_test(() => { + return fetch(url, {integrity: 'sha256-deadbeaf'}).then(res => { + assert_unreached('the integrity check should fail'); + }, () => { + // The integrity check should fail. + }); +}, 'Bad integrity'); + +done();
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-fetch-worker.html b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-fetch-worker.html new file mode 100644 index 0000000..509daab --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-fetch-worker.html
@@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html> +<head> +<title>Tests integrity enforcement on fetch() on Web Worker</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> +const SCRIPT = 'resources/subresource-integrity-fetch-worker.js'; +fetch_tests_from_worker(new Worker(SCRIPT)); +console.log('hello'); +</script> +</body> +</html>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.png b/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.png deleted file mode 100644 index 41cefe9..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.txt deleted file mode 100644 index 99a7094c..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/editing/pasteboard/5075944-expected.txt +++ /dev/null
@@ -1,17 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x20 - LayoutText {#text} at (0,0) size 284x19 - text run at (0,0) width 284: "This test for a bug copy/pasting underlined text." - LayoutBlockFlow {DIV} at (0,36) size 784x20 - LayoutInline {U} at (0,0) size 157x19 - LayoutText {#text} at (0,0) size 157x19 - text run at (0,0) width 157: "This should be underlined." - LayoutBlockFlow {DIV} at (0,56) size 784x20 - LayoutInline {U} at (0,0) size 157x19 - LayoutText {#text} at (0,0) size 157x19 - text run at (0,0) width 157: "This should be underlined." -caret: position 26 of child 0 {#text} of child 0 {U} of child 4 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/linux/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/virtual/stable/webexposed/global-interface-listing-expected.txt index 79f98cf4..ff2e741 100644 --- a/third_party/WebKit/LayoutTests/platform/linux/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/linux/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3677,7 +3677,6 @@ getter memory getter navigation getter onresourcetimingbufferfull - getter onwebkitresourcetimingbufferfull getter timing method clearMarks method clearMeasures @@ -3691,10 +3690,7 @@ method now method setResourceTimingBufferSize method toJSON - method webkitClearResourceTimings - method webkitSetResourceTimingBufferSize setter onresourcetimingbufferfull - setter onwebkitresourcetimingbufferfull interface PerformanceEntry attribute @@toStringTag getter duration
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.png b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.png deleted file mode 100644 index df34d4d..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.txt deleted file mode 100644 index 724d8ecb..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/editing/pasteboard/5075944-expected.txt +++ /dev/null
@@ -1,17 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 307x18 - text run at (0,0) width 307: "This test for a bug copy/pasting underlined text." - LayoutBlockFlow {DIV} at (0,34) size 784x18 - LayoutInline {U} at (0,0) size 171x18 - LayoutText {#text} at (0,0) size 171x18 - text run at (0,0) width 171: "This should be underlined." - LayoutBlockFlow {DIV} at (0,52) size 784x18 - LayoutInline {U} at (0,0) size 171x18 - LayoutText {#text} at (0,0) size 171x18 - text run at (0,0) width 171: "This should be underlined." -caret: position 26 of child 0 {#text} of child 0 {U} of child 4 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.png b/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.png deleted file mode 100644 index 4c3162cd..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.png +++ /dev/null Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.txt b/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.txt deleted file mode 100644 index 688749b..0000000 --- a/third_party/WebKit/LayoutTests/platform/win/editing/pasteboard/5075944-expected.txt +++ /dev/null
@@ -1,17 +0,0 @@ -layer at (0,0) size 800x600 - LayoutView at (0,0) size 800x600 -layer at (0,0) size 800x600 - LayoutBlockFlow {HTML} at (0,0) size 800x600 - LayoutBlockFlow {BODY} at (8,8) size 784x584 - LayoutBlockFlow {P} at (0,0) size 784x18 - LayoutText {#text} at (0,0) size 307x17 - text run at (0,0) width 307: "This test for a bug copy/pasting underlined text." - LayoutBlockFlow {DIV} at (0,34) size 784x18 - LayoutInline {U} at (0,0) size 171x17 - LayoutText {#text} at (0,0) size 171x17 - text run at (0,0) width 171: "This should be underlined." - LayoutBlockFlow {DIV} at (0,52) size 784x18 - LayoutInline {U} at (0,0) size 171x17 - LayoutText {#text} at (0,0) size 171x17 - text run at (0,0) width 171: "This should be underlined." -caret: position 26 of child 0 {#text} of child 0 {U} of child 4 {DIV} of body
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/color/input-appearance-color-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/color/input-appearance-color-expected.png index a52e9b9..e6a56e5 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/color/input-appearance-color-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/color/input-appearance-color-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png index 3521f00..28bac72 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.png Binary files differ
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt index 75c150b1..747b6455 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select/menulist-appearance-basic-expected.txt
@@ -3,116 +3,116 @@ layer at (0,0) size 800x523 LayoutBlockFlow {HTML} at (0,0) size 800x523 LayoutBlockFlow {BODY} at (8,8) size 784x507 - LayoutMenuList {SELECT} at (4,4) size 39x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutMenuList {SELECT} at (4,4) size 41x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (47,5) size 4x17 - text run at (47,5) width 4: " " - LayoutBR {BR} at (51,5) size 0x17 - LayoutMenuList {SELECT} at (4,32) size 39x28 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,9) size 37x18 + LayoutText {#text} at (49,5) size 4x17 + text run at (49,5) width 4: " " + LayoutBR {BR} at (53,5) size 0x17 + LayoutMenuList {SELECT} at (4,32) size 41x28 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,9) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (47,41) size 4x17 - text run at (47,41) width 4: " " - LayoutMenuList {SELECT} at (55,40) size 45x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutText {#text} at (49,41) size 4x17 + text run at (49,41) width 4: " " + LayoutMenuList {SELECT} at (57,40) size 47x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (104,41) size 4x17 - text run at (104,41) width 4: " " - LayoutMenuList {SELECT} at (112,40) size 39x28 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutText {#text} at (108,41) size 4x17 + text run at (108,41) width 4: " " + LayoutMenuList {SELECT} at (116,40) size 41x28 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (155,41) size 4x17 - text run at (155,41) width 4: " " - LayoutMenuList {SELECT} at (163,40) size 45x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (7,1) size 37x18 + LayoutText {#text} at (161,41) size 4x17 + text run at (161,41) width 4: " " + LayoutMenuList {SELECT} at (169,40) size 47x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (7,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (212,41) size 4x17 - text run at (212,41) width 4: " " - LayoutBR {BR} at (216,41) size 0x17 - LayoutMenuList {SELECT} at (4,76) size 43x24 [bgcolor=#FFFFFF] [border: (3px solid #00FF00)] - LayoutBlockFlow (anonymous) at (3,3) size 37x18 + LayoutText {#text} at (220,41) size 4x17 + text run at (220,41) width 4: " " + LayoutBR {BR} at (224,41) size 0x17 + LayoutMenuList {SELECT} at (4,76) size 45x24 [bgcolor=#FFFFFF] [border: (3px solid #00FF00)] + LayoutBlockFlow (anonymous) at (3,3) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (51,79) size 4x17 - text run at (51,79) width 4: " " - LayoutMenuList {SELECT} at (59,78) size 39x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutText {#text} at (53,79) size 4x17 + text run at (53,79) width 4: " " + LayoutMenuList {SELECT} at (61,78) size 41x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (102,79) size 4x17 - text run at (102,79) width 4: " " - LayoutBR {BR} at (106,79) size 0x17 - LayoutMenuList {SELECT} at (4,115) size 39x20 [color=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutText {#text} at (106,79) size 4x17 + text run at (106,79) width 4: " " + LayoutBR {BR} at (110,79) size 0x17 + LayoutMenuList {SELECT} at (4,115) size 41x20 [color=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (47,116) size 4x17 - text run at (47,116) width 4: " " - LayoutBlockFlow {DIV} at (51,104) size 62x42 [bgcolor=#DBB102] - LayoutMenuList {SELECT} at (12,12) size 38x18 - LayoutBlockFlow (anonymous) at (0,0) size 38x18 + LayoutText {#text} at (49,116) size 4x17 + text run at (49,116) width 4: " " + LayoutBlockFlow {DIV} at (53,104) size 64x42 [bgcolor=#DBB102] + LayoutMenuList {SELECT} at (12,12) size 40x18 + LayoutBlockFlow (anonymous) at (0,0) size 40x18 LayoutText (anonymous) at (4,1) size 18x16 text run at (4,1) width 18: "bar" - LayoutText {#text} at (113,116) size 4x17 - text run at (113,116) width 4: " " - LayoutBR {BR} at (117,116) size 0x17 - LayoutMenuList {SELECT} at (4,150) size 39x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 + LayoutText {#text} at (117,116) size 4x17 + text run at (117,116) width 4: " " + LayoutBR {BR} at (121,116) size 0x17 + LayoutMenuList {SELECT} at (4,150) size 41x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 LayoutText (anonymous) at (4,1) size 17x16 text run at (4,1) width 17: "foo" - LayoutText {#text} at (47,151) size 4x17 - text run at (47,151) width 4: " " - LayoutBR {BR} at (51,151) size 0x17 - LayoutMenuList {SELECT} at (4,186) size 45x21 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 43x20 + LayoutText {#text} at (49,151) size 4x17 + text run at (49,151) width 4: " " + LayoutBR {BR} at (53,151) size 0x17 + LayoutMenuList {SELECT} at (4,186) size 47x21 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 45x20 LayoutText (anonymous) at (4,1) size 23x17 text run at (4,1) width 23: "foo" - LayoutText {#text} at (53,188) size 4x17 - text run at (53,188) width 4: " " - LayoutMenuList {SELECT} at (61,182) size 50x26 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 48x25 + LayoutText {#text} at (55,188) size 4x17 + text run at (55,188) width 4: " " + LayoutMenuList {SELECT} at (63,182) size 52x26 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 50x25 LayoutText (anonymous) at (4,1) size 28x22 text run at (4,1) width 28: "foo" - LayoutText {#text} at (115,188) size 4x17 - text run at (115,188) width 4: " " - LayoutMenuList {SELECT} at (123,178) size 56x31 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 54x30 + LayoutText {#text} at (119,188) size 4x17 + text run at (119,188) width 4: " " + LayoutMenuList {SELECT} at (127,178) size 58x31 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 56x30 LayoutText (anonymous) at (4,1) size 34x27 text run at (4,1) width 34: "foo" - LayoutText {#text} at (183,188) size 4x17 - text run at (183,188) width 4: " " - LayoutMenuList {SELECT} at (191,187) size 124x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 122x18 + LayoutText {#text} at (189,188) size 4x17 + text run at (189,188) width 4: " " + LayoutMenuList {SELECT} at (197,187) size 126x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 124x18 LayoutText (anonymous) at (4,1) size 102x16 text run at (4,1) width 102: "September 2016" - LayoutText {#text} at (319,188) size 4x17 - text run at (319,188) width 4: " " - LayoutBR {BR} at (323,188) size 0x17 - LayoutMenuList {SELECT} at (6,229) size 60x26 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 58x25 + LayoutText {#text} at (327,188) size 4x17 + text run at (327,188) width 4: " " + LayoutBR {BR} at (331,188) size 0x17 + LayoutMenuList {SELECT} at (6,229) size 63x26 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 61x25 LayoutText (anonymous) at (6,1) size 28x22 text run at (6,1) width 28: "foo" - LayoutText {#text} at (72,235) size 4x17 - text run at (72,235) width 4: " " - LayoutMenuList {SELECT} at (84,221) size 82x38 [bgcolor=#FFFFFF] [border: (2px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (2,2) size 78x35 + LayoutText {#text} at (75,235) size 4x17 + text run at (75,235) width 4: " " + LayoutMenuList {SELECT} at (87,221) size 86x38 [bgcolor=#FFFFFF] [border: (2px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (2,2) size 82x35 LayoutText (anonymous) at (8,2) size 38x30 text run at (8,2) width 38: "foo" - LayoutText {#text} at (174,235) size 4x17 - text run at (174,235) width 4: " " - LayoutMenuList {SELECT} at (180,239) size 33x14 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 31x12 + LayoutText {#text} at (181,235) size 4x17 + text run at (181,235) width 4: " " + LayoutMenuList {SELECT} at (187,239) size 35x14 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 33x12 LayoutText (anonymous) at (2,0) size 14x12 text run at (2,0) width 14: "foo" - LayoutText {#text} at (215,235) size 4x17 - text run at (215,235) width 4: " " - LayoutBR {BR} at (219,235) size 0x17 + LayoutText {#text} at (224,235) size 4x17 + text run at (224,235) width 4: " " + LayoutBR {BR} at (228,235) size 0x17 LayoutText {#text} at (208,283) size 4x17 text run at (208,283) width 4: " " LayoutBR {BR} at (212,283) size 0x17 @@ -135,31 +135,31 @@ LayoutText {#text} at (68,442) size 4x17 text run at (68,442) width 4: " " LayoutBR {BR} at (72,442) size 0x17 - LayoutMenuList {SELECT} at (4,476) size 39x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 - LayoutText (anonymous) at (16,1) size 17x16 - text run at (16,1) width 17: "foo" - LayoutText {#text} at (47,477) size 4x17 - text run at (47,477) width 4: " " - LayoutMenuList {SELECT} at (55,474) size 43x24 [bgcolor=#FFFFFF] [border: (3px solid #00FF00)] - LayoutBlockFlow (anonymous) at (3,3) size 37x18 - LayoutText (anonymous) at (16,1) size 17x16 - text run at (16,1) width 17: "foo" - LayoutText {#text} at (102,477) size 4x17 - text run at (102,477) width 4: " " - LayoutMenuList {SELECT} at (110,469) size 53x34 [bgcolor=#FFFFFF] [border: (8px solid #00FF00)] - LayoutBlockFlow (anonymous) at (8,8) size 37x18 - LayoutText (anonymous) at (16,1) size 17x16 - text run at (16,1) width 17: "foo" - LayoutText {#text} at (167,477) size 4x17 - text run at (167,477) width 4: " " - LayoutMenuList {SELECT} at (175,476) size 39x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] - LayoutBlockFlow (anonymous) at (1,1) size 37x18 - LayoutText (anonymous) at (16,1) size 17x16 - text run at (16,1) width 17: "foo" - LayoutText {#text} at (218,477) size 4x17 - text run at (218,477) width 4: " " - LayoutBR {BR} at (222,477) size 0x17 + LayoutMenuList {SELECT} at (4,476) size 41x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 + LayoutText (anonymous) at (18,1) size 17x16 + text run at (18,1) width 17: "foo" + LayoutText {#text} at (49,477) size 4x17 + text run at (49,477) width 4: " " + LayoutMenuList {SELECT} at (57,474) size 45x24 [bgcolor=#FFFFFF] [border: (3px solid #00FF00)] + LayoutBlockFlow (anonymous) at (3,3) size 39x18 + LayoutText (anonymous) at (18,1) size 17x16 + text run at (18,1) width 17: "foo" + LayoutText {#text} at (106,477) size 4x17 + text run at (106,477) width 4: " " + LayoutMenuList {SELECT} at (114,469) size 55x34 [bgcolor=#FFFFFF] [border: (8px solid #00FF00)] + LayoutBlockFlow (anonymous) at (8,8) size 39x18 + LayoutText (anonymous) at (18,1) size 17x16 + text run at (18,1) width 17: "foo" + LayoutText {#text} at (173,477) size 4x17 + text run at (173,477) width 4: " " + LayoutMenuList {SELECT} at (181,476) size 41x20 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] + LayoutBlockFlow (anonymous) at (1,1) size 39x18 + LayoutText (anonymous) at (18,1) size 17x16 + text run at (18,1) width 17: "foo" + LayoutText {#text} at (226,477) size 4x17 + text run at (226,477) width 4: " " + LayoutBR {BR} at (230,477) size 0x17 layer at (12,279) size 200x25 clip at (13,280) size 183x23 scrollHeight 51 LayoutListBox {SELECT} at (4,271) size 200x25 [bgcolor=#FFFFFF] [border: (1px solid #A9A9A9)] LayoutBlockFlow {OPTION} at (1,1) size 183x17
diff --git a/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt index 79f98cf4..ff2e741 100644 --- a/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3677,7 +3677,6 @@ getter memory getter navigation getter onresourcetimingbufferfull - getter onwebkitresourcetimingbufferfull getter timing method clearMarks method clearMeasures @@ -3691,10 +3690,7 @@ method now method setResourceTimingBufferSize method toJSON - method webkitClearResourceTimings - method webkitSetResourceTimingBufferSize setter onresourcetimingbufferfull - setter onwebkitresourcetimingbufferfull interface PerformanceEntry attribute @@toStringTag getter duration
diff --git a/third_party/WebKit/LayoutTests/transitions/cancel-transition.html b/third_party/WebKit/LayoutTests/transitions/cancel-transition.html index 7ff24f2..3495953 100644 --- a/third_party/WebKit/LayoutTests/transitions/cancel-transition.html +++ b/third_party/WebKit/LayoutTests/transitions/cancel-transition.html
@@ -48,19 +48,30 @@ <script> 'use strict'; - function waitSeveralFrames() { - return container.animate({opacity: ['1', '1']}, 100).finished; + function waitForProgress() { + var initialLeft = getComputedStyle(left).left; + return new Promise(resolve => { + function poll() { + var currentLeft = getComputedStyle(left).left; + if (currentLeft === initialLeft) { + requestAnimationFrame(poll); + } else { + resolve(); + } + } + requestAnimationFrame(poll); + }); } async_test(t => { getComputedStyle(container).height; // force style recalc container.className = 'run'; getComputedStyle(container).height; // force style recalc - transition will start - waitSeveralFrames().then(t.step_func(() => { + waitForProgress().then(t.step_func_done(() => { assert_greater_than(parseFloat(getComputedStyle(left).left), 50); container.className = ''; getComputedStyle(container).height; // force style recalc - transition will cancel - })).then(waitSeveralFrames).then(t.step_func_done(() => { + container.className = 'run'; // restart transition assert_equals(getComputedStyle(left).left, '50px'); assert_equals(getComputedStyle(translate).transform, 'matrix(1, 0, 0, 1, 100, 0)');
diff --git a/third_party/WebKit/LayoutTests/transitions/transition-end-event-rendering.html b/third_party/WebKit/LayoutTests/transitions/transition-end-event-rendering.html index 010a073..0d50deaa 100644 --- a/third_party/WebKit/LayoutTests/transitions/transition-end-event-rendering.html +++ b/third_party/WebKit/LayoutTests/transitions/transition-end-event-rendering.html
@@ -21,39 +21,39 @@ margin: 10px 0; background-color: green; } - - #container.moved .software { - left: 300px; - } #container.moved .hardware { transform: translateX(300px); } - .software { - -webkit-transition: left 300ms linear; - } - .hardware { - -webkit-transition: transform 1s linear; + -webkit-transition: transform 100ms linear; transform: translateX(0); } </style> - <script src="../animations/resources/animation-test-helpers.js"></script> <script> + 'use strict'; + function waitForCompositor() { + var tester = document.getElementById('tester'); + return tester.animate({transform: ['scale(1)', 'scale(1)']}, 1).finished; + } function testEnded() { - if (window.testRunner) - testRunner.notifyDone(); + waitForCompositor().then(() => { + if (window.testRunner) + testRunner.notifyDone(); + }); } function startTest() { if (window.testRunner) testRunner.waitUntilDone(); + document.getElementById('tester').addEventListener('webkitTransitionEnd', testEnded, false); + document.getElementById('container').offsetTop; // Force style recalc document.getElementById('container').className = 'moved'; } @@ -63,7 +63,6 @@ <body> <div id="container"> - <!-- <div class="software box"></div> --> <div id="tester" class="hardware box"></div> </div>
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt index 230ccd4..88ea189 100644 --- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3739,7 +3739,6 @@ getter memory getter navigation getter onresourcetimingbufferfull - getter onwebkitresourcetimingbufferfull getter timing method clearMarks method clearMeasures @@ -3753,10 +3752,7 @@ method now method setResourceTimingBufferSize method toJSON - method webkitClearResourceTimings - method webkitSetResourceTimingBufferSize setter onresourcetimingbufferfull - setter onwebkitresourcetimingbufferfull interface PerformanceEntry attribute @@toStringTag getter duration
diff --git a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt index 8bbcedc..1886d67 100644 --- a/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt
@@ -4535,7 +4535,6 @@ getter navigation getter onframetimingbufferfull getter onresourcetimingbufferfull - getter onwebkitresourcetimingbufferfull getter timing method clearFrameTimings method clearMarks @@ -4551,11 +4550,8 @@ method setFrameTimingBufferSize method setResourceTimingBufferSize method toJSON - method webkitClearResourceTimings - method webkitSetResourceTimingBufferSize setter onframetimingbufferfull setter onresourcetimingbufferfull - setter onwebkitresourcetimingbufferfull interface PerformanceEntry attribute @@toStringTag getter duration
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp index 65f0f9f7..d737f8d3 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.cpp
@@ -175,13 +175,13 @@ WTF_MAKE_NONCOPYABLE(SourceStream); public: - explicit SourceStream(WebTaskRunner* loadingTaskRunner) + explicit SourceStream(RefPtr<WebTaskRunner> loadingTaskRunner) : v8::ScriptCompiler::ExternalSourceStream(), m_cancelled(false), m_finished(false), m_queueLeadPosition(0), m_queueTailPosition(0), - m_loadingTaskRunner(loadingTaskRunner->clone()) {} + m_loadingTaskRunner(std::move(loadingTaskRunner)) {} virtual ~SourceStream() override {} @@ -317,7 +317,7 @@ size_t m_queueLeadPosition; // Only used by v8 thread. size_t m_queueTailPosition; // Used by both threads; guarded by m_mutex. - std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; + RefPtr<WebTaskRunner> m_loadingTaskRunner; }; size_t ScriptStreamer::s_smallScriptThreshold = 30 * 1024; @@ -326,12 +326,12 @@ Type scriptType, Settings* settings, ScriptState* scriptState, - WebTaskRunner* loadingTaskRunner) { + RefPtr<WebTaskRunner> loadingTaskRunner) { // We don't yet know whether the script will really be streamed. E.g., // suppressing streaming for short scripts is done later. Record only the // sure negative cases here. bool startedStreaming = startStreamingInternal( - script, scriptType, settings, scriptState, loadingTaskRunner); + script, scriptType, settings, scriptState, std::move(loadingTaskRunner)); if (!startedStreaming) recordStartedStreamingHistogram(scriptType, 0); } @@ -523,7 +523,7 @@ Type scriptType, ScriptState* scriptState, v8::ScriptCompiler::CompileOptions compileOptions, - WebTaskRunner* loadingTaskRunner) + RefPtr<WebTaskRunner> loadingTaskRunner) : m_pendingScript(script), m_resource(script->resource()), m_detached(false), @@ -540,7 +540,7 @@ // Unfortunately there's no dummy encoding value in the enum; let's use // one we don't stream. m_encoding(v8::ScriptCompiler::StreamedSource::TWO_BYTE), - m_loadingTaskRunner(loadingTaskRunner->clone()) {} + m_loadingTaskRunner(std::move(loadingTaskRunner)) {} ScriptStreamer::~ScriptStreamer() {} @@ -584,11 +584,12 @@ m_pendingScript->streamingFinished(); } -bool ScriptStreamer::startStreamingInternal(PendingScript* script, - Type scriptType, - Settings* settings, - ScriptState* scriptState, - WebTaskRunner* loadingTaskRunner) { +bool ScriptStreamer::startStreamingInternal( + PendingScript* script, + Type scriptType, + Settings* settings, + ScriptState* scriptState, + RefPtr<WebTaskRunner> loadingTaskRunner) { DCHECK(isMainThread()); DCHECK(scriptState->contextIsValid()); ScriptResource* resource = script->resource(); @@ -622,7 +623,8 @@ // needed. This makes PendingScript notify the ScriptStreamer when it is // destroyed. script->setStreamer(ScriptStreamer::create(script, scriptType, scriptState, - compileOption, loadingTaskRunner)); + compileOption, + std::move(loadingTaskRunner))); return true; }
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h index c4fca3f..d5b295b 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamer.h
@@ -45,7 +45,7 @@ Type, Settings*, ScriptState*, - WebTaskRunner*); + RefPtr<WebTaskRunner>); // Returns false if we cannot stream the given encoding. static bool convertEncoding(const char* encodingName, @@ -108,15 +108,15 @@ Type scriptType, ScriptState* scriptState, v8::ScriptCompiler::CompileOptions compileOptions, - WebTaskRunner* loadingTaskRunner) { + RefPtr<WebTaskRunner> loadingTaskRunner) { return new ScriptStreamer(script, scriptType, scriptState, compileOptions, - loadingTaskRunner); + std::move(loadingTaskRunner)); } ScriptStreamer(PendingScript*, Type, ScriptState*, v8::ScriptCompiler::CompileOptions, - WebTaskRunner*); + RefPtr<WebTaskRunner>); void streamingComplete(); void notifyFinishedToClient(); @@ -125,7 +125,7 @@ Type, Settings*, ScriptState*, - WebTaskRunner*); + RefPtr<WebTaskRunner>); Member<PendingScript> m_pendingScript; // This pointer is weak. If PendingScript and its Resource are deleted @@ -169,7 +169,7 @@ // Encoding of the streamed script. Saved for sanity checking purposes. v8::ScriptCompiler::StreamedSource::Encoding m_encoding; - std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; + RefPtr<WebTaskRunner> m_loadingTaskRunner; }; } // namespace blink
diff --git a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp index f99a1d1..8a73ed8 100644 --- a/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp +++ b/third_party/WebKit/Source/bindings/core/v8/ScriptStreamerTest.cpp
@@ -81,7 +81,7 @@ testing::runPendingTasks(); } - WebTaskRunner* m_loadingTaskRunner; // NOT OWNED + RefPtr<WebTaskRunner> m_loadingTaskRunner; std::unique_ptr<Settings> m_settings; // The Resource and PendingScript where we stream from. These don't really // fetch any data outside the test; the test controls the data by calling
diff --git a/third_party/WebKit/Source/core/animation/BUILD.gn b/third_party/WebKit/Source/core/animation/BUILD.gn index e1109ccc..d37569a 100644 --- a/third_party/WebKit/Source/core/animation/BUILD.gn +++ b/third_party/WebKit/Source/core/animation/BUILD.gn
@@ -116,7 +116,6 @@ "InertEffect.h", "InterpolableValue.cpp", "InterpolableValue.h", - "Interpolation.cpp", "Interpolation.h", "InterpolationEffect.cpp", "InterpolationEffect.h", @@ -133,6 +132,7 @@ "KeyframeEffectModel.h", "KeyframeEffectReadOnly.cpp", "KeyframeEffectReadOnly.h", + "LegacyStyleInterpolation.cpp", "LegacyStyleInterpolation.h", "LengthInterpolationFunctions.cpp", "LengthInterpolationFunctions.h",
diff --git a/third_party/WebKit/Source/core/animation/InterpolableValue.h b/third_party/WebKit/Source/core/animation/InterpolableValue.h index 85312d6c..ceb4346 100644 --- a/third_party/WebKit/Source/core/animation/InterpolableValue.h +++ b/third_party/WebKit/Source/core/animation/InterpolableValue.h
@@ -38,7 +38,7 @@ const double progress, InterpolableValue& result) const = 0; - friend class Interpolation; + friend class LegacyStyleInterpolation; friend class PairwisePrimitiveInterpolation; // Keep interpolate private, but allow calls within the hierarchy without
diff --git a/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp b/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp index 8d3b9a7..def12636 100644 --- a/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp +++ b/third_party/WebKit/Source/core/animation/InterpolableValueTest.cpp
@@ -4,8 +4,7 @@ #include "core/animation/InterpolableValue.h" -#include "core/animation/Interpolation.h" -#include "core/animation/PropertyHandle.h" +#include "core/animation/LegacyStyleInterpolation.h" #include "testing/gtest/include/gtest/gtest.h" #include <memory> @@ -13,7 +12,7 @@ namespace { -class SampleInterpolation : public Interpolation { +class SampleInterpolation : public LegacyStyleInterpolation { public: static PassRefPtr<Interpolation> create( std::unique_ptr<InterpolableValue> start, @@ -21,14 +20,12 @@ return adoptRef(new SampleInterpolation(std::move(start), std::move(end))); } - PropertyHandle getProperty() const override { - return PropertyHandle(CSSPropertyBackgroundColor); - } - private: SampleInterpolation(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end) - : Interpolation(std::move(start), std::move(end)) {} + : LegacyStyleInterpolation(std::move(start), + std::move(end), + CSSPropertyBackgroundColor) {} }; } // namespace
diff --git a/third_party/WebKit/Source/core/animation/Interpolation.h b/third_party/WebKit/Source/core/animation/Interpolation.h index 702d01d8..2b49062 100644 --- a/third_party/WebKit/Source/core/animation/Interpolation.h +++ b/third_party/WebKit/Source/core/animation/Interpolation.h
@@ -21,9 +21,9 @@ WTF_MAKE_NONCOPYABLE(Interpolation); public: - virtual ~Interpolation(); + virtual ~Interpolation() {} - virtual void interpolate(int iteration, double fraction); + virtual void interpolate(int iteration, double fraction) = 0; virtual bool isInvalidatableInterpolation() const { return false; } virtual bool isLegacyStyleInterpolation() const { return false; } @@ -32,20 +32,9 @@ virtual bool dependsOnUnderlyingValue() const { return false; } protected: - const std::unique_ptr<InterpolableValue> m_start; - const std::unique_ptr<InterpolableValue> m_end; + Interpolation() {} - mutable double m_cachedFraction; - mutable int m_cachedIteration; - mutable std::unique_ptr<InterpolableValue> m_cachedValue; - - Interpolation(std::unique_ptr<InterpolableValue> start, - std::unique_ptr<InterpolableValue> end); - - private: - InterpolableValue* getCachedValueForTesting() const { - return m_cachedValue.get(); - } + virtual InterpolableValue* getCachedValueForTesting() const = 0; friend class AnimationInterpolableValueTest; friend class AnimationInterpolationEffectTest;
diff --git a/third_party/WebKit/Source/core/animation/InterpolationEffectTest.cpp b/third_party/WebKit/Source/core/animation/InterpolationEffectTest.cpp index 5015f1f..df258937 100644 --- a/third_party/WebKit/Source/core/animation/InterpolationEffectTest.cpp +++ b/third_party/WebKit/Source/core/animation/InterpolationEffectTest.cpp
@@ -4,6 +4,7 @@ #include "core/animation/InterpolationEffect.h" +#include "core/animation/LegacyStyleInterpolation.h" #include "testing/gtest/include/gtest/gtest.h" #include <memory> @@ -11,7 +12,7 @@ namespace { -class SampleInterpolation : public Interpolation { +class SampleInterpolation : public LegacyStyleInterpolation { public: static PassRefPtr<Interpolation> create( std::unique_ptr<InterpolableValue> start, @@ -19,14 +20,12 @@ return adoptRef(new SampleInterpolation(std::move(start), std::move(end))); } - PropertyHandle getProperty() const override { - return PropertyHandle(CSSPropertyBackgroundColor); - } - private: SampleInterpolation(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end) - : Interpolation(std::move(start), std::move(end)) {} + : LegacyStyleInterpolation(std::move(start), + std::move(end), + CSSPropertyBackgroundColor) {} }; const double duration = 1.0;
diff --git a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h b/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h index 7f7cc0d0..bdacb92 100644 --- a/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h +++ b/third_party/WebKit/Source/core/animation/InvalidatableInterpolation.h
@@ -40,7 +40,7 @@ InvalidatableInterpolation(PropertyHandle property, PassRefPtr<PropertySpecificKeyframe> startKeyframe, PassRefPtr<PropertySpecificKeyframe> endKeyframe) - : Interpolation(nullptr, nullptr), + : Interpolation(), m_property(property), m_interpolationTypes(nullptr), m_interpolationTypesVersion(0), @@ -51,6 +51,11 @@ using ConversionCheckers = InterpolationType::ConversionCheckers; + InterpolableValue* getCachedValueForTesting() const final { + // TODO(suzyh): Add meaningful implementation here + NOTREACHED(); + return nullptr; + } std::unique_ptr<TypedInterpolationValue> maybeConvertUnderlyingValue( const InterpolationEnvironment&) const; const TypedInterpolationValue* ensureValidConversion(
diff --git a/third_party/WebKit/Source/core/animation/Interpolation.cpp b/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.cpp similarity index 75% rename from third_party/WebKit/Source/core/animation/Interpolation.cpp rename to third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.cpp index fce255a..452696c 100644 --- a/third_party/WebKit/Source/core/animation/Interpolation.cpp +++ b/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.cpp
@@ -1,8 +1,8 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. +// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "core/animation/Interpolation.h" +#include "core/animation/LegacyStyleInterpolation.h" #include <memory> @@ -34,19 +34,21 @@ } // namespace -Interpolation::Interpolation(std::unique_ptr<InterpolableValue> start, - std::unique_ptr<InterpolableValue> end) - : m_start(std::move(start)), +LegacyStyleInterpolation::LegacyStyleInterpolation( + std::unique_ptr<InterpolableValue> start, + std::unique_ptr<InterpolableValue> end, + CSSPropertyID id) + : Interpolation(), + m_start(std::move(start)), m_end(std::move(end)), + m_id(id), m_cachedFraction(0), m_cachedIteration(0), m_cachedValue(m_start ? m_start->clone() : nullptr) { RELEASE_ASSERT(typesMatch(m_start.get(), m_end.get())); } -Interpolation::~Interpolation() {} - -void Interpolation::interpolate(int iteration, double fraction) { +void LegacyStyleInterpolation::interpolate(int iteration, double fraction) { if (m_cachedFraction != fraction || m_cachedIteration != iteration) { m_start->interpolate(*m_end, fraction, *m_cachedValue); m_cachedIteration = iteration;
diff --git a/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.h b/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.h index ef9d80c..0947a3c 100644 --- a/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.h +++ b/third_party/WebKit/Source/core/animation/LegacyStyleInterpolation.h
@@ -48,13 +48,25 @@ PropertyHandle getProperty() const final { return PropertyHandle(id()); } - private: - CSSPropertyID m_id; + void interpolate(int iteration, double fraction) final; + protected: LegacyStyleInterpolation(std::unique_ptr<InterpolableValue> start, std::unique_ptr<InterpolableValue> end, - CSSPropertyID id) - : Interpolation(std::move(start), std::move(end)), m_id(id) {} + CSSPropertyID); + + private: + const std::unique_ptr<InterpolableValue> m_start; + const std::unique_ptr<InterpolableValue> m_end; + CSSPropertyID m_id; + + mutable double m_cachedFraction; + mutable int m_cachedIteration; + mutable std::unique_ptr<InterpolableValue> m_cachedValue; + + InterpolableValue* getCachedValueForTesting() const final { + return m_cachedValue.get(); + } }; DEFINE_TYPE_CASTS(LegacyStyleInterpolation,
diff --git a/third_party/WebKit/Source/core/css/BUILD.gn b/third_party/WebKit/Source/core/css/BUILD.gn index 9ecf1aa..4572592 100644 --- a/third_party/WebKit/Source/core/css/BUILD.gn +++ b/third_party/WebKit/Source/core/css/BUILD.gn
@@ -344,6 +344,11 @@ "parser/SizesAttributeParser.cpp", "parser/SizesCalcParser.cpp", "properties/CSSPropertyAPI.h", + "properties/CSSPropertyAPICaretColor.cpp", + "properties/CSSPropertyAPIClip.cpp", + "properties/CSSPropertyAPIColumnGap.cpp", + "properties/CSSPropertyAPIFlexBasis.cpp", + "properties/CSSPropertyAPIFontSizeAdjust.cpp", "properties/CSSPropertyAPISize.cpp", "properties/CSSPropertyAPITextDecorationColor.cpp", "properties/CSSPropertyAPITextDecorationSkip.cpp",
diff --git a/third_party/WebKit/Source/core/css/CSSProperties.in b/third_party/WebKit/Source/core/css/CSSProperties.in index f4d6b96..5422ee3 100644 --- a/third_party/WebKit/Source/core/css/CSSProperties.in +++ b/third_party/WebKit/Source/core/css/CSSProperties.in
@@ -166,7 +166,7 @@ font-family inherited, font, type_name=FontDescription::FamilyDescription, name_for_methods=FamilyDescription, converter=convertFontFamily font-kerning inherited, font, type_name=FontDescription::Kerning, name_for_methods=Kerning font-size interpolable, inherited, font, name_for_methods=Size, getter=getSize, converter=convertFontSize -font-size-adjust runtime_flag=CSSFontSizeAdjust, interpolable, inherited, font, name_for_methods=SizeAdjust, converter=convertFontSizeAdjust +font-size-adjust runtime_flag=CSSFontSizeAdjust, interpolable, inherited, font, name_for_methods=SizeAdjust, converter=convertFontSizeAdjust, api_class font-stretch inherited, font, type_name=FontStretch, name_for_methods=Stretch font-style inherited, font, type_name=FontStyle, name_for_methods=Style font-variant-ligatures inherited, font, type_name=VariantLigatures, name_for_methods=VariantLigatures, converter=convertFontVariantLigatures @@ -232,9 +232,9 @@ break-inside type_name=EBreak buffered-rendering svg caption-side inherited, keyword_only, independent, keywords=[top|bottom|left|right], initial_keyword=top -caret-color interpolable, inherited, custom_all +caret-color interpolable, inherited, custom_all, api_class clear -clip interpolable, converter=convertClip, custom_all +clip interpolable, converter=convertClip, custom_all, api_class clip-path interpolable, converter=convertClipPath clip-rule inherited, svg, type_name=WindRule color-interpolation inherited, svg @@ -256,7 +256,7 @@ fill-opacity interpolable, inherited, svg, converter=convertNumberOrPercentage fill-rule inherited, svg, type_name=WindRule filter interpolable, converter=convertFilterOperations -flex-basis interpolable, converter=convertLengthOrAuto +flex-basis interpolable, converter=convertLengthOrAuto, api_class flex-direction flex-grow interpolable, type_name=float flex-shrink interpolable, type_name=float @@ -417,7 +417,7 @@ -webkit-box-pack -webkit-box-reflect converter=convertBoxReflect column-count interpolable, type_name=unsigned short, custom_all -column-gap interpolable, converter=convertComputedLength<float>, custom_all +column-gap interpolable, converter=convertComputedLength<float>, custom_all, api_class column-rule-color interpolable, custom_all column-rule-style type_name=EBorderStyle, initial=initialBorderStyle column-rule-width interpolable, converter=convertLineWidth<unsigned short> @@ -448,7 +448,7 @@ -webkit-perspective-origin-x interpolable, converter=convertLength -webkit-perspective-origin-y interpolable, converter=convertLength -webkit-print-color-adjust inherited, independent, keyword_only, keywords=[economy|exact], initial_keyword=economy --webkit-rtl-ordering inherited, type_name=EOrder, setter=setRtlOrdering, initial=initialRtlOrdering, keyword_only, keywords=[logical|visual], initial_keyword=logical +-webkit-rtl-ordering inherited, independent, type_name=EOrder, setter=setRtlOrdering, initial=initialRtlOrdering, keyword_only, keywords=[logical|visual], initial_keyword=logical -webkit-ruby-position inherited, type_name=RubyPosition -webkit-tap-highlight-color inherited, converter=convertColor -webkit-text-combine inherited, type_name=TextCombine, name_for_methods=TextCombine
diff --git a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp index b897acdc..1627bc5 100644 --- a/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp +++ b/third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp
@@ -1003,13 +1003,6 @@ return consumePositiveInteger(range); } -static CSSValue* consumeColumnGap(CSSParserTokenRange& range, - CSSParserMode cssParserMode) { - if (range.peek().id() == CSSValueNormal) - return consumeIdent(range); - return consumeLength(range, cssParserMode, ValueRangeNonNegative); -} - static CSSValue* consumeColumnSpan(CSSParserTokenRange& range) { return consumeIdent<CSSValueAll, CSSValueNone>(range); } @@ -1879,14 +1872,6 @@ return consumeUrl(range); } -static CSSValue* consumeFlexBasis(CSSParserTokenRange& range, - CSSParserMode cssParserMode) { - // FIXME: Support intrinsic dimensions too. - if (range.peek().id() == CSSValueAuto) - return consumeIdent(range); - return consumeLengthOrPercent(range, cssParserMode, ValueRangeNonNegative); -} - static CSSValue* consumeStrokeDasharray(CSSParserTokenRange& range) { CSSValueID id = range.peek().id(); if (id == CSSValueNone) @@ -2595,12 +2580,6 @@ return CSSReflectValue::create(direction, offset, mask); } -static CSSValue* consumeFontSizeAdjust(CSSParserTokenRange& range) { - if (range.peek().id() == CSSValueNone) - return consumeIdent(range); - return consumeNumber(range, ValueRangeNonNegative); -} - static CSSValue* consumeImageOrientation(CSSParserTokenRange& range) { if (range.peek().id() == CSSValueFromImage) return consumeIdent(range); @@ -3415,8 +3394,6 @@ return consumeColumnWidth(m_range); case CSSPropertyColumnCount: return consumeColumnCount(m_range); - case CSSPropertyColumnGap: - return consumeColumnGap(m_range, m_context.mode()); case CSSPropertyColumnSpan: return consumeColumnSpan(m_range); case CSSPropertyAnimationDelay: @@ -3465,10 +3442,6 @@ case CSSPropertyColor: case CSSPropertyBackgroundColor: return consumeColor(m_range, m_context.mode(), inQuirksMode()); - case CSSPropertyCaretColor: - if (m_range.peek().id() == CSSValueAuto) - return consumeIdent(m_range); - return consumeColor(m_range, m_context.mode()); case CSSPropertyWebkitBorderStartWidth: case CSSPropertyWebkitBorderEndWidth: case CSSPropertyWebkitBorderBeforeWidth: @@ -3553,8 +3526,6 @@ case CSSPropertyMarkerEnd: case CSSPropertyMask: return consumeNoneOrURI(m_range); - case CSSPropertyFlexBasis: - return consumeFlexBasis(m_range, m_context.mode()); case CSSPropertyFlexGrow: case CSSPropertyFlexShrink: return consumeNumber(m_range, ValueRangeNonNegative); @@ -3637,9 +3608,6 @@ return consumeWebkitBorderImage(property, m_range, m_context); case CSSPropertyWebkitBoxReflect: return consumeReflect(m_range, m_context); - case CSSPropertyFontSizeAdjust: - ASSERT(RuntimeEnabledFeatures::cssFontSizeAdjustEnabled()); - return consumeFontSizeAdjust(m_range); case CSSPropertyImageOrientation: ASSERT(RuntimeEnabledFeatures::imageOrientationEnabled()); return consumeImageOrientation(m_range);
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPICaretColor.cpp b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPICaretColor.cpp new file mode 100644 index 0000000..4fcb91cc --- /dev/null +++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPICaretColor.cpp
@@ -0,0 +1,20 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/css/properties/CSSPropertyAPICaretColor.h" + +#include "core/css/parser/CSSParserContext.h" +#include "core/css/parser/CSSPropertyParserHelpers.h" + +namespace blink { + +const CSSValue* CSSPropertyAPICaretColor::parseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context) { + if (range.peek().id() == CSSValueAuto) + return CSSPropertyParserHelpers::consumeIdent(range); + return CSSPropertyParserHelpers::consumeColor(range, context.mode()); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIClip.cpp b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIClip.cpp new file mode 100644 index 0000000..77f0bdc --- /dev/null +++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIClip.cpp
@@ -0,0 +1,59 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/css/properties/CSSPropertyAPIClip.h" + +#include "core/css/CSSQuadValue.h" +#include "core/css/parser/CSSParserContext.h" +#include "core/css/parser/CSSPropertyParserHelpers.h" + +namespace blink { + +namespace { + +CSSValue* consumeClipComponent(CSSParserTokenRange& range, + CSSParserMode cssParserMode) { + if (range.peek().id() == CSSValueAuto) + return CSSPropertyParserHelpers::consumeIdent(range); + return CSSPropertyParserHelpers::consumeLength( + range, cssParserMode, ValueRangeAll, + CSSPropertyParserHelpers::UnitlessQuirk::Allow); +} + +} // namespace + +const CSSValue* CSSPropertyAPIClip::parseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context) { + if (range.peek().id() == CSSValueAuto) + return CSSPropertyParserHelpers::consumeIdent(range); + + if (range.peek().functionId() != CSSValueRect) + return nullptr; + + CSSParserTokenRange args = CSSPropertyParserHelpers::consumeFunction(range); + // rect(t, r, b, l) || rect(t r b l) + CSSValue* top = consumeClipComponent(args, context.mode()); + if (!top) + return nullptr; + bool needsComma = + CSSPropertyParserHelpers::consumeCommaIncludingWhitespace(args); + CSSValue* right = consumeClipComponent(args, context.mode()); + if (!right || + (needsComma && + !CSSPropertyParserHelpers::consumeCommaIncludingWhitespace(args))) + return nullptr; + CSSValue* bottom = consumeClipComponent(args, context.mode()); + if (!bottom || + (needsComma && + !CSSPropertyParserHelpers::consumeCommaIncludingWhitespace(args))) + return nullptr; + CSSValue* left = consumeClipComponent(args, context.mode()); + if (!left || !args.atEnd()) + return nullptr; + return CSSQuadValue::create(top, right, bottom, left, + CSSQuadValue::SerializeAsRect); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIColumnGap.cpp b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIColumnGap.cpp new file mode 100644 index 0000000..cc3374b --- /dev/null +++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIColumnGap.cpp
@@ -0,0 +1,21 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/css/properties/CSSPropertyAPIColumnGap.h" + +#include "core/css/parser/CSSParserContext.h" +#include "core/css/parser/CSSPropertyParserHelpers.h" + +namespace blink { + +const CSSValue* CSSPropertyAPIColumnGap::parseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context) { + if (range.peek().id() == CSSValueNormal) + return CSSPropertyParserHelpers::consumeIdent(range); + return CSSPropertyParserHelpers::consumeLength(range, context.mode(), + ValueRangeNonNegative); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFlexBasis.cpp b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFlexBasis.cpp new file mode 100644 index 0000000..6ed445b --- /dev/null +++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFlexBasis.cpp
@@ -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. + +#include "core/css/properties/CSSPropertyAPIFlexBasis.h" + +#include "core/css/parser/CSSParserContext.h" +#include "core/css/parser/CSSPropertyParserHelpers.h" + +namespace blink { + +const CSSValue* CSSPropertyAPIFlexBasis::parseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context) { + // FIXME: Support intrinsic dimensions too. + if (range.peek().id() == CSSValueAuto) + return CSSPropertyParserHelpers::consumeIdent(range); + return CSSPropertyParserHelpers::consumeLengthOrPercent( + range, context.mode(), ValueRangeNonNegative); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFontSizeAdjust.cpp b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFontSizeAdjust.cpp new file mode 100644 index 0000000..4851691 --- /dev/null +++ b/third_party/WebKit/Source/core/css/properties/CSSPropertyAPIFontSizeAdjust.cpp
@@ -0,0 +1,21 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/css/properties/CSSPropertyAPIFontSizeAdjust.h" + +#include "core/css/parser/CSSPropertyParserHelpers.h" +#include "platform/RuntimeEnabledFeatures.h" + +namespace blink { + +const CSSValue* CSSPropertyAPIFontSizeAdjust::parseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context) { + DCHECK(RuntimeEnabledFeatures::cssFontSizeAdjustEnabled()); + if (range.peek().id() == CSSValueNone) + return CSSPropertyParserHelpers::consumeIdent(range); + return CSSPropertyParserHelpers::consumeNumber(range, ValueRangeNonNegative); +} + +} // namespace blink
diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp index 43482a8..d9c8b0f81 100644 --- a/third_party/WebKit/Source/core/dom/Document.cpp +++ b/third_party/WebKit/Source/core/dom/Document.cpp
@@ -487,7 +487,7 @@ TaskRunnerHelper::get(TaskType::UnspecedLoading, this), this, &Document::didAssociateFormControlsTimerFired), - m_timers(TaskRunnerHelper::get(TaskType::Timer, this)->clone()), + m_timers(TaskRunnerHelper::get(TaskType::Timer, this)), m_hasViewportUnits(false), m_parserSyncPolicy(AllowAsynchronousParsing), m_nodeCount(0), @@ -2501,11 +2501,8 @@ clearImportsController(); } - m_timers.setTimerTaskRunner(Platform::current() - ->currentThread() - ->scheduler() - ->timerTaskRunner() - ->clone()); + m_timers.setTimerTaskRunner( + Platform::current()->currentThread()->scheduler()->timerTaskRunner()); if (m_mediaQueryMatcher) m_mediaQueryMatcher->documentDetached();
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunner.cpp b/third_party/WebKit/Source/core/dom/ScriptRunner.cpp index e13964f2..51ed26c 100644 --- a/third_party/WebKit/Source/core/dom/ScriptRunner.cpp +++ b/third_party/WebKit/Source/core/dom/ScriptRunner.cpp
@@ -38,8 +38,7 @@ ScriptRunner::ScriptRunner(Document* document) : m_document(document), - m_taskRunner( - TaskRunnerHelper::get(TaskType::Networking, document)->clone()), + m_taskRunner(TaskRunnerHelper::get(TaskType::Networking, document)), m_numberOfInOrderScriptsWithPendingNotification(0), m_isSuspended(false) { DCHECK(document);
diff --git a/third_party/WebKit/Source/core/dom/ScriptRunner.h b/third_party/WebKit/Source/core/dom/ScriptRunner.h index 1758210..e663412 100644 --- a/third_party/WebKit/Source/core/dom/ScriptRunner.h +++ b/third_party/WebKit/Source/core/dom/ScriptRunner.h
@@ -91,7 +91,7 @@ HeapDeque<Member<ScriptLoader>> m_asyncScriptsToExecuteSoon; HeapDeque<Member<ScriptLoader>> m_inOrderScriptsToExecuteSoon; - std::unique_ptr<WebTaskRunner> m_taskRunner; + RefPtr<WebTaskRunner> m_taskRunner; int m_numberOfInOrderScriptsWithPendingNotification;
diff --git a/third_party/WebKit/Source/core/dom/TaskRunnerHelper.cpp b/third_party/WebKit/Source/core/dom/TaskRunnerHelper.cpp index 2d0ba638..c7f578b3 100644 --- a/third_party/WebKit/Source/core/dom/TaskRunnerHelper.cpp +++ b/third_party/WebKit/Source/core/dom/TaskRunnerHelper.cpp
@@ -13,7 +13,7 @@ namespace blink { -WebTaskRunner* TaskRunnerHelper::get(TaskType type, LocalFrame* frame) { +RefPtr<WebTaskRunner> TaskRunnerHelper::get(TaskType type, LocalFrame* frame) { // TODO(haraken): Optimize the mapping from TaskTypes to task runners. switch (type) { case TaskType::DOMManipulation: @@ -48,18 +48,20 @@ return nullptr; } -WebTaskRunner* TaskRunnerHelper::get(TaskType type, Document* document) { +RefPtr<WebTaskRunner> TaskRunnerHelper::get(TaskType type, Document* document) { return get(type, document ? document->frame() : nullptr); } -WebTaskRunner* TaskRunnerHelper::get(TaskType type, - ExecutionContext* executionContext) { +RefPtr<WebTaskRunner> TaskRunnerHelper::get( + TaskType type, + ExecutionContext* executionContext) { return get(type, executionContext && executionContext->isDocument() ? static_cast<Document*>(executionContext) : nullptr); } -WebTaskRunner* TaskRunnerHelper::get(TaskType type, ScriptState* scriptState) { +RefPtr<WebTaskRunner> TaskRunnerHelper::get(TaskType type, + ScriptState* scriptState) { return get(type, scriptState ? scriptState->getExecutionContext() : nullptr); }
diff --git a/third_party/WebKit/Source/core/dom/TaskRunnerHelper.h b/third_party/WebKit/Source/core/dom/TaskRunnerHelper.h index af9cda1..0ca15474 100644 --- a/third_party/WebKit/Source/core/dom/TaskRunnerHelper.h +++ b/third_party/WebKit/Source/core/dom/TaskRunnerHelper.h
@@ -78,10 +78,10 @@ STATIC_ONLY(TaskRunnerHelper); public: - static WebTaskRunner* get(TaskType, LocalFrame*); - static WebTaskRunner* get(TaskType, Document*); - static WebTaskRunner* get(TaskType, ExecutionContext*); - static WebTaskRunner* get(TaskType, ScriptState*); + static RefPtr<WebTaskRunner> get(TaskType, LocalFrame*); + static RefPtr<WebTaskRunner> get(TaskType, Document*); + static RefPtr<WebTaskRunner> get(TaskType, ExecutionContext*); + static RefPtr<WebTaskRunner> get(TaskType, ScriptState*); }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/events/EventTypeNames.in b/third_party/WebKit/Source/core/events/EventTypeNames.in index 1c81716..458c18e 100644 --- a/third_party/WebKit/Source/core/events/EventTypeNames.in +++ b/third_party/WebKit/Source/core/events/EventTypeNames.in
@@ -272,7 +272,6 @@ webkitprerenderload webkitprerenderstart webkitprerenderstop -webkitresourcetimingbufferfull webkitspeechchange webkitvisibilitychange wheel
diff --git a/third_party/WebKit/Source/core/fetch/FetchContext.h b/third_party/WebKit/Source/core/fetch/FetchContext.h index 7711b932..4de8883 100644 --- a/third_party/WebKit/Source/core/fetch/FetchContext.h +++ b/third_party/WebKit/Source/core/fetch/FetchContext.h
@@ -177,7 +177,7 @@ return priority; } - virtual WebTaskRunner* loadingTaskRunner() const { return nullptr; } + virtual RefPtr<WebTaskRunner> loadingTaskRunner() const { return nullptr; } protected: FetchContext() {}
diff --git a/third_party/WebKit/Source/core/fetch/MockFetchContext.h b/third_party/WebKit/Source/core/fetch/MockFetchContext.h index b90c0fd..01e52d0 100644 --- a/third_party/WebKit/Source/core/fetch/MockFetchContext.h +++ b/third_party/WebKit/Source/core/fetch/MockFetchContext.h
@@ -50,7 +50,7 @@ bool shouldLoadNewResource(Resource::Type) const override { return m_loadPolicy == kShouldLoadNewResource; } - WebTaskRunner* loadingTaskRunner() const override { return m_runner.get(); } + RefPtr<WebTaskRunner> loadingTaskRunner() const override { return m_runner; } void setCachePolicy(CachePolicy policy) { m_policy = policy; } CachePolicy getCachePolicy() const override { return m_policy; } @@ -67,13 +67,13 @@ MockFetchContext(LoadPolicy loadPolicy) : m_loadPolicy(loadPolicy), m_policy(CachePolicyVerify), - m_runner(WTF::wrapUnique(new scheduler::FakeWebTaskRunner)), + m_runner(adoptRef(new scheduler::FakeWebTaskRunner)), m_complete(false), m_transferSize(-1) {} enum LoadPolicy m_loadPolicy; CachePolicy m_policy; - std::unique_ptr<scheduler::FakeWebTaskRunner> m_runner; + RefPtr<scheduler::FakeWebTaskRunner> m_runner; bool m_complete; long long m_transferSize; };
diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp index cd3276d6..449c25fc 100644 --- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp +++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
@@ -88,7 +88,7 @@ m_loader = WTF::wrapUnique(Platform::current()->createURLLoader()); DCHECK(m_loader); m_loader->setDefersLoading(context().defersLoading()); - m_loader->setLoadingTaskRunner(context().loadingTaskRunner()); + m_loader->setLoadingTaskRunner(context().loadingTaskRunner().get()); if (m_isCacheAwareLoadingActivated) { // Override cache policy for cache-aware loading. If this request fails, a
diff --git a/third_party/WebKit/Source/core/frame/DOMTimer.cpp b/third_party/WebKit/Source/core/frame/DOMTimer.cpp index 2b2e2c6..c61ab92 100644 --- a/third_party/WebKit/Source/core/frame/DOMTimer.cpp +++ b/third_party/WebKit/Source/core/frame/DOMTimer.cpp
@@ -184,7 +184,7 @@ action->dispose(); } -WebTaskRunner* DOMTimer::timerTaskRunner() const { +RefPtr<WebTaskRunner> DOMTimer::timerTaskRunner() const { return getExecutionContext()->timers()->timerTaskRunner(); }
diff --git a/third_party/WebKit/Source/core/frame/DOMTimer.h b/third_party/WebKit/Source/core/frame/DOMTimer.h index 935ce517..d84450a0 100644 --- a/third_party/WebKit/Source/core/frame/DOMTimer.h +++ b/third_party/WebKit/Source/core/frame/DOMTimer.h
@@ -83,7 +83,7 @@ int timeoutID); void fired() override; - WebTaskRunner* timerTaskRunner() const override; + RefPtr<WebTaskRunner> timerTaskRunner() const override; int m_timeoutID; int m_nestingLevel;
diff --git a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp index cb039a5..7b5c0f1 100644 --- a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp +++ b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.cpp
@@ -11,8 +11,7 @@ namespace blink { -DOMTimerCoordinator::DOMTimerCoordinator( - std::unique_ptr<WebTaskRunner> timerTaskRunner) +DOMTimerCoordinator::DOMTimerCoordinator(RefPtr<WebTaskRunner> timerTaskRunner) : m_circularSequentialID(0), m_timerNestingLevel(0), m_timerTaskRunner(std::move(timerTaskRunner)) {} @@ -67,7 +66,7 @@ } void DOMTimerCoordinator::setTimerTaskRunner( - std::unique_ptr<WebTaskRunner> timerTaskRunner) { + RefPtr<WebTaskRunner> timerTaskRunner) { m_timerTaskRunner = std::move(timerTaskRunner); }
diff --git a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.h b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.h index 4daceb41..b375d7f7 100644 --- a/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.h +++ b/third_party/WebKit/Source/core/frame/DOMTimerCoordinator.h
@@ -26,7 +26,7 @@ WTF_MAKE_NONCOPYABLE(DOMTimerCoordinator); public: - explicit DOMTimerCoordinator(std::unique_ptr<WebTaskRunner>); + explicit DOMTimerCoordinator(RefPtr<WebTaskRunner>); // Creates and installs a new timer. Returns the assigned ID. int installNewTimeout(ExecutionContext*, @@ -51,9 +51,9 @@ // deeper timer nesting level, see DOMTimer::DOMTimer. void setTimerNestingLevel(int level) { m_timerNestingLevel = level; } - void setTimerTaskRunner(std::unique_ptr<WebTaskRunner>); + void setTimerTaskRunner(RefPtr<WebTaskRunner>); - WebTaskRunner* timerTaskRunner() const { return m_timerTaskRunner.get(); } + RefPtr<WebTaskRunner> timerTaskRunner() const { return m_timerTaskRunner; } DECLARE_TRACE(); // Oilpan. @@ -65,7 +65,7 @@ int m_circularSequentialID; int m_timerNestingLevel; - std::unique_ptr<WebTaskRunner> m_timerTaskRunner; + RefPtr<WebTaskRunner> m_timerTaskRunner; }; } // namespace blink
diff --git a/third_party/WebKit/Source/core/frame/Deprecation.cpp b/third_party/WebKit/Source/core/frame/Deprecation.cpp index bc1957e..f826cc0 100644 --- a/third_party/WebKit/Source/core/frame/Deprecation.cpp +++ b/third_party/WebKit/Source/core/frame/Deprecation.cpp
@@ -357,18 +357,6 @@ "https://www.chromestatus.com/features/6750456638341120 for more " "details."; - case UseCounter::PrefixedPerformanceClearResourceTimings: - return replacedBy("'Performance.webkitClearResourceTimings'", - "'Performance.clearResourceTimings'"); - - case UseCounter::PrefixedPerformanceSetResourceTimingBufferSize: - return replacedBy("'Performance.webkitSetResourceTimingBufferSize'", - "'Performance.setResourceTimingBufferSize'"); - - case UseCounter::PrefixedPerformanceResourceTimingBufferFull: - return replacedBy("'Performance.onwebkitresourcetimingbufferfull'", - "'Performance.onresourcetimingbufferfull'"); - case UseCounter::EncryptedMediaAllSelectedContentTypesMissingCodecs: return String::format( "EME requires that contentType strings accepted by "
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp index 976a6f63..483b20d 100644 --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.cpp
@@ -274,7 +274,10 @@ LocalDOMWindow::LocalDOMWindow(LocalFrame& frame) : m_frame(&frame), m_visualViewport(DOMVisualViewport::create(this)), - m_unusedPreloadsTimer(this, &LocalDOMWindow::warnUnusedPreloads), + m_unusedPreloadsTimer( + TaskRunnerHelper::get(TaskType::UnspecedTimer, &frame), + this, + &LocalDOMWindow::warnUnusedPreloads), m_shouldPrintWhenFinishedLoading(false), m_customElements(this, nullptr) {}
diff --git a/third_party/WebKit/Source/core/frame/LocalDOMWindow.h b/third_party/WebKit/Source/core/frame/LocalDOMWindow.h index 7903760..337297b 100644 --- a/third_party/WebKit/Source/core/frame/LocalDOMWindow.h +++ b/third_party/WebKit/Source/core/frame/LocalDOMWindow.h
@@ -263,7 +263,7 @@ Member<LocalFrame> m_frame; Member<Document> m_document; Member<DOMVisualViewport> m_visualViewport; - Timer<LocalDOMWindow> m_unusedPreloadsTimer; + TaskRunnerTimer<LocalDOMWindow> m_unusedPreloadsTimer; bool m_shouldPrintWhenFinishedLoading;
diff --git a/third_party/WebKit/Source/core/frame/LocalFrame.cpp b/third_party/WebKit/Source/core/frame/LocalFrame.cpp index 1907c61..f866542c 100644 --- a/third_party/WebKit/Source/core/frame/LocalFrame.cpp +++ b/third_party/WebKit/Source/core/frame/LocalFrame.cpp
@@ -148,8 +148,9 @@ // Rasterize upfront, since DragImage::create() is going to do it anyway // (SkImage::asLegacyBitmap). - sk_sp<SkSurface> surface = - SkSurface::MakeRasterN32Premul(m_bounds.width(), m_bounds.height()); + SkSurfaceProps surfaceProps(0, kUnknown_SkPixelGeometry); + sk_sp<SkSurface> surface = SkSurface::MakeRasterN32Premul( + m_bounds.width(), m_bounds.height(), &surfaceProps); if (!surface) return nullptr;
diff --git a/third_party/WebKit/Source/core/frame/SubresourceIntegrity.cpp b/third_party/WebKit/Source/core/frame/SubresourceIntegrity.cpp index edf24cf..6000fdc 100644 --- a/third_party/WebKit/Source/core/frame/SubresourceIntegrity.cpp +++ b/third_party/WebKit/Source/core/frame/SubresourceIntegrity.cpp
@@ -7,6 +7,7 @@ #include "core/HTMLNames.h" #include "core/dom/Document.h" #include "core/dom/Element.h" +#include "core/dom/ExecutionContext.h" #include "core/fetch/Resource.h" #include "core/frame/UseCounter.h" #include "core/inspector/ConsoleMessage.h" @@ -38,8 +39,9 @@ return c >= 0x21 && c <= 0x7e; } -static void logErrorToConsole(const String& message, Document& document) { - document.addConsoleMessage(ConsoleMessage::create( +static void logErrorToConsole(const String& message, + ExecutionContext& executionContext) { + executionContext.addConsoleMessage(ConsoleMessage::create( SecurityMessageSource, ErrorMessageLevel, message)); } @@ -156,18 +158,18 @@ const char* content, size_t size, const KURL& resourceUrl, - Document& document, + ExecutionContext& executionContext, String& errorMessage) { IntegrityMetadataSet metadataSet; - IntegrityParseResult integrityParseResult = - parseIntegrityAttribute(integrityMetadata, metadataSet, &document); + IntegrityParseResult integrityParseResult = parseIntegrityAttribute( + integrityMetadata, metadataSet, &executionContext); // On failed parsing, there's no need to log an error here, as // parseIntegrityAttribute() will output an appropriate console message. if (integrityParseResult != IntegrityParseValidResult) return true; return CheckSubresourceIntegrity(metadataSet, content, size, resourceUrl, - document, errorMessage); + executionContext, errorMessage); } bool SubresourceIntegrity::CheckSubresourceIntegrity( @@ -175,7 +177,7 @@ const char* content, size_t size, const KURL& resourceUrl, - Document& document, + ExecutionContext& executionContext, String& errorMessage) { if (!metadataSet.size()) return true; @@ -202,7 +204,7 @@ hashVector.size()); if (DigestsEqual(digest, convertedHashVector)) { - UseCounter::count(document, + UseCounter::count(&executionContext, UseCounter::SRIElementWithMatchingIntegrityAttribute); return true; } @@ -226,7 +228,7 @@ "There was an error computing an integrity value for resource '" + resourceUrl.elidedString() + "'. The resource has been blocked."; } - UseCounter::count(document, + UseCounter::count(&executionContext, UseCounter::SRIElementWithNonMatchingIntegrityAttribute); return false; } @@ -317,9 +319,10 @@ } SubresourceIntegrity::IntegrityParseResult -SubresourceIntegrity::parseIntegrityAttribute(const WTF::String& attribute, - IntegrityMetadataSet& metadataSet, - Document* document) { +SubresourceIntegrity::parseIntegrityAttribute( + const WTF::String& attribute, + IntegrityMetadataSet& metadataSet, + ExecutionContext* executionContext) { Vector<UChar> characters; attribute.stripWhiteSpace().appendTo(characters); const UChar* position = characters.data(); @@ -351,13 +354,14 @@ // Unknown hash algorithms are treated as if they're not present, // and thus are not marked as an error, they're just skipped. skipUntil<UChar, isASCIISpace>(position, end); - if (document) { + if (executionContext) { logErrorToConsole("Error parsing 'integrity' attribute ('" + attribute + "'). The specified hash algorithm must be one of " "'sha256', 'sha384', or 'sha512'.", - *document); + *executionContext); UseCounter::count( - *document, UseCounter::SRIElementWithUnparsableIntegrityAttribute); + executionContext, + UseCounter::SRIElementWithUnparsableIntegrityAttribute); } continue; } @@ -365,14 +369,15 @@ if (parseResult == AlgorithmUnparsable) { error = true; skipUntil<UChar, isASCIISpace>(position, end); - if (document) { + if (executionContext) { logErrorToConsole("Error parsing 'integrity' attribute ('" + attribute + "'). The hash algorithm must be one of 'sha256', " "'sha384', or 'sha512', followed by a '-' " "character.", - *document); + *executionContext); UseCounter::count( - *document, UseCounter::SRIElementWithUnparsableIntegrityAttribute); + executionContext, + UseCounter::SRIElementWithUnparsableIntegrityAttribute); } continue; } @@ -382,13 +387,14 @@ if (!parseDigest(position, currentIntegrityEnd, digest)) { error = true; skipUntil<UChar, isASCIISpace>(position, end); - if (document) { + if (executionContext) { logErrorToConsole( "Error parsing 'integrity' attribute ('" + attribute + "'). The digest must be a valid, base64-encoded value.", - *document); + *executionContext); UseCounter::count( - *document, UseCounter::SRIElementWithUnparsableIntegrityAttribute); + executionContext, + UseCounter::SRIElementWithUnparsableIntegrityAttribute); } continue; } @@ -400,11 +406,12 @@ if (skipExactly<UChar>(position, end, '?')) { const UChar* begin = position; skipWhile<UChar, isValueCharacter>(position, end); - if (begin != position && document) + if (begin != position && executionContext) { logErrorToConsole( "Ignoring unrecogized 'integrity' attribute option '" + String(begin, position - begin) + "'.", - *document); + *executionContext); + } } IntegrityMetadata integrityMetadata(digest, algorithm);
diff --git a/third_party/WebKit/Source/core/frame/SubresourceIntegrity.h b/third_party/WebKit/Source/core/frame/SubresourceIntegrity.h index 1f9bddbe..b42f7b8 100644 --- a/third_party/WebKit/Source/core/frame/SubresourceIntegrity.h +++ b/third_party/WebKit/Source/core/frame/SubresourceIntegrity.h
@@ -14,8 +14,8 @@ namespace blink { -class Document; class Element; +class ExecutionContext; class KURL; class Resource; @@ -46,13 +46,13 @@ const char*, size_t, const KURL& resourceUrl, - Document&, + ExecutionContext&, WTF::String&); static bool CheckSubresourceIntegrity(const IntegrityMetadataSet&, const char*, size_t, const KURL& resourceUrl, - Document&, + ExecutionContext&, WTF::String&); // The IntegrityMetadataSet arguments are out parameters which contain the @@ -63,7 +63,7 @@ static IntegrityParseResult parseIntegrityAttribute( const WTF::String& attribute, IntegrityMetadataSet&, - Document*); + ExecutionContext*); private: friend class SubresourceIntegrityTest;
diff --git a/third_party/WebKit/Source/core/frame/UseCounter.h b/third_party/WebKit/Source/core/frame/UseCounter.h index 0cb7058..ed95a79f 100644 --- a/third_party/WebKit/Source/core/frame/UseCounter.h +++ b/third_party/WebKit/Source/core/frame/UseCounter.h
@@ -270,8 +270,6 @@ SelectionSetPosition = 327, AnimationFinishEvent = 328, SVGSVGElementInXMLDocument = 329, - PrefixedPerformanceClearResourceTimings = 341, - PrefixedPerformanceSetResourceTimingBufferSize = 342, EventSrcElement = 343, EventCancelBubble = 344, EventPath = 345, @@ -682,7 +680,6 @@ LinkRelPrefetch = 917, LinkRelPrerender = 918, LinkRelNext = 919, - PrefixedPerformanceResourceTimingBufferFull = 920, CSSValuePrefixedMinContent = 921, CSSValuePrefixedMaxContent = 922, CSSValuePrefixedFitContent = 923,
diff --git a/third_party/WebKit/Source/core/html/HTMLElement.cpp b/third_party/WebKit/Source/core/html/HTMLElement.cpp index 729ac0e..deaffb10 100644 --- a/third_party/WebKit/Source/core/html/HTMLElement.cpp +++ b/third_party/WebKit/Source/core/html/HTMLElement.cpp
@@ -430,11 +430,14 @@ Element::attributeChanged(params); if (params.reason != AttributeModificationReason::kDirectly) return; - if (adjustedFocusedElementInTreeScope() != this) - return; + // adjustedFocusedElementInTreeScope() is not trivial. We should check + // attribute names, then call adjustedFocusedElementInTreeScope(). if (params.name == hiddenAttr && !params.newValue.isNull()) { - blur(); + if (adjustedFocusedElementInTreeScope() == this) + blur(); } else if (params.name == contenteditableAttr) { + if (adjustedFocusedElementInTreeScope() != this) + return; // The attribute change may cause supportsFocus() to return false // for the element which had focus. //
diff --git a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp index 152defdd..49b3dbe 100644 --- a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp +++ b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.cpp
@@ -88,7 +88,7 @@ WeakPtr<BackgroundHTMLParser> BackgroundHTMLParser::create( std::unique_ptr<Configuration> config, - std::unique_ptr<WebTaskRunner> loadingTaskRunner) { + RefPtr<WebTaskRunner> loadingTaskRunner) { auto* backgroundParser = new BackgroundHTMLParser(std::move(config), std::move(loadingTaskRunner)); return backgroundParser->m_weakFactory.createWeakPtr(); @@ -109,7 +109,7 @@ BackgroundHTMLParser::BackgroundHTMLParser( std::unique_ptr<Configuration> config, - std::unique_ptr<WebTaskRunner> loadingTaskRunner) + RefPtr<WebTaskRunner> loadingTaskRunner) : m_weakFactory(this), m_token(WTF::wrapUnique(new HTMLToken)), m_tokenizer(HTMLTokenizer::create(config->options)),
diff --git a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.h b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.h index 0b4482a1..b201655 100644 --- a/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.h +++ b/third_party/WebKit/Source/core/html/parser/BackgroundHTMLParser.h
@@ -71,7 +71,7 @@ // thread: it must first be initialized by calling init(), and free by // calling stop(). static WeakPtr<BackgroundHTMLParser> create(std::unique_ptr<Configuration>, - std::unique_ptr<WebTaskRunner>); + RefPtr<WebTaskRunner>); void init(const KURL& documentURL, std::unique_ptr<CachedDocumentParameters>, const MediaValuesCached::MediaValuesCachedData&); @@ -101,8 +101,7 @@ void forcePlaintextForTextDocument(); private: - BackgroundHTMLParser(std::unique_ptr<Configuration>, - std::unique_ptr<WebTaskRunner>); + BackgroundHTMLParser(std::unique_ptr<Configuration>, RefPtr<WebTaskRunner>); ~BackgroundHTMLParser(); void appendDecodedBytes(const String&); @@ -140,7 +139,7 @@ std::unique_ptr<TokenPreloadScanner> m_preloadScanner; std::unique_ptr<TextResourceDecoder> m_decoder; DocumentEncodingData m_lastSeenEncodingData; - std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; + RefPtr<WebTaskRunner> m_loadingTaskRunner; RefPtr<TokenizedChunkQueue> m_tokenizedChunkQueue; // Index into |m_pendingTokens| of the last <meta> csp token found. Will be
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp index ab1e39d..d3d8d1e 100644 --- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp +++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.cpp
@@ -133,7 +133,7 @@ ? HTMLTokenizer::create(m_options) : nullptr), m_loadingTaskRunner( - TaskRunnerHelper::get(TaskType::Networking, &document)->clone()), + TaskRunnerHelper::get(TaskType::Networking, &document)), m_parserScheduler( syncPolicy == AllowAsynchronousParsing ? HTMLParserScheduler::create(this, m_loadingTaskRunner.get()) @@ -851,8 +851,8 @@ // The background parser is created on the main thread, but may otherwise // only be used from the parser thread. - m_backgroundParser = BackgroundHTMLParser::create( - std::move(config), m_loadingTaskRunner->clone()); + m_backgroundParser = + BackgroundHTMLParser::create(std::move(config), m_loadingTaskRunner); // TODO(csharrison): This is a hack to initialize MediaValuesCached on the // correct thread. We should get rid of it. postTaskToLookaheadParser(
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h index 108fdac..d7c213e 100644 --- a/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h +++ b/third_party/WebKit/Source/core/html/parser/HTMLDocumentParser.h
@@ -258,7 +258,7 @@ // A scanner used only for input provided to the insert() method. std::unique_ptr<HTMLPreloadScanner> m_insertionPreloadScanner; - std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; + RefPtr<WebTaskRunner> m_loadingTaskRunner; Member<HTMLParserScheduler> m_parserScheduler; HTMLSourceTracker m_sourceTracker; TextPosition m_textPosition;
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp index f651555..9802d5a 100644 --- a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp +++ b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
@@ -56,10 +56,11 @@ m_processedElementTokens += count; } -HTMLParserScheduler::HTMLParserScheduler(HTMLDocumentParser* parser, - WebTaskRunner* loadingTaskRunner) +HTMLParserScheduler::HTMLParserScheduler( + HTMLDocumentParser* parser, + RefPtr<WebTaskRunner> loadingTaskRunner) : m_parser(parser), - m_loadingTaskRunner(loadingTaskRunner->clone()), + m_loadingTaskRunner(std::move(loadingTaskRunner)), m_isSuspendedWithActiveTimer(false) {} HTMLParserScheduler::~HTMLParserScheduler() {}
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h index c278799..81bfe19 100644 --- a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h +++ b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h
@@ -67,8 +67,8 @@ public: static HTMLParserScheduler* create(HTMLDocumentParser* parser, - WebTaskRunner* loadingTaskRunner) { - return new HTMLParserScheduler(parser, loadingTaskRunner); + RefPtr<WebTaskRunner> loadingTaskRunner) { + return new HTMLParserScheduler(parser, std::move(loadingTaskRunner)); } ~HTMLParserScheduler(); @@ -93,13 +93,13 @@ DECLARE_TRACE(); private: - HTMLParserScheduler(HTMLDocumentParser*, WebTaskRunner*); + HTMLParserScheduler(HTMLDocumentParser*, RefPtr<WebTaskRunner>); bool shouldYield(const SpeculationsPumpSession&, bool startingScript) const; void continueParsing(); Member<HTMLDocumentParser> m_parser; - std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; + RefPtr<WebTaskRunner> m_loadingTaskRunner; TaskHandle m_cancellableContinueParseTaskHandle; bool m_isSuspendedWithActiveTimer;
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp index bee46e6..2fa3ee2 100644 --- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp +++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.cpp
@@ -260,20 +260,20 @@ BackgroundTaskRunner::TaskSizeShortRunningTask; if (arrayBuffer->byteLength() >= longTaskByteLengthThreshold) taskSize = BackgroundTaskRunner::TaskSizeLongRunningTask; - WebTaskRunner* taskRunner = + RefPtr<WebTaskRunner> taskRunner = Platform::current()->currentThread()->getWebTaskRunner(); BackgroundTaskRunner::postOnBackgroundThread( BLINK_FROM_HERE, crossThreadBind( &ImageBitmapFactories::ImageBitmapLoader::decodeImageOnDecoderThread, - wrapCrossThreadPersistent(this), crossThreadUnretained(taskRunner), + wrapCrossThreadPersistent(this), std::move(taskRunner), wrapCrossThreadPersistent(arrayBuffer), m_options.premultiplyAlpha(), m_options.colorSpaceConversion()), taskSize); } void ImageBitmapFactories::ImageBitmapLoader::decodeImageOnDecoderThread( - WebTaskRunner* taskRunner, + RefPtr<WebTaskRunner> taskRunner, DOMArrayBuffer* arrayBuffer, const String& premultiplyAlphaOption, const String& colorSpaceConversionOption) {
diff --git a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h index e2aa3fb..7add425 100644 --- a/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h +++ b/third_party/WebKit/Source/core/imagebitmap/ImageBitmapFactories.h
@@ -129,7 +129,7 @@ void rejectPromise(); void scheduleAsyncImageBitmapDecoding(DOMArrayBuffer*); - void decodeImageOnDecoderThread(WebTaskRunner*, + void decodeImageOnDecoderThread(RefPtr<WebTaskRunner>, DOMArrayBuffer*, const String& premultiplyAlphaOption, const String& colorSpaceConversionOption);
diff --git a/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp b/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp index 3fcc3ca5..07834b3 100644 --- a/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp +++ b/third_party/WebKit/Source/core/layout/ImageQualityControllerTest.cpp
@@ -154,7 +154,7 @@ static std::unique_ptr<MockTimer> create(ImageQualityController* o, TimerFiredFunction f) { - auto taskRunner = WTF::wrapUnique(new scheduler::FakeWebTaskRunner); + auto taskRunner = adoptRef(new scheduler::FakeWebTaskRunner); return WTF::wrapUnique(new MockTimer(std::move(taskRunner), o, f)); } @@ -166,13 +166,13 @@ void setTime(double newTime) { m_taskRunner->setTime(newTime); } private: - MockTimer(std::unique_ptr<scheduler::FakeWebTaskRunner> taskRunner, + MockTimer(RefPtr<scheduler::FakeWebTaskRunner> taskRunner, ImageQualityController* o, TimerFiredFunction f) - : TaskRunnerTimer(taskRunner.get(), o, f), + : TaskRunnerTimer(taskRunner, o, f), m_taskRunner(std::move(taskRunner)) {} - std::unique_ptr<scheduler::FakeWebTaskRunner> m_taskRunner; + RefPtr<scheduler::FakeWebTaskRunner> m_taskRunner; DISALLOW_COPY_AND_ASSIGN(MockTimer); };
diff --git a/third_party/WebKit/Source/core/layout/LayoutTheme.h b/third_party/WebKit/Source/core/layout/LayoutTheme.h index 598e5a8..9744221 100644 --- a/third_party/WebKit/Source/core/layout/LayoutTheme.h +++ b/third_party/WebKit/Source/core/layout/LayoutTheme.h
@@ -58,6 +58,10 @@ virtual ThemePainter& painter() = 0; + // This function is called after associated WebThemeEngine instance + // was replaced. This is called only in tests. + virtual void didChangeThemeEngine() {} + static void setSizeIfAuto(ComputedStyle&, const IntSize&); // This method is called whenever style has been computed for an element and
diff --git a/third_party/WebKit/Source/core/layout/LayoutThemeDefault.cpp b/third_party/WebKit/Source/core/layout/LayoutThemeDefault.cpp index 53356ee..728b3e3 100644 --- a/third_party/WebKit/Source/core/layout/LayoutThemeDefault.cpp +++ b/third_party/WebKit/Source/core/layout/LayoutThemeDefault.cpp
@@ -363,6 +363,10 @@ return originalSize * style.effectiveZoom(); } +void LayoutThemeDefault::didChangeThemeEngine() { + m_menuListArrowWidthInDIP = 0; +} + // static void LayoutThemeDefault::setDefaultFontSize(int fontSize) { LayoutThemeFontProvider::setDefaultFontSize(fontSize);
diff --git a/third_party/WebKit/Source/core/layout/LayoutThemeDefault.h b/third_party/WebKit/Source/core/layout/LayoutThemeDefault.h index 498edfd..c577078 100644 --- a/third_party/WebKit/Source/core/layout/LayoutThemeDefault.h +++ b/third_party/WebKit/Source/core/layout/LayoutThemeDefault.h
@@ -147,6 +147,7 @@ private: ThemePainter& painter() override { return m_painter; } + void didChangeThemeEngine() override; int menuListInternalPadding(const ComputedStyle&, int padding) const;
diff --git a/third_party/WebKit/Source/core/loader/EmptyClients.cpp b/third_party/WebKit/Source/core/loader/EmptyClients.cpp index c4eb99b5..6fc8717d 100644 --- a/third_party/WebKit/Source/core/loader/EmptyClients.cpp +++ b/third_party/WebKit/Source/core/loader/EmptyClients.cpp
@@ -73,20 +73,20 @@ public: EmptyFrameScheduler() { DCHECK(isMainThread()); } void setFrameVisible(bool) override {} - WebTaskRunner* loadingTaskRunner() override; - WebTaskRunner* timerTaskRunner() override; - WebTaskRunner* unthrottledTaskRunner() override; + RefPtr<WebTaskRunner> loadingTaskRunner() override; + RefPtr<WebTaskRunner> timerTaskRunner() override; + RefPtr<WebTaskRunner> unthrottledTaskRunner() override; }; -WebTaskRunner* EmptyFrameScheduler::loadingTaskRunner() { +RefPtr<WebTaskRunner> EmptyFrameScheduler::loadingTaskRunner() { return Platform::current()->mainThread()->getWebTaskRunner(); } -WebTaskRunner* EmptyFrameScheduler::timerTaskRunner() { +RefPtr<WebTaskRunner> EmptyFrameScheduler::timerTaskRunner() { return Platform::current()->mainThread()->getWebTaskRunner(); } -WebTaskRunner* EmptyFrameScheduler::unthrottledTaskRunner() { +RefPtr<WebTaskRunner> EmptyFrameScheduler::unthrottledTaskRunner() { return Platform::current()->mainThread()->getWebTaskRunner(); }
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp index 355011b..809ae74e 100644 --- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp +++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
@@ -994,7 +994,7 @@ return priority; } -WebTaskRunner* FrameFetchContext::loadingTaskRunner() const { +RefPtr<WebTaskRunner> FrameFetchContext::loadingTaskRunner() const { return frame()->frameScheduler()->loadingTaskRunner(); }
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.h b/third_party/WebKit/Source/core/loader/FrameFetchContext.h index 19aab59..57a534c 100644 --- a/third_party/WebKit/Source/core/loader/FrameFetchContext.h +++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.h
@@ -155,7 +155,7 @@ ResourceLoadPriority modifyPriorityForExperiments( ResourceLoadPriority) override; - WebTaskRunner* loadingTaskRunner() const override; + RefPtr<WebTaskRunner> loadingTaskRunner() const override; DECLARE_VIRTUAL_TRACE();
diff --git a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp index 372dd6a4..cf094436 100644 --- a/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp +++ b/third_party/WebKit/Source/core/loader/resource/ImageResourceTest.cpp
@@ -182,13 +182,13 @@ return ResourceRequestBlockedReason::None; } bool shouldLoadNewResource(Resource::Type) const override { return true; } - WebTaskRunner* loadingTaskRunner() const override { return m_runner.get(); } + RefPtr<WebTaskRunner> loadingTaskRunner() const override { return m_runner; } private: ImageResourceTestMockFetchContext() - : m_runner(WTF::wrapUnique(new scheduler::FakeWebTaskRunner)) {} + : m_runner(adoptRef(new scheduler::FakeWebTaskRunner)) {} - std::unique_ptr<scheduler::FakeWebTaskRunner> m_runner; + RefPtr<scheduler::FakeWebTaskRunner> m_runner; }; // Convenience class that registers a mocked URL load on construction, and
diff --git a/third_party/WebKit/Source/core/timing/Performance.idl b/third_party/WebKit/Source/core/timing/Performance.idl index bfe27d5..0140c467 100644 --- a/third_party/WebKit/Source/core/timing/Performance.idl +++ b/third_party/WebKit/Source/core/timing/Performance.idl
@@ -51,11 +51,6 @@ void setResourceTimingBufferSize(unsigned long maxSize); attribute EventHandler onresourcetimingbufferfull; - // TODO(ksakamoto): Remove these prefixed APIs. - [DeprecateAs=PrefixedPerformanceClearResourceTimings, ImplementedAs=clearResourceTimings] void webkitClearResourceTimings(); - [DeprecateAs=PrefixedPerformanceSetResourceTimingBufferSize, ImplementedAs=setResourceTimingBufferSize] void webkitSetResourceTimingBufferSize(unsigned long maxSize); - [DeprecateAs=PrefixedPerformanceResourceTimingBufferFull] attribute EventHandler onwebkitresourcetimingbufferfull; - // Navigation Timing // https://w3c.github.io/navigation-timing/#extensions-to-the-performance-interface [SameObject, Measure] readonly attribute PerformanceTiming timing;
diff --git a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp index 320aad6..df50c03 100644 --- a/third_party/WebKit/Source/core/timing/PerformanceBase.cpp +++ b/third_party/WebKit/Source/core/timing/PerformanceBase.cpp
@@ -222,11 +222,8 @@ void PerformanceBase::setResourceTimingBufferSize(unsigned size) { m_resourceTimingBufferSize = size; - if (isResourceTimingBufferFull()) { + if (isResourceTimingBufferFull()) dispatchEvent(Event::create(EventTypeNames::resourcetimingbufferfull)); - dispatchEvent( - Event::create(EventTypeNames::webkitresourcetimingbufferfull)); - } } void PerformanceBase::clearFrameTimings() { @@ -406,11 +403,8 @@ void PerformanceBase::addResourceTimingBuffer(PerformanceEntry& entry) { m_resourceTimingBuffer.push_back(&entry); - if (isResourceTimingBufferFull()) { + if (isResourceTimingBufferFull()) dispatchEvent(Event::create(EventTypeNames::resourcetimingbufferfull)); - dispatchEvent( - Event::create(EventTypeNames::webkitresourcetimingbufferfull)); - } } bool PerformanceBase::isResourceTimingBufferFull() {
diff --git a/third_party/WebKit/Source/core/timing/PerformanceBase.h b/third_party/WebKit/Source/core/timing/PerformanceBase.h index d455a48..508f492b 100644 --- a/third_party/WebKit/Source/core/timing/PerformanceBase.h +++ b/third_party/WebKit/Source/core/timing/PerformanceBase.h
@@ -96,7 +96,6 @@ void setResourceTimingBufferSize(unsigned); DEFINE_ATTRIBUTE_EVENT_LISTENER(resourcetimingbufferfull); - DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitresourcetimingbufferfull); void clearFrameTimings(); void setFrameTimingBufferSize(unsigned);
diff --git a/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.cpp b/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.cpp index ad238eeb..e0dd0e4 100644 --- a/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.cpp +++ b/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.cpp
@@ -25,7 +25,7 @@ } } -WebTaskRunner* ParentFrameTaskRunners::get(TaskType type) { +RefPtr<WebTaskRunner> ParentFrameTaskRunners::get(TaskType type) { MutexLocker lock(m_taskRunnersMutex); return m_taskRunners.get(type); }
diff --git a/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.h b/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.h index 64f4f30..c8bd52f 100644 --- a/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.h +++ b/third_party/WebKit/Source/core/workers/ParentFrameTaskRunners.h
@@ -38,13 +38,15 @@ } // Might return nullptr for unsupported task types. - WebTaskRunner* get(TaskType); + RefPtr<WebTaskRunner> get(TaskType); DECLARE_VIRTUAL_TRACE(); private: - using TaskRunnerHashMap = - HashMap<TaskType, WebTaskRunner*, WTF::IntHash<TaskType>, TaskTypeTraits>; + using TaskRunnerHashMap = HashMap<TaskType, + RefPtr<WebTaskRunner>, + WTF::IntHash<TaskType>, + TaskTypeTraits>; // LocalFrame could be nullptr if the worker is not associated with a // particular local frame.
diff --git a/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp b/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp index 4ce3ed5..c7a2b074 100644 --- a/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp +++ b/third_party/WebKit/Source/core/workers/WorkerGlobalScope.cpp
@@ -317,11 +317,8 @@ m_closing(false), m_eventQueue(WorkerEventQueue::create(this)), m_workerClients(workerClients), - m_timers(Platform::current() - ->currentThread() - ->scheduler() - ->timerTaskRunner() - ->clone()), + m_timers( + Platform::current()->currentThread()->scheduler()->timerTaskRunner()), m_timeOrigin(timeOrigin), m_lastPendingErrorEventId(0) { InstanceCounters::incrementCounter(
diff --git a/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js b/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js index e8bba7b..a694352 100644 --- a/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js +++ b/third_party/WebKit/Source/devtools/front_end/screencast/ScreencastView.js
@@ -127,8 +127,10 @@ } dimensions.width *= window.devicePixelRatio; dimensions.height *= window.devicePixelRatio; + // Note: startScreencast with and height expect to be integers so must be floored. this._target.pageAgent().startScreencast( - 'jpeg', 80, Math.min(maxImageDimension, dimensions.width), Math.min(maxImageDimension, dimensions.height)); + 'jpeg', 80, Math.floor(Math.min(maxImageDimension, dimensions.width)), + Math.floor(Math.min(maxImageDimension, dimensions.height))); this._target.emulationAgent().setTouchEmulationEnabled(true); this._domModel.setHighlighter(this); }
diff --git a/third_party/WebKit/Source/devtools/front_end/ui/View.js b/third_party/WebKit/Source/devtools/front_end/ui/View.js index a0eef03d..1e157e93 100644 --- a/third_party/WebKit/Source/devtools/front_end/ui/View.js +++ b/third_party/WebKit/Source/devtools/front_end/ui/View.js
@@ -442,6 +442,13 @@ this._materializePromise = Promise.all(promises); return this._materializePromise; } + + /** + * @override + */ + wasShown() { + this._materialize(); + } }; /** @@ -709,7 +716,8 @@ this.appendView(view, insertBefore); this._tabbedPane.selectTab(view.viewId()); this._tabbedPane.focus(); - return this._materializeWidget(view); + var widget = /** @type {!UI.ViewManager._ContainerWidget} */ (this._tabbedPane.tabView(view.viewId())); + return widget._materialize(); } /** @@ -737,8 +745,6 @@ if (!view) return; - this._materializeWidget(view); - if (view.isCloseable()) { var tabs = this._closeableTabSetting.get(); if (!tabs[tabId]) { @@ -761,15 +767,6 @@ } /** - * @param {!UI.View} view - * @return {!Promise} - */ - _materializeWidget(view) { - var widget = /** @type {!UI.ViewManager._ContainerWidget} */ (this._tabbedPane.tabView(view.viewId())); - return widget._materialize(); - } - - /** * @param {!Common.Event} event */ _persistTabOrder(event) {
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.cpp index 5cfa298e..dcc7a52 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.cpp +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.cpp
@@ -41,7 +41,6 @@ BluetoothRemoteGATTCharacteristic* BluetoothAttributeInstanceMap::getOrCreateRemoteGATTCharacteristic( ExecutionContext* context, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr remoteGATTCharacteristic, BluetoothRemoteGATTService* service) { @@ -51,8 +50,7 @@ if (!characteristic) { characteristic = BluetoothRemoteGATTCharacteristic::create( - context, serviceInstanceId, std::move(remoteGATTCharacteristic), - service, m_device); + context, std::move(remoteGATTCharacteristic), service, m_device); m_characteristicIdToObject.add(instanceId, characteristic); }
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.h index 65e55a25b..b5bfd9aa 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.h +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothAttributeInstanceMap.h
@@ -44,7 +44,6 @@ // the map. BluetoothRemoteGATTCharacteristic* getOrCreateRemoteGATTCharacteristic( ExecutionContext*, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr, BluetoothRemoteGATTService*);
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp index ee156e5..a39f953 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.cpp
@@ -51,11 +51,10 @@ BluetoothRemoteGATTCharacteristic* BluetoothDevice::getOrCreateRemoteGATTCharacteristic( ExecutionContext* context, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr characteristic, BluetoothRemoteGATTService* service) { return m_attributeInstanceMap->getOrCreateRemoteGATTCharacteristic( - context, serviceInstanceId, std::move(characteristic), service); + context, std::move(characteristic), service); } bool BluetoothDevice::isValidCharacteristic(
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h index 317c43e0..a1798b8 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothDevice.h
@@ -53,7 +53,6 @@ BluetoothRemoteGATTCharacteristic* getOrCreateRemoteGATTCharacteristic( ExecutionContext*, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr, BluetoothRemoteGATTService*); bool isValidCharacteristic(const String& characteristicInstanceId);
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.cpp index 9a55773..49afc52 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.cpp +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.cpp
@@ -42,12 +42,10 @@ BluetoothRemoteGATTCharacteristic::BluetoothRemoteGATTCharacteristic( ExecutionContext* context, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr characteristic, BluetoothRemoteGATTService* service, BluetoothDevice* device) : ContextLifecycleObserver(context), - m_serviceInstanceId(serviceInstanceId), m_characteristic(std::move(characteristic)), m_service(service), m_stopped(false), @@ -58,12 +56,11 @@ BluetoothRemoteGATTCharacteristic* BluetoothRemoteGATTCharacteristic::create( ExecutionContext* context, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr characteristic, BluetoothRemoteGATTService* service, BluetoothDevice* device) { return new BluetoothRemoteGATTCharacteristic( - context, serviceInstanceId, std::move(characteristic), service, device); + context, std::move(characteristic), service, device); } void BluetoothRemoteGATTCharacteristic::setValue(DOMDataView* domDataView) {
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.h b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.h index 01166db..1d05437 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.h +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTCharacteristic.h
@@ -42,14 +42,12 @@ public: explicit BluetoothRemoteGATTCharacteristic( ExecutionContext*, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr, BluetoothRemoteGATTService*, BluetoothDevice*); static BluetoothRemoteGATTCharacteristic* create( ExecutionContext*, - const String& serviceInstanceId, mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr, BluetoothRemoteGATTService*, BluetoothDevice*); @@ -106,7 +104,6 @@ void NotificationsCallback(ScriptPromiseResolver*, mojom::blink::WebBluetoothResult); - const String m_serviceInstanceId; mojom::blink::WebBluetoothRemoteGATTCharacteristicPtr m_characteristic; Member<BluetoothRemoteGATTService> m_service; bool m_stopped;
diff --git a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp index a338fc0..e25183c 100644 --- a/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp +++ b/third_party/WebKit/Source/modules/bluetooth/BluetoothRemoteGATTService.cpp
@@ -71,7 +71,7 @@ if (quantity == mojom::blink::WebBluetoothGATTQueryQuantity::SINGLE) { DCHECK_EQ(1u, characteristics->size()); resolver->resolve(device()->getOrCreateRemoteGATTCharacteristic( - resolver->getExecutionContext(), serviceInstanceId, + resolver->getExecutionContext(), std::move(characteristics.value()[0]), this)); return; } @@ -81,8 +81,8 @@ for (auto& characteristic : characteristics.value()) { gattCharacteristics.push_back( device()->getOrCreateRemoteGATTCharacteristic( - resolver->getExecutionContext(), serviceInstanceId, - std::move(characteristic), this)); + resolver->getExecutionContext(), std::move(characteristic), + this)); } resolver->resolve(gattCharacteristics); } else {
diff --git a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp index c7e01e5..900b1e9 100644 --- a/third_party/WebKit/Source/modules/fetch/FetchManager.cpp +++ b/third_party/WebKit/Source/modules/fetch/FetchManager.cpp
@@ -215,7 +215,7 @@ if (r == WebDataConsumerHandle::Done) { if (SubresourceIntegrity::CheckSubresourceIntegrity( m_integrityMetadata, m_buffer.data(), m_buffer.size(), m_url, - *m_loader->document(), errorMessage)) { + *m_loader->executionContext(), errorMessage)) { m_updater->update( new FormDataBytesConsumer(m_buffer.data(), m_buffer.size())); m_loader->m_resolver->resolve(m_response); @@ -272,6 +272,7 @@ void failed(const String& message); void notifyFinished(); Document* document() const; + ExecutionContext* executionContext() { return m_executionContext; } void loadSucceeded(); Member<FetchManager> m_fetchManager;
diff --git a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp index e5ed5d5..8f4f9a0 100644 --- a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp +++ b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.cpp
@@ -12,8 +12,8 @@ #include "modules/fetch/Response.h" #include "modules/serviceworkers/ServiceWorkerError.h" #include "modules/serviceworkers/ServiceWorkerGlobalScope.h" +#include "public/platform/WebURLResponse.h" #include "public/platform/modules/serviceworker/WebServiceWorkerError.h" -#include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" #include "wtf/PtrUtil.h" #include "wtf/RefPtr.h" @@ -107,7 +107,7 @@ void FetchEvent::onNavigationPreloadResponse( ScriptState* scriptState, - std::unique_ptr<WebServiceWorkerResponse> response, + std::unique_ptr<WebURLResponse> response, std::unique_ptr<WebDataConsumerHandle> dataConsumeHandle) { if (!scriptState->contextIsValid()) return; @@ -117,17 +117,17 @@ new BodyStreamBuffer(scriptState, new BytesConsumerForDataConsumerHandle( scriptState->getExecutionContext(), std::move(dataConsumeHandle)))); - const WebVector<WebURL>& webURLList = response->urlList(); - // Navigation preload doesn't support redirect. - DCHECK_EQ(1u, webURLList.size()); Vector<KURL> urlList(1); - urlList[0] = webURLList[0]; + urlList[0] = response->url(); responseData->setURLList(urlList); - responseData->setStatus(response->status()); - responseData->setStatusMessage(response->statusText()); - responseData->setResponseTime(response->responseTime()); - for (const auto& header : response->headers()) + responseData->setStatus(response->httpStatusCode()); + responseData->setStatusMessage(response->httpStatusText()); + responseData->setResponseTime(response->toResourceResponse().responseTime()); + const HTTPHeaderMap& headers( + response->toResourceResponse().httpHeaderFields()); + for (const auto& header : headers) { responseData->headerList()->append(header.key, header.value); + } FetchResponseData* taintedResponse = responseData->createBasicFilteredResponse(); m_preloadResponseProperty->resolve(
diff --git a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.h b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.h index b2a15213..bddd967f 100644 --- a/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.h +++ b/third_party/WebKit/Source/modules/serviceworkers/FetchEvent.h
@@ -25,7 +25,7 @@ class ScriptState; class WebDataConsumerHandle; struct WebServiceWorkerError; -class WebServiceWorkerResponse; +class WebURLResponse; // A fetch event is dispatched by the client to a service worker's script // context. RespondWithObserver can be used to notify the client about the @@ -55,7 +55,7 @@ ScriptPromise preloadResponse(ScriptState*); void onNavigationPreloadResponse(ScriptState*, - std::unique_ptr<WebServiceWorkerResponse>, + std::unique_ptr<WebURLResponse>, std::unique_ptr<WebDataConsumerHandle>); void onNavigationPreloadError(ScriptState*, std::unique_ptr<WebServiceWorkerError>);
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLQuery.cpp b/third_party/WebKit/Source/modules/webgl/WebGLQuery.cpp index 6cb8e79..bd3b22ce 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLQuery.cpp +++ b/third_party/WebKit/Source/modules/webgl/WebGLQuery.cpp
@@ -22,8 +22,7 @@ m_queryResultAvailable(false), m_queryResult(0), m_taskRunner(TaskRunnerHelper::get(TaskType::Unthrottled, - &ctx->canvas()->document()) - ->clone()) { + &ctx->canvas()->document())) { GLuint query; ctx->contextGL()->GenQueriesEXT(1, &query); setObject(query);
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLQuery.h b/third_party/WebKit/Source/modules/webgl/WebGLQuery.h index 691c385..27a963b 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLQuery.h +++ b/third_party/WebKit/Source/modules/webgl/WebGLQuery.h
@@ -54,7 +54,7 @@ bool m_queryResultAvailable; GLuint m_queryResult; - std::unique_ptr<WebTaskRunner> m_taskRunner; + RefPtr<WebTaskRunner> m_taskRunner; TaskHandle m_taskHandle; };
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp index 0a8867d..8640a99 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp +++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -601,7 +601,7 @@ creationInfo.contextAttributes = contextAttributes; creationInfo.glInfo = glInfo; creationInfo.url = url; - WebTaskRunner* taskRunner = + RefPtr<WebTaskRunner> taskRunner = Platform::current()->mainThread()->getWebTaskRunner(); taskRunner->postTask(BLINK_FROM_HERE, crossThreadBind(&createContextProviderOnMainThread,
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.cpp b/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.cpp index ff104159..49cb26e4 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.cpp +++ b/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.cpp
@@ -23,8 +23,7 @@ m_queryResultAvailable(false), m_queryResult(0), m_taskRunner(TaskRunnerHelper::get(TaskType::Unthrottled, - &ctx->canvas()->document()) - ->clone()) { + &ctx->canvas()->document())) { context()->contextGL()->GenQueriesEXT(1, &m_queryId); }
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.h b/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.h index b07a763..be2e197d 100644 --- a/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.h +++ b/third_party/WebKit/Source/modules/webgl/WebGLTimerQueryEXT.h
@@ -52,7 +52,7 @@ bool m_queryResultAvailable; GLuint64 m_queryResult; - std::unique_ptr<WebTaskRunner> m_taskRunner; + RefPtr<WebTaskRunner> m_taskRunner; TaskHandle m_taskHandle; };
diff --git a/third_party/WebKit/Source/platform/Timer.cpp b/third_party/WebKit/Source/platform/Timer.cpp index 5e056f8..5ca80d54 100644 --- a/third_party/WebKit/Source/platform/Timer.cpp +++ b/third_party/WebKit/Source/platform/Timer.cpp
@@ -40,10 +40,10 @@ namespace blink { -TimerBase::TimerBase(WebTaskRunner* webTaskRunner) +TimerBase::TimerBase(RefPtr<WebTaskRunner> webTaskRunner) : m_nextFireTime(0), m_repeatInterval(0), - m_webTaskRunner(webTaskRunner->clone()), + m_webTaskRunner(std::move(webTaskRunner)), #if DCHECK_IS_ON() m_thread(currentThread()), #endif @@ -85,7 +85,7 @@ return m_nextFireTime - current; } -void TimerBase::moveToNewTaskRunner(WebTaskRunner* taskRunner) { +void TimerBase::moveToNewTaskRunner(RefPtr<WebTaskRunner> taskRunner) { #if DCHECK_IS_ON() DCHECK_EQ(m_thread, currentThread()); DCHECK(taskRunner->runsTasksOnCurrentThread()); @@ -98,7 +98,7 @@ bool active = isActive(); m_weakPtrFactory.revokeAll(); - m_webTaskRunner = taskRunner->clone(); + m_webTaskRunner = std::move(taskRunner); if (!active) return; @@ -111,17 +111,17 @@ } // static -WebTaskRunner* TimerBase::getTimerTaskRunner() { +RefPtr<WebTaskRunner> TimerBase::getTimerTaskRunner() { return Platform::current()->currentThread()->scheduler()->timerTaskRunner(); } // static -WebTaskRunner* TimerBase::getUnthrottledTaskRunner() { +RefPtr<WebTaskRunner> TimerBase::getUnthrottledTaskRunner() { return Platform::current()->currentThread()->getWebTaskRunner(); } -WebTaskRunner* TimerBase::timerTaskRunner() const { - return m_webTaskRunner.get(); +RefPtr<WebTaskRunner> TimerBase::timerTaskRunner() const { + return m_webTaskRunner; } void TimerBase::setNextFireTime(double now, double delay) {
diff --git a/third_party/WebKit/Source/platform/Timer.h b/third_party/WebKit/Source/platform/Timer.h index 1af4cfc..caddaee 100644 --- a/third_party/WebKit/Source/platform/Timer.h +++ b/third_party/WebKit/Source/platform/Timer.h
@@ -46,7 +46,7 @@ WTF_MAKE_NONCOPYABLE(TimerBase); public: - explicit TimerBase(WebTaskRunner*); + explicit TimerBase(RefPtr<WebTaskRunner>); virtual ~TimerBase(); void start(double nextFireInterval, @@ -75,20 +75,20 @@ m_repeatInterval += delta; } - void moveToNewTaskRunner(WebTaskRunner*); + void moveToNewTaskRunner(RefPtr<WebTaskRunner>); struct PLATFORM_EXPORT Comparator { bool operator()(const TimerBase* a, const TimerBase* b) const; }; protected: - static WebTaskRunner* getTimerTaskRunner(); - static WebTaskRunner* getUnthrottledTaskRunner(); + static RefPtr<WebTaskRunner> getTimerTaskRunner(); + static RefPtr<WebTaskRunner> getUnthrottledTaskRunner(); private: virtual void fired() = 0; - virtual WebTaskRunner* timerTaskRunner() const; + virtual RefPtr<WebTaskRunner> timerTaskRunner() const; NO_SANITIZE_ADDRESS virtual bool canFire() const { return true; } @@ -102,7 +102,7 @@ double m_nextFireTime; // 0 if inactive double m_repeatInterval; // 0 if not repeating WebTraceLocation m_location; - std::unique_ptr<WebTaskRunner> m_webTaskRunner; + RefPtr<WebTaskRunner> m_webTaskRunner; #if DCHECK_IS_ON() ThreadIdentifier m_thread; @@ -133,10 +133,10 @@ public: using TimerFiredFunction = void (TimerFiredClass::*)(TimerBase*); - TaskRunnerTimer(WebTaskRunner* webTaskRunner, + TaskRunnerTimer(RefPtr<WebTaskRunner> webTaskRunner, TimerFiredClass* o, TimerFiredFunction f) - : TimerBase(webTaskRunner), m_object(o), m_function(f) {} + : TimerBase(std::move(webTaskRunner)), m_object(o), m_function(f) {} ~TaskRunnerTimer() override {}
diff --git a/third_party/WebKit/Source/platform/TimerTest.cpp b/third_party/WebKit/Source/platform/TimerTest.cpp index d5ccc0a5..fe471f0 100644 --- a/third_party/WebKit/Source/platform/TimerTest.cpp +++ b/third_party/WebKit/Source/platform/TimerTest.cpp
@@ -526,10 +526,10 @@ ~TimerForTest() override {} - TimerForTest(WebTaskRunner* webTaskRunner, + TimerForTest(RefPtr<WebTaskRunner> webTaskRunner, TimerFiredClass* timerFiredClass, TimerFiredFunction timerFiredFunction) - : TaskRunnerTimer<TimerFiredClass>(webTaskRunner, + : TaskRunnerTimer<TimerFiredClass>(std::move(webTaskRunner), timerFiredClass, timerFiredFunction) {} }; @@ -538,8 +538,9 @@ scoped_refptr<scheduler::TaskQueue> taskRunner( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner(taskRunner); - TimerForTest<TimerTest> timer(&webTaskRunner, this, &TimerTest::countingTask); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner = + scheduler::WebTaskRunnerImpl::create(taskRunner); + TimerForTest<TimerTest> timer(webTaskRunner, this, &TimerTest::countingTask); timer.startOneShot(0, BLINK_FROM_HERE); // Make sure the task was posted on taskRunner. @@ -600,9 +601,9 @@ class TaskObserver : public base::MessageLoop::TaskObserver { public: - TaskObserver(WebTaskRunner* task_runner, - std::vector<WebTaskRunner*>* runOrder) - : m_taskRunner(task_runner), m_runOrder(runOrder) {} + TaskObserver(RefPtr<WebTaskRunner> task_runner, + std::vector<RefPtr<WebTaskRunner>>* runOrder) + : m_taskRunner(std::move(task_runner)), m_runOrder(runOrder) {} void WillProcessTask(const base::PendingTask&) {} @@ -611,31 +612,32 @@ } private: - WebTaskRunner* m_taskRunner; - std::vector<WebTaskRunner*>* m_runOrder; + RefPtr<WebTaskRunner> m_taskRunner; + std::vector<RefPtr<WebTaskRunner>>* m_runOrder; }; } // namespace TEST_F(TimerTest, MoveToNewTaskRunnerOneShot) { - std::vector<WebTaskRunner*> runOrder; + std::vector<RefPtr<WebTaskRunner>> runOrder; scoped_refptr<scheduler::TaskQueue> taskRunner1( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); - TaskObserver taskObserver1(&webTaskRunner1, &runOrder); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = + scheduler::WebTaskRunnerImpl::create(taskRunner1); + TaskObserver taskObserver1(webTaskRunner1, &runOrder); taskRunner1->AddTaskObserver(&taskObserver1); scoped_refptr<scheduler::TaskQueue> taskRunner2( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner2(taskRunner2); - TaskObserver taskObserver2(&webTaskRunner2, &runOrder); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = + scheduler::WebTaskRunnerImpl::create(taskRunner2); + TaskObserver taskObserver2(webTaskRunner2, &runOrder); taskRunner2->AddTaskObserver(&taskObserver2); - TimerForTest<TimerTest> timer(&webTaskRunner1, this, - &TimerTest::countingTask); + TimerForTest<TimerTest> timer(webTaskRunner1, this, &TimerTest::countingTask); double startTime = monotonicallyIncreasingTime(); @@ -643,37 +645,38 @@ m_platform.runForPeriodSeconds(0.5); - timer.moveToNewTaskRunner(&webTaskRunner2); + timer.moveToNewTaskRunner(webTaskRunner2); m_platform.runUntilIdle(); EXPECT_THAT(m_runTimes, ElementsAre(startTime + 1.0)); - EXPECT_THAT(runOrder, ElementsAre(&webTaskRunner2)); + EXPECT_THAT(runOrder, ElementsAre(webTaskRunner2)); EXPECT_TRUE(taskRunner1->IsEmpty()); EXPECT_TRUE(taskRunner2->IsEmpty()); } TEST_F(TimerTest, MoveToNewTaskRunnerRepeating) { - std::vector<WebTaskRunner*> runOrder; + std::vector<RefPtr<WebTaskRunner>> runOrder; scoped_refptr<scheduler::TaskQueue> taskRunner1( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); - TaskObserver taskObserver1(&webTaskRunner1, &runOrder); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = + scheduler::WebTaskRunnerImpl::create(taskRunner1); + TaskObserver taskObserver1(webTaskRunner1, &runOrder); taskRunner1->AddTaskObserver(&taskObserver1); scoped_refptr<scheduler::TaskQueue> taskRunner2( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner2(taskRunner2); - TaskObserver taskObserver2(&webTaskRunner2, &runOrder); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = + scheduler::WebTaskRunnerImpl::create(taskRunner2); + TaskObserver taskObserver2(webTaskRunner2, &runOrder); taskRunner2->AddTaskObserver(&taskObserver2); - TimerForTest<TimerTest> timer(&webTaskRunner1, this, - &TimerTest::countingTask); + TimerForTest<TimerTest> timer(webTaskRunner1, this, &TimerTest::countingTask); double startTime = monotonicallyIncreasingTime(); @@ -681,15 +684,15 @@ m_platform.runForPeriodSeconds(2.5); - timer.moveToNewTaskRunner(&webTaskRunner2); + timer.moveToNewTaskRunner(webTaskRunner2); m_platform.runForPeriodSeconds(2); EXPECT_THAT(m_runTimes, ElementsAre(startTime + 1.0, startTime + 2.0, startTime + 3.0, startTime + 4.0)); - EXPECT_THAT(runOrder, ElementsAre(&webTaskRunner1, &webTaskRunner1, - &webTaskRunner2, &webTaskRunner2)); + EXPECT_THAT(runOrder, ElementsAre(webTaskRunner1, webTaskRunner1, + webTaskRunner2, webTaskRunner2)); EXPECT_TRUE(taskRunner1->IsEmpty()); EXPECT_FALSE(taskRunner2->IsEmpty()); @@ -701,15 +704,16 @@ scoped_refptr<scheduler::TaskQueue> taskRunner1( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner1(taskRunner1); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner1 = + scheduler::WebTaskRunnerImpl::create(taskRunner1); scoped_refptr<scheduler::TaskQueue> taskRunner2( m_platform.rendererScheduler()->NewTimerTaskRunner( scheduler::TaskQueue::QueueType::TEST)); - scheduler::WebTaskRunnerImpl webTaskRunner2(taskRunner2); + RefPtr<scheduler::WebTaskRunnerImpl> webTaskRunner2 = + scheduler::WebTaskRunnerImpl::create(taskRunner2); - TimerForTest<TimerTest> timer(&webTaskRunner1, this, - &TimerTest::countingTask); + TimerForTest<TimerTest> timer(webTaskRunner1, this, &TimerTest::countingTask); m_platform.runUntilIdle(); EXPECT_TRUE(!m_runTimes.size());
diff --git a/third_party/WebKit/Source/platform/WebFrameScheduler.h b/third_party/WebKit/Source/platform/WebFrameScheduler.h index f6b2d5bc..899d78e6 100644 --- a/third_party/WebKit/Source/platform/WebFrameScheduler.h +++ b/third_party/WebKit/Source/platform/WebFrameScheduler.h
@@ -5,6 +5,8 @@ #ifndef WebFrameScheduler_h #define WebFrameScheduler_h +#include "wtf/RefPtr.h" + namespace blink { class WebTaskRunner; @@ -33,11 +35,11 @@ // Returns the WebTaskRunner for loading tasks. // WebFrameScheduler owns the returned WebTaskRunner. - virtual WebTaskRunner* loadingTaskRunner() { return nullptr; } + virtual RefPtr<WebTaskRunner> loadingTaskRunner() = 0; // Returns the WebTaskRunner for timer tasks. // WebFrameScheduler owns the returned WebTaskRunner. - virtual WebTaskRunner* timerTaskRunner() { return nullptr; } + virtual RefPtr<WebTaskRunner> timerTaskRunner() = 0; // Returns the WebTaskRunner for tasks which should never get throttled. // This is generally used for executing internal browser tasks which should @@ -45,7 +47,7 @@ // are known should be posted to this task runner; for example user // JavaScript is discouraged. WebFrameScheduler owns the returned // WebTaskRunner. - virtual WebTaskRunner* unthrottledTaskRunner() { return nullptr; } + virtual RefPtr<WebTaskRunner> unthrottledTaskRunner() = 0; // Returns the parent WebViewScheduler. virtual WebViewScheduler* webViewScheduler() { return nullptr; }
diff --git a/third_party/WebKit/Source/platform/WebTaskRunner.cpp b/third_party/WebKit/Source/platform/WebTaskRunner.cpp index aa2d254..d7b0d13 100644 --- a/third_party/WebKit/Source/platform/WebTaskRunner.cpp +++ b/third_party/WebKit/Source/platform/WebTaskRunner.cpp
@@ -155,4 +155,6 @@ return TaskHandle(runner); } +WebTaskRunner::~WebTaskRunner() = default; + } // namespace blink
diff --git a/third_party/WebKit/Source/platform/WebTaskRunner.h b/third_party/WebKit/Source/platform/WebTaskRunner.h index 073e1ee..2bc0f521 100644 --- a/third_party/WebKit/Source/platform/WebTaskRunner.h +++ b/third_party/WebKit/Source/platform/WebTaskRunner.h
@@ -56,19 +56,15 @@ }; // The blink representation of a chromium SingleThreadTaskRunner. -class BLINK_PLATFORM_EXPORT WebTaskRunner { +class BLINK_PLATFORM_EXPORT WebTaskRunner + : public ThreadSafeRefCounted<WebTaskRunner> { public: - virtual ~WebTaskRunner() {} - // Schedule a task to be run after |delayMs| on the the associated WebThread. // Can be called from any thread. virtual void postDelayedTask(const WebTraceLocation&, const base::Closure&, double delayMs) = 0; - // Returns a clone of the WebTaskRunner. - virtual std::unique_ptr<WebTaskRunner> clone() = 0; - // Returns true if the current thread is a thread on which a task may be run. // Can be called from any thread. virtual bool runsTasksOnCurrentThread() = 0; @@ -117,6 +113,14 @@ postDelayedCancellableTask(const WebTraceLocation&, std::unique_ptr<WTF::Closure>, long long delayMs); + + protected: + friend ThreadSafeRefCounted<WebTaskRunner>; + WebTaskRunner() = default; + virtual ~WebTaskRunner(); + + private: + DISALLOW_COPY_AND_ASSIGN(WebTaskRunner); }; } // namespace blink
diff --git a/third_party/WebKit/Source/platform/WebTaskRunnerTest.cpp b/third_party/WebKit/Source/platform/WebTaskRunnerTest.cpp index bcff0c11..575bd192 100644 --- a/third_party/WebKit/Source/platform/WebTaskRunnerTest.cpp +++ b/third_party/WebKit/Source/platform/WebTaskRunnerTest.cpp
@@ -38,60 +38,61 @@ } // namespace TEST(WebTaskRunnerTest, PostCancellableTaskTest) { - scheduler::FakeWebTaskRunner taskRunner; + RefPtr<scheduler::FakeWebTaskRunner> taskRunner = + adoptRef(new scheduler::FakeWebTaskRunner); // Run without cancellation. int count = 0; - TaskHandle handle = taskRunner.postCancellableTask( + TaskHandle handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); EXPECT_EQ(0, count); EXPECT_TRUE(handle.isActive()); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(1, count); EXPECT_FALSE(handle.isActive()); count = 0; - handle = taskRunner.postDelayedCancellableTask( + handle = taskRunner->postDelayedCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count)), 1); EXPECT_EQ(0, count); EXPECT_TRUE(handle.isActive()); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(1, count); EXPECT_FALSE(handle.isActive()); // Cancel a task. count = 0; - handle = taskRunner.postCancellableTask( + handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); handle.cancel(); EXPECT_EQ(0, count); EXPECT_FALSE(handle.isActive()); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(0, count); // The task should be cancelled when the handle is dropped. { count = 0; - TaskHandle handle2 = taskRunner.postCancellableTask( + TaskHandle handle2 = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); EXPECT_TRUE(handle2.isActive()); } EXPECT_EQ(0, count); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(0, count); // The task should be cancelled when another TaskHandle is assigned on it. count = 0; - handle = taskRunner.postCancellableTask( + handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); - handle = taskRunner.postCancellableTask(BLINK_FROM_HERE, WTF::bind([] {})); + handle = taskRunner->postCancellableTask(BLINK_FROM_HERE, WTF::bind([] {})); EXPECT_EQ(0, count); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(0, count); // Self assign should be nop. count = 0; - handle = taskRunner.postCancellableTask( + handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); #if COMPILER(CLANG) #pragma GCC diagnostic push @@ -102,30 +103,31 @@ handle = std::move(handle); #endif // COMPILER(CLANG) EXPECT_EQ(0, count); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_EQ(1, count); // handle->isActive() should switch to false before the task starts running. bool isActive = false; - handle = taskRunner.postCancellableTask( + handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&getIsActive, WTF::unretained(&isActive), WTF::unretained(&handle))); EXPECT_TRUE(handle.isActive()); - taskRunner.runUntilIdle(); + taskRunner->runUntilIdle(); EXPECT_FALSE(isActive); EXPECT_FALSE(handle.isActive()); } TEST(WebTaskRunnerTest, CancellationCheckerTest) { - scheduler::FakeWebTaskRunner taskRunner; + RefPtr<scheduler::FakeWebTaskRunner> taskRunner = + adoptRef(new scheduler::FakeWebTaskRunner); int count = 0; - TaskHandle handle = taskRunner.postCancellableTask( + TaskHandle handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&increment, WTF::unretained(&count))); EXPECT_EQ(0, count); // TaskHandle::isActive should detect the deletion of posted task. - auto queue = taskRunner.takePendingTasksForTesting(); + auto queue = taskRunner->takePendingTasksForTesting(); ASSERT_EQ(1u, queue.size()); EXPECT_FALSE(queue[0].IsCancelled()); EXPECT_TRUE(handle.isActive()); @@ -135,13 +137,13 @@ count = 0; CancellationTestHelper helper; - handle = taskRunner.postCancellableTask( + handle = taskRunner->postCancellableTask( BLINK_FROM_HERE, WTF::bind(&CancellationTestHelper::incrementCounter, helper.createWeakPtr())); EXPECT_EQ(0, helper.counter()); // The cancellation of the posted task should be propagated to TaskHandle. - queue = taskRunner.takePendingTasksForTesting(); + queue = taskRunner->takePendingTasksForTesting(); ASSERT_EQ(1u, queue.size()); EXPECT_FALSE(queue[0].IsCancelled()); EXPECT_TRUE(handle.isActive());
diff --git a/third_party/WebKit/Source/platform/graphics/AcceleratedStaticBitmapImage.cpp b/third_party/WebKit/Source/platform/graphics/AcceleratedStaticBitmapImage.cpp index 2b0a18d9..3cb04fe 100644 --- a/third_party/WebKit/Source/platform/graphics/AcceleratedStaticBitmapImage.cpp +++ b/third_party/WebKit/Source/platform/graphics/AcceleratedStaticBitmapImage.cpp
@@ -161,7 +161,7 @@ WebThread* currentThread = Platform::current()->currentThread(); m_textureHolder->setWasTransferred(true); m_textureHolder->setTextureThreadTaskRunner( - currentThread->getWebTaskRunner()->clone()); + currentThread->getWebTaskRunner()); } m_detachThreadAtNextCheck = true; }
diff --git a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp index e392678f..984731a 100644 --- a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp +++ b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp
@@ -169,7 +169,7 @@ namespace { void updatePlaceholderImage(WeakPtr<OffscreenCanvasFrameDispatcher> dispatcher, - std::unique_ptr<WebTaskRunner> taskRunner, + RefPtr<WebTaskRunner> taskRunner, int placeholderCanvasId, RefPtr<blink::StaticBitmapImage> image, unsigned resourceId) { @@ -209,9 +209,6 @@ cc::TransferableResource resource; resource.id = m_nextResourceId; resource.format = cc::ResourceFormat::RGBA_8888; - // TODO(crbug.com/645590): filter should respect the image-rendering CSS - // property of associated canvas element. - resource.filter = GL_LINEAR; resource.size = gfx::Size(m_width, m_height); // TODO(crbug.com/646022): making this overlay-able. resource.is_overlay_candidate = false; @@ -253,8 +250,8 @@ // After this point, |image| can only be used on the main thread, until // it is returned. image->transfer(); - std::unique_ptr<WebTaskRunner> dispatcherTaskRunner = - Platform::current()->currentThread()->getWebTaskRunner()->clone(); + RefPtr<WebTaskRunner> dispatcherTaskRunner = + Platform::current()->currentThread()->getWebTaskRunner(); Platform::current()->mainThread()->getWebTaskRunner()->postTask( BLINK_FROM_HERE, @@ -281,6 +278,8 @@ float vertexOpacity[4] = {1.f, 1.f, 1.f, 1.f}; // TODO(crbug.com/645994): this should be true when using style // "image-rendering: pixelated". + // TODO(crbug.com/645590): filter should respect the image-rendering CSS + // property of associated canvas element. const bool nearestNeighbor = false; quad->SetAll(sqs, bounds, bounds, bounds, needsBlending, resource.id, gfx::Size(), premultipliedAlpha, uvTopLeft, uvBottomRight,
diff --git a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.cpp b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.cpp index 4e0abe8..d1fa3da 100644 --- a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.cpp +++ b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.cpp
@@ -64,7 +64,7 @@ void OffscreenCanvasPlaceholder::setPlaceholderFrame( RefPtr<StaticBitmapImage> newFrame, WeakPtr<OffscreenCanvasFrameDispatcher> dispatcher, - std::unique_ptr<WebTaskRunner> taskRunner, + RefPtr<WebTaskRunner> taskRunner, unsigned resourceId) { DCHECK(isPlaceholderRegistered()); DCHECK(newFrame);
diff --git a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.h b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.h index 33b9f625..d5a302e 100644 --- a/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.h +++ b/third_party/WebKit/Source/platform/graphics/OffscreenCanvasPlaceholder.h
@@ -22,7 +22,7 @@ void setPlaceholderFrame(RefPtr<StaticBitmapImage>, WeakPtr<OffscreenCanvasFrameDispatcher>, - std::unique_ptr<WebTaskRunner>, + RefPtr<WebTaskRunner>, unsigned resourceId); void releasePlaceholderFrame(); @@ -41,7 +41,7 @@ RefPtr<StaticBitmapImage> m_placeholderFrame; WeakPtr<OffscreenCanvasFrameDispatcher> m_frameDispatcher; - std::unique_ptr<WebTaskRunner> m_frameDispatcherTaskRunner; + RefPtr<WebTaskRunner> m_frameDispatcherTaskRunner; unsigned m_placeholderFrameResourceId = 0; enum {
diff --git a/third_party/WebKit/Source/platform/graphics/TextureHolder.h b/third_party/WebKit/Source/platform/graphics/TextureHolder.h index 19618eb..36eeed67 100644 --- a/third_party/WebKit/Source/platform/graphics/TextureHolder.h +++ b/third_party/WebKit/Source/platform/graphics/TextureHolder.h
@@ -45,17 +45,15 @@ } virtual void setSharedContextId(unsigned) { NOTREACHED(); } virtual void setImageThread(WebThread*) { NOTREACHED(); } - virtual void setImageThreadTaskRunner(std::unique_ptr<WebTaskRunner>) { - NOTREACHED(); - } + virtual void setImageThreadTaskRunner(RefPtr<WebTaskRunner>) { NOTREACHED(); } // Methods that have exactly the same impelmentation for all sub-classes bool wasTransferred() { return m_wasTransferred; } - WebTaskRunner* textureThreadTaskRunner() { - return m_textureThreadTaskRunner.get(); + RefPtr<WebTaskRunner> textureThreadTaskRunner() { + return m_textureThreadTaskRunner; } void setWasTransferred(bool flag) { m_wasTransferred = flag; } - void setTextureThreadTaskRunner(std::unique_ptr<WebTaskRunner> taskRunner) { + void setTextureThreadTaskRunner(RefPtr<WebTaskRunner> taskRunner) { m_textureThreadTaskRunner = std::move(taskRunner); } @@ -69,7 +67,7 @@ // another thread, and the original thread gone out of scope, and that we need // to clear the resouces associated with that AcceleratedStaticBitmapImage on // the original thread. - std::unique_ptr<WebTaskRunner> m_textureThreadTaskRunner; + RefPtr<WebTaskRunner> m_textureThreadTaskRunner; }; } // namespace blink
diff --git a/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.cpp b/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.cpp index e119ed7..734e1cb 100644 --- a/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.cpp +++ b/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.cpp
@@ -57,7 +57,7 @@ // SharedGpuContext encasulates the context provider: so we only have to do // this once per thread. WaitableEvent waitableEvent; - WebTaskRunner* taskRunner = + RefPtr<WebTaskRunner> taskRunner = Platform::current()->mainThread()->getWebTaskRunner(); taskRunner->postTask( BLINK_FROM_HERE,
diff --git a/third_party/WebKit/Source/platform/heap/GCTaskRunner.h b/third_party/WebKit/Source/platform/heap/GCTaskRunner.h index 211ff27f..60f7156 100644 --- a/third_party/WebKit/Source/platform/heap/GCTaskRunner.h +++ b/third_party/WebKit/Source/platform/heap/GCTaskRunner.h
@@ -43,8 +43,8 @@ class MessageLoopInterruptor final : public BlinkGCInterruptor { public: - explicit MessageLoopInterruptor(WebTaskRunner* taskRunner) - : m_taskRunner(taskRunner) {} + explicit MessageLoopInterruptor(RefPtr<WebTaskRunner> taskRunner) + : m_taskRunner(std::move(taskRunner)) {} void requestInterrupt() override { // GCTask has an empty run() method. Its only purpose is to guarantee @@ -62,7 +62,7 @@ // conservatively enters safepoint with pointers on stack. } - WebTaskRunner* m_taskRunner; + RefPtr<WebTaskRunner> m_taskRunner; }; class GCTaskObserver final : public WebThread::TaskObserver {
diff --git a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.h b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.h index 05e5c9a..64494de 100644 --- a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.h +++ b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.h
@@ -85,7 +85,7 @@ void sendContentAreaScrolledTask(); TaskHandle m_sendContentAreaScrolledTaskHandle; - std::unique_ptr<WebTaskRunner> m_taskRunner; + RefPtr<WebTaskRunner> m_taskRunner; ScrollOffset m_contentAreaScrolledTimerScrollDelta; ScrollResult userScroll(ScrollGranularity,
diff --git a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm index 6b2452b..ff066d61 100644 --- a/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm +++ b/third_party/WebKit/Source/platform/mac/ScrollAnimatorMac.mm
@@ -691,11 +691,8 @@ ScrollAnimatorMac::ScrollAnimatorMac(ScrollableArea* scrollableArea) : ScrollAnimatorBase(scrollableArea), - m_taskRunner(Platform::current() - ->currentThread() - ->scheduler() - ->timerTaskRunner() - ->clone()), + m_taskRunner( + Platform::current()->currentThread()->scheduler()->timerTaskRunner()), m_haveScrolledSincePageLoad(false), m_needsScrollerStyleUpdate(false) { m_scrollAnimationHelperDelegate.adoptNS(
diff --git a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc index 647189a..e2529d0 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.cc
@@ -23,8 +23,8 @@ : child_scheduler_(child_scheduler), idle_task_runner_(idle_task_runner), timer_task_runner_(timer_task_runner), - loading_web_task_runner_(new WebTaskRunnerImpl(loading_task_runner)), - timer_web_task_runner_(new WebTaskRunnerImpl(timer_task_runner)) {} + loading_web_task_runner_(WebTaskRunnerImpl::create(loading_task_runner)), + timer_web_task_runner_(WebTaskRunnerImpl::create(timer_task_runner)) {} WebSchedulerImpl::~WebSchedulerImpl() {}
diff --git a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h index 201a66d..a802e362 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/child/web_scheduler_impl.h
@@ -7,6 +7,7 @@ #include <memory> +#include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/time/time.h" #include "public/platform/WebCommon.h" @@ -55,8 +56,10 @@ ChildScheduler* child_scheduler_; // NOT OWNED scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; scoped_refptr<TaskQueue> timer_task_runner_; - std::unique_ptr<WebTaskRunnerImpl> loading_web_task_runner_; - std::unique_ptr<WebTaskRunnerImpl> timer_web_task_runner_; + RefPtr<WebTaskRunnerImpl> loading_web_task_runner_; + RefPtr<WebTaskRunnerImpl> timer_web_task_runner_; + + DISALLOW_COPY_AND_ASSIGN(WebSchedulerImpl); }; } // namespace scheduler
diff --git a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc b/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc index 5d8d6c445..e2dc0e49 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.cc
@@ -14,10 +14,10 @@ namespace blink { namespace scheduler { -WebTaskRunnerImpl::WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue) - : task_queue_(task_queue) {} - -WebTaskRunnerImpl::~WebTaskRunnerImpl() {} +RefPtr<WebTaskRunnerImpl> WebTaskRunnerImpl::create( + scoped_refptr<TaskQueue> task_queue) { + return adoptRef(new WebTaskRunnerImpl(std::move(task_queue))); +} void WebTaskRunnerImpl::postDelayedTask(const WebTraceLocation& location, const base::Closure& task, @@ -41,6 +41,11 @@ static_cast<double>(base::Time::kMicrosecondsPerSecond); } +WebTaskRunnerImpl::WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue) + : task_queue_(std::move(task_queue)) {} + +WebTaskRunnerImpl::~WebTaskRunnerImpl() {} + base::TimeTicks WebTaskRunnerImpl::Now() const { TimeDomain* time_domain = task_queue_->GetTimeDomain(); // It's possible task_queue_ has been Unregistered which can lead to a null @@ -50,10 +55,6 @@ return time_domain->Now(); } -std::unique_ptr<blink::WebTaskRunner> WebTaskRunnerImpl::clone() { - return base::WrapUnique(new WebTaskRunnerImpl(task_queue_)); -} - base::SingleThreadTaskRunner* WebTaskRunnerImpl::toSingleThreadTaskRunner() { return task_queue_.get(); }
diff --git a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h b/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h index 2eb7f11..6b5741da 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/child/web_task_runner_impl.h
@@ -19,9 +19,7 @@ class BLINK_PLATFORM_EXPORT WebTaskRunnerImpl : public WebTaskRunner { public: - explicit WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue); - - ~WebTaskRunnerImpl() override; + static RefPtr<WebTaskRunnerImpl> create(scoped_refptr<TaskQueue> task_queue); // WebTaskRunner implementation: void postDelayedTask(const WebTraceLocation&, @@ -30,10 +28,12 @@ bool runsTasksOnCurrentThread() override; double virtualTimeSeconds() const override; double monotonicallyIncreasingVirtualTimeSeconds() const override; - std::unique_ptr<WebTaskRunner> clone() override; base::SingleThreadTaskRunner* toSingleThreadTaskRunner() override; private: + explicit WebTaskRunnerImpl(scoped_refptr<TaskQueue> task_queue); + ~WebTaskRunnerImpl() override; + base::TimeTicks Now() const; scoped_refptr<TaskQueue> task_queue_;
diff --git a/third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc index d8e42659..8a1c428 100644 --- a/third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc +++ b/third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc
@@ -71,7 +71,7 @@ worker_scheduler_->DefaultTaskRunner(), worker_scheduler_->DefaultTaskRunner())); base::MessageLoop::current()->AddDestructionObserver(this); - web_task_runner_ = base::MakeUnique<WebTaskRunnerImpl>(task_runner_); + web_task_runner_ = WebTaskRunnerImpl::create(task_runner_); completion->Signal(); }
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc index 13f2f6be..cdd3ee2 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
@@ -102,7 +102,7 @@ UpdateTimerThrottling(was_throttled); } -blink::WebTaskRunner* WebFrameSchedulerImpl::loadingTaskRunner() { +RefPtr<blink::WebTaskRunner> WebFrameSchedulerImpl::loadingTaskRunner() { DCHECK(parent_web_view_scheduler_); if (!loading_web_task_runner_) { loading_task_queue_ = renderer_scheduler_->NewLoadingTaskRunner( @@ -111,12 +111,12 @@ loading_queue_enabled_voter_ = loading_task_queue_->CreateQueueEnabledVoter(); loading_queue_enabled_voter_->SetQueueEnabled(!frame_suspended_); - loading_web_task_runner_.reset(new WebTaskRunnerImpl(loading_task_queue_)); + loading_web_task_runner_ = WebTaskRunnerImpl::create(loading_task_queue_); } - return loading_web_task_runner_.get(); + return loading_web_task_runner_; } -blink::WebTaskRunner* WebFrameSchedulerImpl::timerTaskRunner() { +RefPtr<blink::WebTaskRunner> WebFrameSchedulerImpl::timerTaskRunner() { DCHECK(parent_web_view_scheduler_); if (!timer_web_task_runner_) { timer_task_queue_ = renderer_scheduler_->NewTimerTaskRunner( @@ -136,21 +136,21 @@ renderer_scheduler_->task_queue_throttler()->IncreaseThrottleRefCount( timer_task_queue_.get()); } - timer_web_task_runner_.reset(new WebTaskRunnerImpl(timer_task_queue_)); + timer_web_task_runner_ = WebTaskRunnerImpl::create(timer_task_queue_); } - return timer_web_task_runner_.get(); + return timer_web_task_runner_; } -blink::WebTaskRunner* WebFrameSchedulerImpl::unthrottledTaskRunner() { +RefPtr<blink::WebTaskRunner> WebFrameSchedulerImpl::unthrottledTaskRunner() { DCHECK(parent_web_view_scheduler_); if (!unthrottled_web_task_runner_) { unthrottled_task_queue_ = renderer_scheduler_->NewUnthrottledTaskRunner( TaskQueue::QueueType::FRAME_UNTHROTTLED); unthrottled_task_queue_->SetBlameContext(blame_context_); - unthrottled_web_task_runner_.reset( - new WebTaskRunnerImpl(unthrottled_task_queue_)); + unthrottled_web_task_runner_ = + WebTaskRunnerImpl::create(unthrottled_task_queue_); } - return unthrottled_web_task_runner_.get(); + return unthrottled_web_task_runner_; } blink::WebViewScheduler* WebFrameSchedulerImpl::webViewScheduler() {
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h index 9e3a050..1ced35e 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.h
@@ -42,9 +42,9 @@ void setPageVisible(bool page_visible) override; void setSuspended(bool frame_suspended) override; void setCrossOrigin(bool cross_origin) override; - WebTaskRunner* loadingTaskRunner() override; - WebTaskRunner* timerTaskRunner() override; - WebTaskRunner* unthrottledTaskRunner() override; + RefPtr<WebTaskRunner> loadingTaskRunner() override; + RefPtr<WebTaskRunner> timerTaskRunner() override; + RefPtr<WebTaskRunner> unthrottledTaskRunner() override; WebViewScheduler* webViewScheduler() override; void didStartLoading(unsigned long identifier) override; void didStopLoading(unsigned long identifier) override; @@ -67,9 +67,9 @@ scoped_refptr<TaskQueue> unthrottled_task_queue_; std::unique_ptr<TaskQueue::QueueEnabledVoter> loading_queue_enabled_voter_; std::unique_ptr<TaskQueue::QueueEnabledVoter> timer_queue_enabled_voter_; - std::unique_ptr<WebTaskRunnerImpl> loading_web_task_runner_; - std::unique_ptr<WebTaskRunnerImpl> timer_web_task_runner_; - std::unique_ptr<WebTaskRunnerImpl> unthrottled_web_task_runner_; + RefPtr<WebTaskRunnerImpl> loading_web_task_runner_; + RefPtr<WebTaskRunnerImpl> timer_web_task_runner_; + RefPtr<WebTaskRunnerImpl> unthrottled_web_task_runner_; RendererSchedulerImpl* renderer_scheduler_; // NOT OWNED WebViewSchedulerImpl* parent_web_view_scheduler_; // NOT OWNED base::trace_event::BlameContext* blame_context_; // NOT OWNED
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl_unittest.cc index dcb5dab..60eb0e6 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl_unittest.cc
@@ -58,19 +58,22 @@ namespace { -void runRepeatingTask(WebTaskRunner* task_runner, int* run_count); +void runRepeatingTask(RefPtr<WebTaskRunner> task_runner, int* run_count); std::unique_ptr<WTF::Closure> makeRepeatingTask( - blink::WebTaskRunner* task_runner, + RefPtr<blink::WebTaskRunner> task_runner, int* run_count) { - return WTF::bind(&runRepeatingTask, WTF::unretained(task_runner), + return WTF::bind(&runRepeatingTask, WTF::passed(std::move(task_runner)), WTF::unretained(run_count)); } -void runRepeatingTask(WebTaskRunner* task_runner, int* run_count) { +void runRepeatingTask(RefPtr<WebTaskRunner> task_runner, int* run_count) { ++*run_count; - task_runner->postDelayedTask(BLINK_FROM_HERE, - makeRepeatingTask(task_runner, run_count), 1.0); + + WebTaskRunner* task_runner_ptr = task_runner.get(); + task_runner_ptr->postDelayedTask( + BLINK_FROM_HERE, makeRepeatingTask(std::move(task_runner), run_count), + 1.0); } void IncrementCounter(int* counter) {
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc index 0c94e408..fe4f6fa 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl_unittest.cc
@@ -80,19 +80,22 @@ namespace { -void runRepeatingTask(blink::WebTaskRunner* task_runner, int* run_count); +void runRepeatingTask(RefPtr<blink::WebTaskRunner> task_runner, int* run_count); std::unique_ptr<WTF::Closure> makeRepeatingTask( - blink::WebTaskRunner* task_runner, + RefPtr<blink::WebTaskRunner> task_runner, int* run_count) { - return WTF::bind(&runRepeatingTask, WTF::unretained(task_runner), + return WTF::bind(&runRepeatingTask, WTF::passed(std::move(task_runner)), WTF::unretained(run_count)); } -void runRepeatingTask(blink::WebTaskRunner* task_runner, int* run_count) { +void runRepeatingTask(RefPtr<blink::WebTaskRunner> task_runner, + int* run_count) { ++*run_count; - task_runner->postDelayedTask(BLINK_FROM_HERE, - makeRepeatingTask(task_runner, run_count), 1.0); + blink::WebTaskRunner* task_runner_ptr = task_runner.get(); + task_runner_ptr->postDelayedTask( + BLINK_FROM_HERE, makeRepeatingTask(std::move(task_runner), run_count), + 1.0); } } // namespace @@ -164,7 +167,7 @@ namespace { void runVirtualTimeRecorderTask(base::SimpleTestTickClock* clock, - blink::WebTaskRunner* web_task_runner, + RefPtr<blink::WebTaskRunner> web_task_runner, std::vector<base::TimeTicks>* out_real_times, std::vector<size_t>* out_virtual_times_ms) { out_real_times->push_back(clock->NowTicks()); @@ -174,11 +177,11 @@ std::unique_ptr<WTF::Closure> makeVirtualTimeRecorderTask( base::SimpleTestTickClock* clock, - blink::WebTaskRunner* web_task_runner, + RefPtr<blink::WebTaskRunner> web_task_runner, std::vector<base::TimeTicks>* out_real_times, std::vector<size_t>* out_virtual_times_ms) { return WTF::bind(&runVirtualTimeRecorderTask, WTF::unretained(clock), - WTF::unretained(web_task_runner), + WTF::passed(std::move(web_task_runner)), WTF::unretained(out_real_times), WTF::unretained(out_virtual_times_ms)); } @@ -294,7 +297,7 @@ } void delayedRunOrderTask(int index, - blink::WebTaskRunner* task_runner, + RefPtr<blink::WebTaskRunner> task_runner, std::vector<int>* out_run_order) { out_run_order->push_back(index); task_runner->postTask( @@ -316,14 +319,14 @@ web_frame_scheduler_->timerTaskRunner()->postDelayedTask( BLINK_FROM_HERE, WTF::bind(&delayedRunOrderTask, 1, - WTF::unretained(web_frame_scheduler_->timerTaskRunner()), + WTF::passed(web_frame_scheduler_->timerTaskRunner()), WTF::unretained(&run_order)), 2.0); web_frame_scheduler_->timerTaskRunner()->postDelayedTask( BLINK_FROM_HERE, WTF::bind(&delayedRunOrderTask, 3, - WTF::unretained(web_frame_scheduler_->timerTaskRunner()), + WTF::passed(web_frame_scheduler_->timerTaskRunner()), WTF::unretained(&run_order)), 4.0); @@ -346,14 +349,14 @@ web_frame_scheduler_->timerTaskRunner()->postDelayedTask( BLINK_FROM_HERE, WTF::bind(&delayedRunOrderTask, 1, - WTF::unretained(web_frame_scheduler_->timerTaskRunner()), + WTF::passed(web_frame_scheduler_->timerTaskRunner()), WTF::unretained(&run_order)), 2.0); web_frame_scheduler_->timerTaskRunner()->postDelayedTask( BLINK_FROM_HERE, WTF::bind(&delayedRunOrderTask, 3, - WTF::unretained(web_frame_scheduler_->timerTaskRunner()), + WTF::passed(web_frame_scheduler_->timerTaskRunner()), WTF::unretained(&run_order)), 4.0); @@ -437,7 +440,7 @@ WebFrameSchedulerImpl* web_frame_scheduler = web_view_scheduler_->createWebFrameSchedulerImpl(nullptr).release(); - blink::WebTaskRunner* timer_task_runner = + RefPtr<blink::WebTaskRunner> timer_task_runner = web_frame_scheduler->timerTaskRunner(); int run_count = 0;
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc b/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc index 0ee075e..c381200 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc +++ b/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.cc
@@ -20,7 +20,8 @@ idle_task_runner_(scheduler->IdleTaskRunner()), scheduler_(scheduler), thread_id_(base::PlatformThread::CurrentId()), - web_task_runner_(new WebTaskRunnerImpl(scheduler->DefaultTaskRunner())) {} + web_task_runner_( + WebTaskRunnerImpl::create(scheduler->DefaultTaskRunner())) {} WebThreadImplForRendererScheduler::~WebThreadImplForRendererScheduler() {}
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h b/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h index f0308e5a..36e207ce 100644 --- a/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h +++ b/third_party/WebKit/Source/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h
@@ -6,6 +6,7 @@ #define THIRD_PARTY_WEBKIT_SOURCE_PLATFORM_SCHEDULER_RENDERER_WEBTHREAD_IMPL_FOR_RENDERER_SCHEDULER_H_ #include "public/platform/scheduler/child/webthread_base.h" +#include "wtf/RefPtr.h" namespace blink { class WebScheduler; @@ -46,7 +47,7 @@ scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_; RendererSchedulerImpl* scheduler_; // Not owned. PlatformThreadId thread_id_; - std::unique_ptr<WebTaskRunnerImpl> web_task_runner_; + RefPtr<WebTaskRunnerImpl> web_task_runner_; }; } // namespace scheduler
diff --git a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc b/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc index 304d1ade..c9f225cc 100644 --- a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc +++ b/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.cc
@@ -78,10 +78,6 @@ return true; } -std::unique_ptr<WebTaskRunner> FakeWebTaskRunner::clone() { - return WTF::wrapUnique(new FakeWebTaskRunner(data_, base_task_runner_)); -} - double FakeWebTaskRunner::virtualTimeSeconds() const { return data_->time_; }
diff --git a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h b/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h index 2753d2b2..4b3bec2 100644 --- a/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h +++ b/third_party/WebKit/Source/platform/scheduler/test/fake_web_task_runner.h
@@ -20,7 +20,6 @@ class FakeWebTaskRunner : public WebTaskRunner { public: FakeWebTaskRunner(); - ~FakeWebTaskRunner() override; void setTime(double new_time); @@ -29,7 +28,6 @@ const base::Closure&, double) override; bool runsTasksOnCurrentThread() override; - std::unique_ptr<WebTaskRunner> clone() override; double virtualTimeSeconds() const override; double monotonicallyIncreasingVirtualTimeSeconds() const override; SingleThreadTaskRunner* toSingleThreadTaskRunner() override; @@ -38,6 +36,8 @@ std::deque<base::Closure> takePendingTasksForTesting(); private: + ~FakeWebTaskRunner() override; + class Data; class BaseTaskRunner; RefPtr<Data> data_;
diff --git a/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp b/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp index 24f2559..f6615945 100644 --- a/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp +++ b/third_party/WebKit/Source/web/InspectorEmulationAgent.cpp
@@ -150,7 +150,7 @@ m_webLocalFrameImpl->view()->scheduler()->enableVirtualTime(); if (budget.isJust()) { - WebTaskRunner* taskRunner = + RefPtr<WebTaskRunner> taskRunner = Platform::current()->currentThread()->getWebTaskRunner(); long long delayMillis = static_cast<long long>(budget.fromJust()); m_virtualTimeBudgetExpiredTaskHandle =
diff --git a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp index 28ac4a83..bba0ca8 100644 --- a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp +++ b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp
@@ -64,7 +64,6 @@ #include "public/platform/modules/notifications/WebNotificationData.h" #include "public/platform/modules/serviceworker/WebServiceWorkerEventResult.h" #include "public/platform/modules/serviceworker/WebServiceWorkerRequest.h" -#include "public/platform/modules/serviceworker/WebServiceWorkerResponse.h" #include "public/web/WebSerializedScriptValue.h" #include "public/web/modules/serviceworker/WebServiceWorkerContextClient.h" #include "web/WebEmbeddedWorkerImpl.h" @@ -200,7 +199,7 @@ void ServiceWorkerGlobalScopeProxy::onNavigationPreloadResponse( int fetchEventID, - std::unique_ptr<WebServiceWorkerResponse> response, + std::unique_ptr<WebURLResponse> response, std::unique_ptr<WebDataConsumerHandle> dataConsumeHandle) { FetchEvent* fetchEvent = m_pendingPreloadFetchEvents.take(fetchEventID); DCHECK(fetchEvent);
diff --git a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.h b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.h index bcd80a8..6a7fc61 100644 --- a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.h +++ b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.h
@@ -50,7 +50,7 @@ class WebServiceWorkerContextClient; struct WebServiceWorkerError; class WebServiceWorkerRequest; -class WebServiceWorkerResponse; +class WebURLResponse; // This class is created and destructed on the main thread, but live most // of its time as a resident of the worker thread. @@ -113,7 +113,7 @@ bool hasFetchEventHandler() override; void onNavigationPreloadResponse( int fetchEventID, - std::unique_ptr<WebServiceWorkerResponse>, + std::unique_ptr<WebURLResponse>, std::unique_ptr<WebDataConsumerHandle>) override; void onNavigationPreloadError( int fetchEventID,
diff --git a/third_party/WebKit/Source/web/WebKit.cpp b/third_party/WebKit/Source/web/WebKit.cpp index 33b1f4c..86b3d94 100644 --- a/third_party/WebKit/Source/web/WebKit.cpp +++ b/third_party/WebKit/Source/web/WebKit.cpp
@@ -35,6 +35,7 @@ #include "bindings/core/v8/V8GCController.h" #include "bindings/core/v8/V8Initializer.h" #include "core/animation/AnimationClock.h" +#include "core/layout/LayoutTheme.h" #include "core/page/Page.h" #include "core/workers/WorkerBackingThread.h" #include "gin/public/v8_platform.h" @@ -124,6 +125,7 @@ void setMockThemeEnabledForTest(bool value) { LayoutTestSupport::setMockThemeEnabledForTest(value); + LayoutTheme::theme().didChangeThemeEngine(); } void setFontAntialiasingEnabledForTest(bool value) {
diff --git a/third_party/WebKit/public/platform/scheduler/child/webthread_impl_for_worker_scheduler.h b/third_party/WebKit/public/platform/scheduler/child/webthread_impl_for_worker_scheduler.h index 4a8d687a..953c5c5 100644 --- a/third_party/WebKit/public/platform/scheduler/child/webthread_impl_for_worker_scheduler.h +++ b/third_party/WebKit/public/platform/scheduler/child/webthread_impl_for_worker_scheduler.h
@@ -6,15 +6,16 @@ #define THIRD_PARTY_WEBKIT_PUBLIC_PLATFORM_SCHEDULER_CHILD_WEBTHREAD_IMPL_FOR_WORKER_SCHEDULER_H_ #include "base/threading/thread.h" +#include "public/platform/WebPrivatePtr.h" #include "public/platform/scheduler/child/webthread_base.h" namespace base { class WaitableEvent; -}; +} namespace blink { class WebScheduler; -}; +} namespace blink { namespace scheduler { @@ -69,7 +70,7 @@ scoped_refptr<TaskQueue> task_runner_; scoped_refptr<scheduler::SingleThreadIdleTaskRunner> idle_task_runner_; scoped_refptr<SchedulerTqmDelegate> task_runner_delegate_; - std::unique_ptr<WebTaskRunnerImpl> web_task_runner_; + WebPrivatePtr<WebTaskRunnerImpl> web_task_runner_; }; } // namespace scheduler
diff --git a/third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h b/third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h index 8cbe7e8d..1028a59 100644 --- a/third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h +++ b/third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h
@@ -41,12 +41,12 @@ class WebDataConsumerHandle; class WebServiceWorkerRequest; -class WebServiceWorkerResponse; class WebString; struct WebNotificationData; struct WebPaymentAppRequestData; struct WebServiceWorkerClientInfo; struct WebServiceWorkerError; +class WebURLResponse; // A proxy interface to talk to the worker's GlobalScope implementation. // All methods of this class must be called on the worker thread. @@ -102,7 +102,7 @@ virtual void onNavigationPreloadResponse( int fetchEventID, - std::unique_ptr<WebServiceWorkerResponse>, + std::unique_ptr<WebURLResponse>, std::unique_ptr<WebDataConsumerHandle>) = 0; virtual void onNavigationPreloadError( int fetchEventID,
diff --git a/ui/views/controls/md_slider.cc b/ui/views/controls/md_slider.cc index 201450f..acb97d75f 100644 --- a/ui/views/controls/md_slider.cc +++ b/ui/views/controls/md_slider.cc
@@ -73,12 +73,14 @@ gfx::Point thumb_center(x, content.height() / 2); // Paint the thumb highlight if it exists. - if (is_active_ && thumb_highlight_radius_ > kThumbRadius) { + const int thumb_highlight_radius = + HasFocus() ? kThumbHighlightRadius : thumb_highlight_radius_; + if (is_active_ && thumb_highlight_radius > kThumbRadius) { SkPaint highlight; SkColor kHighlightColor = SkColorSetA(kActiveColor, kHighlightColorAlpha); highlight.setColor(kHighlightColor); highlight.setFlags(SkPaint::kAntiAlias_Flag); - canvas->DrawCircle(thumb_center, thumb_highlight_radius_, highlight); + canvas->DrawCircle(thumb_center, thumb_highlight_radius, highlight); } // Paint the thumb of the slider.